cherish
Settings.h
Go to the documentation of this file.
1 #ifndef SETTINGS
2 #define SETTINGS
3 
4 #include <iostream>
5 #include <string>
6 
7 #include <osg/Vec4>
8 #include <QColor>
9 #include <QVariant>
10 #include <QDebug>
11 #include <QtGlobal>
12 
23 /* Debug macros */
24 #define outLogVec(msg, x, y, z) qDebug() << msg << ": " << x << " " << y << " " << z;
25 
30 namespace solarized {
31 const osg::Vec4 base03 = osg::Vec4(float(0)/255.0f, float(43)/255.0f, float(54)/255.0f, 1.0f);
32 const osg::Vec4 base02 = osg::Vec4(float(7)/255.0f, float(54)/255.0f, float(66)/255.0f, 1.0f);
33 const osg::Vec4 base01 = osg::Vec4(float(88)/255.0f, float(110)/255.0f, float(117)/255.0f, 1.0f);
34 const osg::Vec4 base00 = osg::Vec4(float(101)/255.0f, float(123)/255.0f, float(131)/255.0f, 1.0f);
35 
36 const osg::Vec4 base0 = osg::Vec4(float(131)/255.0f, float(148)/255.0f, float(150)/255.0f, 1.0f);
37 const osg::Vec4 base1 = osg::Vec4(float(147)/255.0f, float(161)/255.0f, float(161)/255.0f, 1.0f);
38 const osg::Vec4 base2 = osg::Vec4(float(238)/255.0f, float(232)/255.0f, float(213)/255.0f, 1.0f);
39 const osg::Vec4 base3 = osg::Vec4(float(253)/255.0f, float(246)/255.0f, float(227)/255.0f, 1.0f);
40 
41 const osg::Vec4 yellow = osg::Vec4(float(181)/255.0f, float(137)/255.0f, float(0)/255.0f, 1.0f);
42 const osg::Vec4 orange = osg::Vec4(float(203)/255.0f, float(75)/255.0f, float(22)/255.0f, 1.0f);
43 const osg::Vec4 red = osg::Vec4(float(220)/255.0f, float(50)/255.0f, float(47)/255.0f, 1.0f);
44 const osg::Vec4 magenta = osg::Vec4(float(211)/255.0f, float(54)/255.0f, float(130)/255.0f, 1.0f);
45 
46 const osg::Vec4 violet = osg::Vec4(float(108)/255.0f, float(113)/255.0f, float(196)/255.0f, 1.0f);
47 const osg::Vec4 blue = osg::Vec4(float(38)/255.0f, float(139)/255.0f, float(210)/255.0f, 1.0f);
48 const osg::Vec4 cyan = osg::Vec4(float(42)/255.0f, float(161)/255.0f, float(152)/255.0f, 1.0f);
49 const osg::Vec4 green = osg::Vec4(float(133)/255.0f, float(153)/255.0f, float(0)/255.0f, 1.0f);
50 } // solarized
51 
52 namespace molokai {
53 const QColor orangeSoft(QString("#EFC090"));
54 const QColor orange(QString("#FD971F"));
55 const QColor orangeBright(QString("#EF5939"));
56 
57 const QColor violetSoft(QString("#D197D9"));
58 const QColor violet(QString("#AE81FF"));
59 
60 const QColor greenSoft(QString("#D9E577"));
61 const QColor green(QString("#A6E22E"));
62 const QColor greenBright(QString("#66CCB3"));
63 const QColor greenDark(QString("#465457"));
64 
65 const QColor blueSoft(QString("#79ABFF"));
66 const QColor blue(QString("#1E90FF"));
67 const QColor blueBright(QString("#66D9EF"));
68 const QColor blueDark(QString("#13354A"));
69 
70 const QColor cherrySoft(QColor("#BCA3A3"));
71 const QColor cherry(QColor("#960050"));
72 const QColor cherryBright(QColor("#F92672"));
73 const QColor cherryDark(QColor("#1E0010"));
74 
75 const QColor yellowSoft(QColor("#FFE792"));
76 } // molokai
77 
79 namespace cher{
80 
81 // global constants
82 const double PI = 3.14159265359;
83 const double EPSILON = 0.00001;
84 const osg::Vec3f CENTER = osg::Vec3f(0.f,0.f,0.f);
85 const osg::Vec3f UP = osg::Vec3f(0.f, 0.f, 1.f);
87 // main entity types
88 enum ENTITY_TYPE
89 {
90  ENTITY_STROKE
91  , ENTITY_PHOTO
92  , ENTITY_POLYGON
93  , ENTITY_LINESEGMENT
94 };
95 
98 {
99  MOUSE_PEN = 0x000,
100  PEN_SKETCH,
101  PEN_ERASE,
102  PEN_DELETE,
103  PEN_POLYGON,
104  PEN_LINESEGMENT,
105 
106  MOUSE_SELECT = 0x100,
107  SELECT_ENTITY = 0x110,
108  ENTITY_MOVE,
109  ENTITY_SCALE,
110  ENTITY_ROTATE,
111  ENTITY_FLIPH,
112  ENTITY_FLIPV,
113  PHOTO_PUSH,
114  SELECT_CANVAS = 0x120,
115 
116  MOUSE_CAMERA = 0x200,
117  CAMERA_ORBIT,
118  CAMERA_ZOOM,
119  CAMERA_PAN,
120  CAMERA_FIXEDVIEW,
121 
122  MOUSE_CREATE = 0x300,
123  CREATE_CANVASCLONE,
124  CREATE_CANVASSEPARATE,
125 
126  MOUSE_CANVAS = 0x400,
127  CANVAS_OFFSET,
128  CANVAS_ROTATE_UPLUS,
129  CANVAS_ROTATE_UMINUS,
130  CANVAS_ROTATE_VPLUS,
131  CANVAS_ROTATE_VMINUS,
132 
133  MOUSE_SVM = 0x500,
134  SVM_IDLE = 0x510,
135  SVM_HOVER_WIRE = 0x520,
136  SVM_DRAG_WIRE,
137  SVM_HOVER_POINT = 0x530,
138  SVM_DRAG_POINT,
139 
140  MOUSE_CAMPOSE = 0x600,
141  CAMPOSE_IDLE = 0x610,
142  CAMPOSE_EYE = 0x620,
143  CAMPOSE_CENTER = 0x630,
144  CAMPOSE_FOCAL = 0x640,
145 
146  MOUSE_PHOTOSCALE = 0x700,
147  PHOTOSCALE_MODELPLANE = 0x710,
148  PHOTOSCALE_PHOTOPLANE = 0x720,
149  PHOTOSCALE_BOOKAMRK = 0x730,
150  PHOTOSCALE_IDLE = 0x740,
151 
152  maskMouse = 0xff00,
153  maskEntity = 0xff0,
154  maskAction = 0xf,
155 
156  maskDrag = 0x001
157 };
158 
160 enum EVENT {
161  EVENT_OFF,
162  EVENT_PRESSED,
163  EVENT_DRAGGED,
164  EVENT_RELEASED
165 };
166 
169 {
170  MASK_CANVAS_IN = 0x110,
171  MASK_CANVAS_OUT = 0x001,
174  MASK_SVMDATA_IN = 0x1000,
175  MASK_BOOKMARK_IN = 0x1100,
176  MASK_ALL_IN = ~0x0
177 };
178 
179 // general widget settings
180 const osg::Vec4 BACKGROUND_CLR = solarized::base3;
181 const int CURSOR_SIZE = 18;
182 
183 // canvas normal settings
184 const osg::Vec3f NORMAL = osg::Vec3f(0.f,0.f,1.f);
185 
186 // canvas color settings
187 const osg::Vec4 CANVAS_CLR_CURRENT = solarized::magenta;
188 const osg::Vec4 CANVAS_CLR_INTERSECTION = osg::Vec4(solarized::violet.x(), solarized::violet.y(), solarized::violet.z(), 0.5);
189 const osg::Vec4 CANVAS_CLR_PREVIOUS = solarized::violet;
190 const osg::Vec4 CANVAS_CLR_REST = solarized::base1;
191 const osg::Vec4 CANVAS_CLR_SELECTED = solarized::red;
192 const osg::Vec4 CANVAS_CLR_EDIT = solarized::cyan;
193 const osg::Vec4 CANVAS_CLR_ROTAXIS = solarized::orange;
194 
195 // bookmark tool settings
196 const osg::Vec4 BOOKMARK_CLR = solarized::green;
197 const osg::Vec4 BOOKMARK_CLR_SELECT = solarized::red;
198 const float BOOKMARK_X = 10;
199 const float BOOKMARK_Y = BOOKMARK_X;
200 const float BOOKMARK_Z = BOOKMARK_X;
201 
202 // bookmark SVM data settings
203 const float SVMDATA_HALFWIDTH = 0.25f;
204 const std::vector<QColor> SVMDATA_CLR_POINTS = {
205  molokai::orangeSoft, molokai::violetSoft, molokai::greenSoft, molokai::blueSoft };
206 const QColor SVMDATA_CLR_WIRE = molokai::cherrySoft;
207 const QColor SVMDATA_CLR_WIREHOVER = molokai::cherry;
208 const std::vector<QColor> SVMDATA_CLR_POINTSHOVER = {
209  molokai::orange, molokai::violet, molokai::green, molokai::blue};
210 const QColor SVMDATA_CLR_DRAG = molokai::cherryBright;
211 
212 // bookmark camera pose color settings
213 const QColor CAMPOSE_CLR_FOCAL = molokai::blueDark;
214 const QColor CAMPOSE_CLR_EYE = molokai::greenDark;
215 const QColor CAMPOSE_CLR_CENTER = molokai::cherryDark;
216 
217 // stroke settings
218 const osg::Vec4 STROKE_CLR_NORMAL = solarized::base03;
219 const osg::Vec4 STROKE_CLR_SELECTED = solarized::red;
220 const float STROKE_MINL = 0.05f;
221 const float STROKE_LINE_WIDTH = 4.f;
222 const int STROKE_SEGMENTS_NUMBER = 11;
223 const float STROKE_FOG_MIN = 4.f;
224 const float STROKE_FOG_MAX = 30.f;
225 const float STROKE_MESH_RADIUS = 0.1f;
226 const float SEGMENT_MESH_RADIUS = 0.2f;
227 const unsigned int EXTRUSION_MESH_SHAPE = 8;
228 
229 // polygon settings
230 const float POLYGON_LINE_WIDTH = 4.f;
231 const osg::Vec4f POLYGON_CLR_PHANTOM = solarized::base1;
232 const osg::Vec4f POLYGON_CLR_NORMALFILL = solarized::base2;
233 const osg::Vec4f POLYGON_CLR_SELECTEDFILL = solarized::green;
234 const float POLYGON_PROXIMITY_THRESHOLD = 0.01f;
235 
236 // photo selected colors
237 const osg::Vec4 PHOTO_CLR_SELECTED = solarized::red; // texture frame colors
238 const osg::Vec4f PHOTO_CLR_REST = osg::Vec4f(1.f,1.f,1.f,1.0f); // white filter
239 
240 // canvas settings
241 const float CANVAS_MINW = 1.2f; // half width
242 const float CANVAS_MINH = 1.0f; // half height
243 const float CANVAS_MINB = 0.1f; // bound
244 const float CANVAS_CORNER = 0.3f; // corner size
245 const float CANVAS_EDITQUAD = CANVAS_CORNER/5.f;
246 const float CANVAS_EDITSLACK = CANVAS_CORNER + 0.1f;
247 const float CANVAS_AXIS = 0.5f; // loxal axis size
248 const float CANVAS_EDITAXIS = CANVAS_AXIS*0.5;
249 const float CANVAS_LINE_WIDTH = 1.5f;
250 
251 // photo settings
252 const float PHOTO_MINW = 1; // half width
253 const float PHOTO_MINH = 1; // half height
254 const float PHOTO_TRANSPARECY_DELTA = 0.2f;
255 
256 // global axis settings
257 const float AXES_SIZE = 100.f;
258 const osg::Vec4 AXES_CLR_X = solarized::blue;
259 const osg::Vec4 AXES_CLR_Y = solarized::cyan;
260 const osg::Vec4 AXES_CLR_Z = solarized::red;
261 
262 // entity "names"
263 const std::string NAME_CANVAS = "Canvas";
264 const std::string NAME_ENTITY = "Entity";
265 const std::string NAME_STROKE = "Stroke";
266 const std::string NAME_GEOMETRY = "Geometry";
267 const std::string NAME_PHOTO = "Photo";
268 const std::string NAME_BOOKMARK = "Bookmark";
269 const std::string NAME_SVM_WIRE = "SVMWire";
270 const std::string NAME_SVM_POINTS = "SVMPoints";
271 const std::string NAME_CAM_EYE = "CamEye";
272 const std::string NAME_CAM_CENTER = "CamCenter";
273 const std::string NAME_CAM_FOCAL = "CamFocal";
274 
275 // variable that helps to adapt to high DPI monitors
276 extern double DPI_SCALING;
277 
278 // cherish default sizing
279 const size_t APP_SCREENSHOT_HEIGHT = 150;
280 const size_t APP_WIDGET_BUTTON = 16;
281 const size_t APP_WIDGET_LINEWIDTH = 4;
282 const size_t APP_WIDGET_GAP = 6;
283 const size_t APP_WIDGET_WIDTH = APP_SCREENSHOT_HEIGHT*1.5+APP_WIDGET_BUTTON*4;
284 const size_t APP_WIDGET_ICONSIZE_W = 100;
285 const size_t APP_WIDGET_ICONSIZE_H = 80;
286 
287 // photo format, used for drag and drop functionality
288 const QString MIME_PHOTO = "image/cherish";
289 
290 // CanvasPhotoWidget roles
291 const int DelegateVisibilityRole = Qt::UserRole + 1;
292 const int DelegateChildRole = Qt::UserRole + 2;
293 const int DelegateBGColor = Qt::UserRole + 3;
294 
295 // UI icons base path
296 const QString FA_ICON_PATH = ":/FA-black-svg/FA/black/svg/";
297 const QString OI_ICON_PATH = ":/OI-svg/OI/svg/";
298 
299 } // namespace cher
300 
301 #endif // SETTINGS
302 
Definition: Settings.h:173
Definition: Settings.h:170
const osg::Vec3f UP
Definition: Settings.h:85
Definition: Settings.h:175
Definition: Settings.h:30
Definition: Settings.h:52
EVENT
Definition: Settings.h:160
Definition: Settings.h:174
MOUSE_MODE
Definition: Settings.h:97
TraversalMask
Definition: Settings.h:168
Definition: Settings.h:79
Definition: Settings.h:172
Definition: Settings.h:171