1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
|
//##########################################################################
//# #
//# CLOUDCOMPARE #
//# #
//# 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; version 2 or later of the License. #
//# #
//# 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. #
//# #
//# COPYRIGHT: EDF R&D / TELECOM ParisTech (ENST-TSI) #
//# #
//##########################################################################
#ifndef GUI_PARAMETERS_HEADER
#define GUI_PARAMETERS_HEADER
//Qt
#include <QString>
//qCC_db
#include <ccColorTypes.h>
/***************************************************
GUI parameters
***************************************************/
//! This class manages some persistent parameters (mostly for display)
/** Values of persistent parameters are stored by the system
(either in the registry or in a separate file depending on the OS).
**/
class ccGui
{
public:
//! GUI parameters
struct ParamStruct
{
//! Light diffuse color (RGBA)
ccColor::Rgbaf lightDiffuseColor;
//! Light ambient color (RGBA)
ccColor::Rgbaf lightAmbientColor;
//! Light specular color (RGBA)
ccColor::Rgbaf lightSpecularColor;
//! Double sided light
bool lightDoubleSided;
//! Default mesh diffuse color (front)
ccColor::Rgbaf meshFrontDiff;
//! Default mesh diffuse color (back)
ccColor::Rgbaf meshBackDiff;
//! Default mesh specular color
ccColor::Rgbaf meshSpecular;
//! Default text color
ccColor::Rgbub textDefaultCol;
//! Default 3D points color
ccColor::Rgbub pointsDefaultCol;
//! Background color
ccColor::Rgbub backgroundCol;
//! Labels background color
ccColor::Rgbub labelBackgroundCol;
//! Labels marker color
ccColor::Rgbub labelMarkerCol;
//! Bounding-boxes color
ccColor::Rgbub bbDefaultCol;
//! Use background gradient
bool drawBackgroundGradient;
//! Decimate meshes when moved
bool decimateMeshOnMove;
//! Min mesh size for decimation
unsigned minLoDMeshSize;
//! Decimate clouds when moved
bool decimateCloudOnMove;
//! Min cloud size for decimation
unsigned minLoDCloudSize;
//! Display cross in the middle of the screen
bool displayCross;
//! Whether to use VBOs for faster display
bool useVBOs;
//! Label marker size
unsigned labelMarkerSize;
//! Color scale option: show histogram next to color ramp
bool colorScaleShowHistogram;
//! Whether to use shader for color scale display (if available) or not
bool colorScaleUseShader;
//! Whether shader for color scale display is available or not
bool colorScaleShaderSupported;
//! Color scale ramp width (for display)
unsigned colorScaleRampWidth;
//! Default displayed font size
unsigned defaultFontSize;
//! Label font size
unsigned labelFontSize;
//! Displayed numbers precision
unsigned displayedNumPrecision;
//! Labels background opcaity
unsigned labelOpacity;
//! Zoom speed (1.0 by default)
double zoomSpeed;
//! Octree computation (for picking) behaviors
enum ComputeOctreeForPicking { ALWAYS = 0, ASK_USER = 1, NEVER = 2 };
//! Octree computation (for picking) behavior
ComputeOctreeForPicking autoComputeOctree;
//! Whether to draw rounded points (slower) or not
bool drawRoundedPoints;
//! Default constructor
ParamStruct();
//! Resets parameters to default values
void reset();
//! Loads from persistent DB
void fromPersistentSettings();
//! Saves to persistent DB
void toPersistentSettings() const;
//! Returns whether a given parameter is already defined in persistent settings or not
/** \param paramName the corresponding attribute name
**/
bool isInPersistentSettings(QString paramName) const;
};
//! Returns the stored values of each parameter.
static const ParamStruct& Parameters();
//! Sets GUI parameters
static void Set(const ParamStruct& params);
//! Release unique instance (if any)
static void ReleaseInstance();
protected:
//! Parameters set
ParamStruct params;
};
#endif
|