kicad/3d-viewer/3d_viewer/eda_3d_viewer_settings.h

121 lines
3.7 KiB
C++

/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2020 Jon Evans <jon@craftyjon.com>
* Copyright (C) 2020-2022 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef EDA_3D_VIEWER_SETTINGS_H_
#define EDA_3D_VIEWER_SETTINGS_H_
#include <3d_enums.h>
#include <common_ogl/ogl_attr_list.h>
#include <plugins/3dapi/xv3d_types.h>
#include <settings/app_settings.h>
#include <settings/parameters.h>
#include "render_settings.h"
class EDA_3D_VIEWER_SETTINGS : public APP_SETTINGS_BASE
{
public:
struct RENDER_SETTINGS
{
RENDER_ENGINE engine;
GRID3D_TYPE grid_type;
ANTIALIASING_MODE opengl_AA_mode;
MATERIAL_MODE material_mode;
bool opengl_AA_disableOnMove;
bool opengl_thickness_disableOnMove;
bool opengl_vias_disableOnMove;
bool opengl_holes_disableOnMove;
bool opengl_render_bbox_only_OnMove;
bool opengl_copper_thickness;
bool opengl_show_model_bbox;
bool opengl_highlight_on_rollover;
KIGFX::COLOR4D opengl_selection_color;
bool raytrace_anti_aliasing;
bool raytrace_backfloor;
bool raytrace_post_processing;
bool raytrace_procedural_textures;
bool raytrace_reflections;
bool raytrace_refractions;
bool raytrace_shadows;
int raytrace_nrsamples_shadows;
int raytrace_nrsamples_reflections;
int raytrace_nrsamples_refractions;
float raytrace_spread_shadows;
float raytrace_spread_reflections;
float raytrace_spread_refractions;
int raytrace_recursivelevel_reflections;
int raytrace_recursivelevel_refractions;
KIGFX::COLOR4D raytrace_lightColorCamera;
KIGFX::COLOR4D raytrace_lightColorTop;
KIGFX::COLOR4D raytrace_lightColorBottom;
std::vector<KIGFX::COLOR4D> raytrace_lightColor;
std::vector<int> raytrace_lightElevation; // -90 .. 90
std::vector<int> raytrace_lightAzimuth; // 0 .. 359
bool realistic;
bool show_adhesive;
bool show_axis;
bool show_board_body;
bool show_comments;
bool show_eco;
bool show_footprints_insert;
bool show_footprints_normal;
bool show_footprints_virtual;
bool show_silkscreen;
bool show_soldermask;
bool show_solderpaste;
bool show_zones;
bool subtract_mask_from_silk;
bool clip_silk_on_via_annulus;
bool renderPlatedPadsAsPlated;
};
struct CAMERA_SETTINGS
{
bool animation_enabled;
int moving_speed_multiplier;
double rotation_increment;
int projection_mode;
};
EDA_3D_VIEWER_SETTINGS();
virtual ~EDA_3D_VIEWER_SETTINGS() {}
virtual bool MigrateFromLegacy( wxConfigBase* aLegacyConfig ) override;
RENDER_SETTINGS m_Render;
CAMERA_SETTINGS m_Camera;
protected:
virtual std::string getLegacyFrameName() const override { return "Viewer3DFrameName"; }
private:
bool migrateSchema0to1();
};
#endif