1 /* 2 Copyright (C) 2010-2014 Kristian Duske 3 4 This file is part of TrenchBroom. 5 6 TrenchBroom is free software: you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 TrenchBroom is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with TrenchBroom. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 #include "Preferences.h" 21 #include "IO/Path.h" 22 #include "IO/SystemPaths.h" 23 #include "View/ActionContext.h" 24 #include "View/CommandIds.h" 25 26 namespace TrenchBroom { 27 namespace Preferences { 28 Preference<int> MapViewLayout(IO::Path("Views/Map view layout"), View::MapViewLayout_1Pane); 29 30 Preference<bool> ShowAxes(IO::Path("Renderer/Show axes"), true); 31 Preference<Color> BackgroundColor(IO::Path("Renderer/Colors/Background"), Color(38, 38, 38)); 32 Preference<float> AxisLength(IO::Path("Renderer/Axis length"), 128.0f); 33 Preference<Color> XAxisColor(IO::Path("Renderer/Colors/X axis"), Color(0xFF, 0x3D, 0x00, 0.7f)); 34 Preference<Color> YAxisColor(IO::Path("Renderer/Colors/Y axis"), Color(0x4B, 0x95, 0x00, 0.7f)); 35 Preference<Color> ZAxisColor(IO::Path("Renderer/Colors/Z axis"), Color(0x10, 0x9C, 0xFF, 0.7f)); 36 Preference<Color> PointFileColor(IO::Path("Renderer/Colors/Point file"), Color(0.0f, 1.0f, 0.0f, 1.0f)); 37 axisColor(Math::Axis::Type axis)38 Preference<Color>& axisColor(Math::Axis::Type axis) { 39 switch (axis) { 40 case Math::Axis::AX: 41 return Preferences::XAxisColor; 42 case Math::Axis::AY: 43 return Preferences::YAxisColor; 44 case Math::Axis::AZ: 45 default: 46 return Preferences::ZAxisColor; 47 } 48 } 49 50 Preference<Color> CompassBackgroundColor(IO::Path("Renderer/Colors/Compass background"), Color(0.5f, 0.5f, 0.5f, 0.5f)); 51 Preference<Color> CompassBackgroundOutlineColor(IO::Path("Renderer/Colors/Compass background outline"), Color(1.0f, 1.0f, 1.0f, 0.5f)); 52 Preference<Color> CompassAxisOutlineColor(IO::Path("Renderer/Colors/Compass axis outline"), Color(1.0f, 1.0f, 1.0f, 1.0f)); 53 54 Preference<Color> CameraFrustumColor(IO::Path("Renderer/Colors/Camera frustum"), Color(0.0f, 1.0f, 1.0f, 1.0f)); 55 56 Preference<Color> DefaultGroupColor(IO::Path("Renderer/Colors/Groups"), Color(0.7f, 0.4f, 1.0f, 1.0f)); 57 58 Preference<Color> TutorialOverlayTextColor(IO::Path("Renderer/Colors/Tutorial overlay text"), Color(1.0f, 1.0f, 1.0f, 1.0f)); 59 Preference<Color> TutorialOverlayBackgroundColor(IO::Path("Renderer/Colors/Tutorial overlay background"), Color(1.0f, 0.5f, 0.0f, 0.6f)); 60 61 Preference<Color> FaceColor(IO::Path("Renderer/Colors/Faces"), Color(0.2f, 0.2f, 0.2f, 1.0f)); 62 Preference<Color> SelectedFaceColor(IO::Path("Renderer/Colors/Selected faces"), Color(0.7f, 0.45f, 0.45f, 1.0f)); 63 Preference<Color> LockedFaceColor(IO::Path("Renderer/Colors/Locked faces"), Color(0.35f, 0.35f, 0.6f, 1.0f)); 64 Preference<float> TransparentFaceAlpha(IO::Path("Renderer/Colors/Transparent faces"), 0.4f); 65 Preference<Color> EdgeColor(IO::Path("Renderer/Colors/Edges"), Color(0.9f, 0.9f, 0.9f, 1.0f)); 66 Preference<Color> SelectedEdgeColor(IO::Path("Renderer/Colors/Selected edges"), Color(1.0f, 0.0f, 0.0f, 1.0f)); 67 Preference<Color> OccludedSelectedEdgeColor(IO::Path("Renderer/Colors/Occluded selected edges"), Color(1.0f, 0.0f, 0.0f, 0.4f)); 68 Preference<Color> LockedEdgeColor(IO::Path("Renderer/Colors/Locked edges"), Color(0.13f, 0.3f, 1.0f, 1.0f)); 69 Preference<Color> UndefinedEntityColor(IO::Path("Renderer/Colors/Undefined entity"), Color(0.5f, 0.5f, 0.5f, 1.0f)); 70 71 Preference<Color> SelectionBoundsColor(IO::Path("Renderer/Colors/Selection bounds"), Color(1.0f, 0.0f, 0.0f, 0.5f)); 72 73 Preference<Color> InfoOverlayTextColor(IO::Path("Renderer/Colors/Info overlay text"), Color(1.0f, 1.0f, 1.0f, 1.0f)); 74 Preference<Color> InfoOverlayBackgroundColor(IO::Path("Renderer/Colors/Info overlay background"), Color(0.0f, 0.0f, 0.0f, 0.6f)); 75 Preference<Color> WeakInfoOverlayBackgroundColor(IO::Path("Renderer/Colors/Weak info overlay background"), Color(0.0f, 0.0f, 0.0f, 0.3f)); 76 Preference<Color> SelectedInfoOverlayTextColor(IO::Path("Renderer/Colors/Selected info overlay text"), Color(1.0f, 1.0f, 1.0f, 1.0f)); 77 Preference<Color> SelectedInfoOverlayBackgroundColor(IO::Path("Renderer/Colors/Selected info overlay background"), Color(1.0f, 0.0f, 0.0f, 0.6f)); 78 Preference<Color> LockedInfoOverlayTextColor(IO::Path("Renderer/Colors/Locked info overlay text"), Color(0.35f, 0.35f, 0.6f, 1.0f)); 79 Preference<Color> LockedInfoOverlayBackgroundColor(IO::Path("Renderer/Colors/Locked info overlay background"), Color(0.0f, 0.0f, 0.0f, 0.6f)); 80 81 Preference<float> HandleRadius(IO::Path("Controls/Handle radius"), 3.0f); 82 Preference<float> MaximumHandleDistance(IO::Path("Controls/Maximum handle distance"), 1000.0f); 83 Preference<Color> HandleColor(IO::Path("Renderer/Colors/Handle"), Color(248, 230, 60, 1.0f)); 84 Preference<Color> OccludedHandleColor(IO::Path("Renderer/Colors/Occluded handle"), Color(248, 230, 60, 0.4f)); 85 Preference<Color> SelectedHandleColor(IO::Path("Renderer/Colors/Selected handle"), Color(1.0f, 0.0f, 0.0f, 1.0f)); 86 Preference<Color> OccludedSelectedHandleColor(IO::Path("Renderer/Colors/Occluded selected handle"), Color(1.0f, 0.0f, 0.0f, 0.4f)); 87 88 Preference<Color> ClipHandleColor(IO::Path("Renderer/Colors/Clip handle"), Color(1.0f, 0.5f, 0.0f, 1.0f)); 89 Preference<Color> ClipFaceColor(IO::Path("Renderer/Colors/Clip face"), Color(0.6f, 0.4f, 0.0f, 0.35f)); 90 91 Preference<Color> ResizeHandleColor(IO::Path("Renderer/Colors/Resize handle"), Color(248, 230, 60, 1.0f)); 92 Preference<float> RotateHandleRadius(IO::Path("Controls/Rotate handle radius"), 64.0f); 93 Preference<Color> RotateHandleColor(IO::Path("Renderer/Colors/Rotate handle"), Color(248, 230, 60, 1.0f)); 94 95 Preference<Color> MoveTraceColor(IO::Path("Renderer/Colors/Move trace"), Color(0.0f, 1.0f, 1.0f, 1.0f)); 96 Preference<Color> OccludedMoveTraceColor(IO::Path("Renderer/Colors/Move trace"), Color(0.0f, 1.0f, 1.0f, 0.4f)); 97 98 Preference<Color> MoveIndicatorOutlineColor(IO::Path("Renderer/Colors/Move indicator outline"), Color(1.0f, 1.0f, 1.0f, 1.0f)); 99 Preference<Color> MoveIndicatorFillColor(IO::Path("Renderer/Colors/Move indicator fill"), Color(0.0f, 0.0f, 0.0f, 0.5f)); 100 101 Preference<Color> AngleIndicatorColor(IO::Path("Renderer/Colors/Angle indicator"), Color(1.0f, 1.0f, 1.0f, 1.0f)); 102 103 Preference<Color> TextureSeamColor(IO::Path("Renderer/Colors/Texture seam"), Color(1.0f, 1.0f, 0.0f, 1.0f)); 104 105 Preference<float> Brightness(IO::Path("Renderer/Brightness"), 1.4f); 106 Preference<float> GridAlpha(IO::Path("Renderer/Grid/Alpha"), 0.5f); 107 Preference<Color> GridColor2D(IO::Path("Rendere/Grid/Color2D"), Color(0.8f, 0.8f, 0.8f, 0.8f)); 108 109 Preference<int> TextureMinFilter(IO::Path("Renderer/Texture mode min filter"), 0x2700); 110 Preference<int> TextureMagFilter(IO::Path("Renderer/Texture mode mag filter"), 0x2600); 111 RendererFontPath()112 Preference<IO::Path>& RendererFontPath() { 113 #if defined __APPLE__ 114 static Preference<IO::Path> fontPath(IO::Path("Renderer/Font name"), IO::SystemPaths::findFontFile("LucidaGrande")); 115 #elif defined _WIN32 116 static Preference<IO::Path> fontPath(IO::Path("Renderer/Font name"), IO::SystemPaths::findFontFile("Tahoma")); 117 #else 118 static Preference<IO::Path> fontPath(IO::Path("Renderer/Font name"), IO::Path("fonts/SourceSansPro-Regular.otf")); 119 #endif 120 return fontPath; 121 } 122 123 Preference<int> RendererFontSize(IO::Path("Renderer/Font size"), 13); 124 125 Preference<int> BrowserFontSize(IO::Path("Browser/Font size"), 13); 126 Preference<Color> BrowserTextColor(IO::Path("Browser/Text color"), Color(1.0f, 1.0f, 1.0f, 1.0f)); 127 Preference<Color> BrowserGroupBackgroundColor(IO::Path("Browser/Group background color"), Color(0.8f, 0.8f, 0.8f, 0.8f)); 128 Preference<float> TextureBrowserIconSize(IO::Path("Texture Browser/Icon size"), 1.0f); 129 Preference<Color> TextureBrowserDefaultColor(IO::Path("Texture Browser/Default color"), Color(0.0f, 0.0f, 0.0f, 0.0f)); 130 Preference<Color> TextureBrowserSelectedColor(IO::Path("Texture Browser/Selected color"), Color(1.0f, 0.0f, 0.0f, 1.0f)); 131 Preference<Color> TextureBrowserUsedColor(IO::Path("Texture Browser/Used color"), Color(1.0f, 0.7f, 0.0f, 1.0f)); 132 133 Preference<float> CameraLookSpeed(IO::Path("Controls/Camera/Look speed"), 0.5f); 134 Preference<bool> CameraLookInvertH(IO::Path("Controls/Camera/Invert horizontal look"), false); 135 Preference<bool> CameraLookInvertV(IO::Path("Controls/Camera/Invert vertical look"), false); 136 Preference<float> CameraPanSpeed(IO::Path("Controls/Camera/Pan speed"), 0.5f); 137 Preference<bool> CameraPanInvertH(IO::Path("Controls/Camera/Invert horizontal pan"), false); 138 Preference<bool> CameraPanInvertV(IO::Path("Controls/Camera/Invert vertical pan"), false); 139 Preference<bool> CameraMouseWheelInvert(IO::Path("Controls/Camera/Invert mouse wheel"), false); 140 Preference<float> CameraMoveSpeed(IO::Path("Controls/Camera/Move speed"), 0.3f); 141 Preference<bool> CameraEnableAltMove(IO::Path("Controls/Camera/Use alt to move"), false); 142 Preference<bool> CameraAltMoveInvert(IO::Path("Controls/Camera/Invert zoom direction when using alt to move"), false); 143 Preference<bool> CameraMoveInCursorDir(IO::Path("Controls/Camera/Move camera in cursor dir"), false); 144 145 Preference<float> CameraFlySpeed(IO::Path("Controls/Camera/Fly speed"), 0.5f); 146 Preference<bool> CameraFlyInvertV(IO::Path("Controls/Camera/Invert vertical fly"), false); 147 148 Preference<bool> Link2DCameras(IO::Path("Controls/Camera/Link 2D cameras"), true); 149 150 Preference<View::KeyboardShortcut> CameraFlyForward(IO::Path("Controls/Camera/Move forward"), 'W'); 151 Preference<View::KeyboardShortcut> CameraFlyBackward(IO::Path("Controls/Camera/Move backward"), 'S'); 152 Preference<View::KeyboardShortcut> CameraFlyLeft(IO::Path("Controls/Camera/Move left"), 'A'); 153 Preference<View::KeyboardShortcut> CameraFlyRight(IO::Path("Controls/Camera/Move right"), 'D'); 154 } 155 } 156