/*
    QGLView
    Ivan Pelipenko peri4ko@yandex.ru

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser 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 Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef qglview_settings_h
#define qglview_settings_h

#include "qglengine_core_export.h"

#include <QColor>
#include <QOpenGLFunctions>
#include <pibase_macros.h>

#define ID(v) PIMETA(id=v)

struct QGLENGINE_CORE_EXPORT QGLViewSettings {
	ID(1) bool FXAA                   = false;
	ID(2) int render_mode             = GL_FILL;
	ID(3) float lineWidth             = 1;

	ID(4) bool hoverHalo              = true;
	ID(5) float hoverHaloFill         = 0.15f;
	ID(6) QColor hoverHaloColor       = QColor(195, 140, 255);

	ID(7) bool selectionHalo          = true;
	ID(8) float selectionHaloFill     = 0.15f;
	ID(9) QColor selectionHaloColor   = QColor(175, 255, 140);

	ID(10) float fogDensity           = 0.;
	ID(11) float fogDecay             = 10.;
	ID(12) QColor fogColor            = Qt::darkGray;

	ID(13) bool shadows               = false;
	ID(14) bool soft_shadows          = false;
	ID(15) int soft_shadows_samples   = 32;
	ID(16) float soft_shadows_quality = 1.;

	ID(17) float gamma                = 1.f;
	ID(18) bool autoExposure          = false;

	ID(19) float depthStart           = 0.1f;
	ID(20) float FOV                  = 60.f;
};

#undef ID

#endif
