294 COLOR4D( 0.0, 1.0, 0.0, 1.0 ) ) );
298 &
m_Render.opengl_copper_thickness,
false ) );
300 &
m_Render.show_model_bbox,
false ) );
302 &
m_Render.show_off_board_silk,
false ) );
304 &
m_Render.highlight_on_rollover,
true ) );
306 &
m_Render.opengl_AA_disableOnMove,
false ) );
308 &
m_Render.opengl_thickness_disableOnMove,
false ) );
310 &
m_Render.opengl_microvias_disableOnMove,
false ) );
312 &
m_Render.opengl_holes_disableOnMove,
false ) );
314 &
m_Render.opengl_render_bbox_only_OnMove,
false ) );
318 &
m_Render.raytrace_anti_aliasing,
true ) );
320 &
m_Render.raytrace_backfloor,
false ) );
322 &
m_Render.raytrace_post_processing,
true ) );
324 &
m_Render.raytrace_procedural_textures,
true ) );
326 &
m_Render.raytrace_reflections,
true ) );
328 &
m_Render.raytrace_refractions,
true ) );
330 &
m_Render.raytrace_shadows,
true ) );
333 &
m_Render.raytrace_nrsamples_shadows, 3 ) );
335 &
m_Render.raytrace_nrsamples_reflections, 3 ) );
337 &
m_Render.raytrace_nrsamples_refractions, 4 ) );
340 &
m_Render.raytrace_recursivelevel_reflections, 3 ) );
342 &
m_Render.raytrace_recursivelevel_refractions, 2 ) );
345 &
m_Render.raytrace_spread_shadows, 0.05f ) );
347 &
m_Render.raytrace_spread_reflections, 0.025f ) );
349 &
m_Render.raytrace_spread_refractions, 0.025f ) );
352 &
m_Render.raytrace_lightColorCamera,
353 COLOR4D( 0.2, 0.2, 0.2, 1.0 ) ) );
357 COLOR4D( 0.247, 0.247, 0.247, 1.0 ) ) );
360 &
m_Render.raytrace_lightColorBottom,
361 COLOR4D( 0.247, 0.247, 0.247, 1.0 ) ) );
363 std::vector<COLOR4D> default_colors =
365 COLOR4D( 0.168, 0.168, 0.168, 1.0 ),
366 COLOR4D( 0.168, 0.168, 0.168, 1.0 ),
367 COLOR4D( 0.168, 0.168, 0.168, 1.0 ),
368 COLOR4D( 0.168, 0.168, 0.168, 1.0 ),
369 COLOR4D( 0.168, 0.168, 0.168, 1.0 ),
370 COLOR4D( 0.168, 0.168, 0.168, 1.0 ),
371 COLOR4D( 0.168, 0.168, 0.168, 1.0 ),
372 COLOR4D( 0.168, 0.168, 0.168, 1.0 )
377 std::move( default_colors ) ) );
379 const std::vector<int> default_elevation =
381 67, 67, 67, 67, -67, -67, -67, -67,
386 std::move( default_elevation ) ) );
388 const std::vector<int> default_azimuth =
390 45, 135, 225, 315, 45, 135, 225, 315,
395 std::move( default_azimuth ) ) );
402 &
m_Render.show_board_body,
true ) );
404 &
m_Render.show_plated_barrels,
true ) );
418 &
m_Render.show_f_courtyard,
false ) );
420 &
m_Render.show_b_courtyard,
false ) );
422 for(
int layer = 0; layer < 45; ++layer )
424 m_params.emplace_back( new PARAM<bool>( fmt::format(
"render.show_user{}", layer + 1 ),
425 &m_Render.show_user[layer], false ) );
429 &
m_Render.show_footprints_insert,
true ) );
431 &
m_Render.show_footprints_normal,
true ) );
433 &
m_Render.show_footprints_virtual,
true ) );
435 &
m_Render.show_footprints_not_in_posfile,
true ) );
437 &
m_Render.show_footprints_dnp,
false ) );
439 &
m_Render.show_silkscreen_top,
true ) );
441 &
m_Render.show_silkscreen_bottom,
true ) );
443 &
m_Render.show_soldermask_top,
true ) );
445 &
m_Render.show_soldermask_bottom,
true ) );
447 &
m_Render.show_solderpaste,
true ) );
449 &
m_Render.show_copper_bottom,
true ) );
451 &
m_Render.show_copper_top,
true ) );
455 const int innerLayerIndex = layer - LAYER_3D_COPPER_INNER_1;
456 m_params.emplace_back( new PARAM<bool>( fmt::format(
"render.show_copper_inner{}", innerLayerIndex + 1 ),
457 &m_Render.show_copper_inner[innerLayerIndex], true ) );
463 &
m_Render.show_fp_references,
true ) );
469 &
m_Render.subtract_mask_from_silk,
false ) );
471 &
m_Render.clip_silk_on_via_annuli,
false ) );
473 &
m_Render.differentiate_plated_copper,
false ) );
475 &
m_Render.use_board_editor_copper_colors,
false ) );
478 &
m_Camera.animation_enabled,
true ) );
480 &
m_Camera.moving_speed_multiplier, 3 ) );
482 &
m_Camera.rotation_increment, 10.0 ) );
519 Set(
"render.opengl_copper_thickness",
false );
526 if( std::optional<bool> optval =
Get<bool>(
"render.show_copper" ) )
528 Set(
"render.show_copper_top", *optval );
529 Set(
"render.show_copper_bottom", *optval );
532 if( std::optional<bool> optval =
Get<bool>(
"render.show_silkscreen" ) )
534 Set(
"render.show_silkscreen_top", *optval );
535 Set(
"render.show_silkscreen_bottom", *optval );
538 if( std::optional<bool> optval =
Get<bool>(
"render.show_soldermask" ) )
540 Set(
"render.show_soldermask_top", *optval );
541 Set(
"render.show_soldermask_bottom", *optval );
544 if( std::optional<bool> optval =
Get<bool>(
"render.show_comments" ) )
545 Set(
"render.show_drawings", *optval );
547 if( std::optional<bool> optval =
Get<bool>(
"render.show_eco" ) )
549 Set(
"render.show_eco1", *optval );
550 Set(
"render.show_eco2", *optval );
559 std::map<int, wxString> legacyColorMap;
561 legacyColorMap[142] =
"fp_values";
562 legacyColorMap[143] =
"fp_references";
563 legacyColorMap[130] =
"fp_text";
564 legacyColorMap[466] =
"background_bottom";
565 legacyColorMap[467] =
"background_top";
566 legacyColorMap[468] =
"board";
567 legacyColorMap[469] =
"copper";
568 legacyColorMap[470] =
"copper_bottom";
569 legacyColorMap[471] =
"silkscreen_bottom";
570 legacyColorMap[472] =
"silkscreen_top";
571 legacyColorMap[473] =
"soldermask_bottom";
572 legacyColorMap[474] =
"soldermask_top";
573 legacyColorMap[475] =
"solderpaste";
574 legacyColorMap[476] =
"adhesive";
575 legacyColorMap[477] =
"user_comments";
576 legacyColorMap[478] =
"user_drawings";
577 legacyColorMap[479] =
"user_eco1";
578 legacyColorMap[480] =
"user_eco2";
579 legacyColorMap[481] =
"th_models";
580 legacyColorMap[482] =
"smd_models";
581 legacyColorMap[483] =
"virtual_models";
582 legacyColorMap[484] =
"non_pos_file_models";
583 legacyColorMap[485] =
"dnp_models";
584 legacyColorMap[486] =
"3d_navigator";
585 legacyColorMap[487] =
"bounding_boxes";
586 legacyColorMap[488] =
"off_board_silk";
588 if( !
Contains(
"layer_presets" ) || !
At(
"layer_presets" ).is_array() )
591 for( nlohmann::json& preset :
At(
"layer_presets" ) )
593 if( preset.contains(
"colors" ) && preset.at(
"colors" ).is_array() )
595 for( nlohmann::json& color : preset.at(
"colors" ) )
597 if( color.contains(
"layer" ) && color.at(
"layer" ).is_number_integer() )
598 color[
"layer"] = legacyColorMap[color[
"layer"].get<
int>()];
602 if( preset.contains(
"layers" ) && preset.at(
"layers" ).is_array() )
604 nlohmann::json mappedLayers = nlohmann::json::array();
606 for(
const nlohmann::json& layer : preset.at(
"layers" ) )
608 if( layer.is_number_integer() )
609 mappedLayers.push_back( legacyColorMap[layer.get<
int>()] );
612 preset[
"layers"] = mappedLayers;
622 if( std::optional<int> optval =
Get<int>(
"camera.projection_mode" ) )
623 Set(
"main_view.projection_mode", *optval );
625 if( std::optional<bool> optval =
Get<bool>(
"render.preview_show_board_body" ) )
626 Set(
"preview.show_board_body", *optval );