1 module dlangui.core.config; 2 3 extern(C) @property dstring DLANGUI_VERSION(); 4 5 //version = USE_CONSOLE; 6 7 version(USE_CONSOLE) { 8 version = NO_OPENGL; 9 version = NO_FREETYPE; 10 enum ENABLE_OPENGL = false; 11 enum ENABLE_FREETYPE = false; 12 enum BACKEND_CONSOLE = true; 13 /// Tweaking widgets to console style drawing 14 enum WIDGET_STYLE_CONSOLE = true; 15 enum BACKEND_GUI = false; 16 enum BACKEND_SDL = false; 17 enum BACKEND_X11 = false; 18 enum BACKEND_DSFML = false; 19 enum BACKEND_WIN32 = false; 20 enum BACKEND_ANDROID = false; 21 } else { 22 version(USE_EXTERNAL) { 23 // Use this file to define any enums that is need for the external backend 24 mixin(import("external_cfg.d")); 25 } 26 else 27 { 28 enum BACKEND_GUI = true; 29 enum WIDGET_STYLE_CONSOLE = false; 30 } 31 32 version (NO_FREETYPE) { 33 enum ENABLE_FREETYPE = false; 34 } else version (USE_FREETYPE) { 35 enum ENABLE_FREETYPE = true; 36 } else { 37 version (Windows) { 38 enum ENABLE_FREETYPE = false; 39 } else { 40 enum ENABLE_FREETYPE = true; 41 } 42 } 43 44 // provide default configuratino definitions 45 version (USE_SDL) { 46 // SDL backend already selected using version identifier 47 version (NO_OPENGL) { 48 enum ENABLE_OPENGL = false; 49 } else { 50 version (USE_OPENGL) { 51 enum ENABLE_OPENGL = true; 52 } else { 53 enum ENABLE_OPENGL = false; 54 } 55 } 56 enum BACKEND_SDL = true; 57 enum BACKEND_X11 = false; 58 enum BACKEND_DSFML = false; 59 enum BACKEND_WIN32 = false; 60 enum BACKEND_ANDROID = false; 61 enum BACKEND_CONSOLE = false; 62 } else version (USE_ANDROID) { 63 // Android backend already selected using version identifier 64 version (USE_OPENGL) { 65 enum ENABLE_OPENGL = true; 66 } else { 67 enum ENABLE_OPENGL = false; 68 } 69 enum BACKEND_SDL = false; 70 enum BACKEND_X11 = false; 71 enum BACKEND_DSFML = false; 72 enum BACKEND_WIN32 = false; 73 enum BACKEND_ANDROID = true; 74 enum BACKEND_CONSOLE = false; 75 } else version (USE_X11) { 76 // X11 backend already selected using version identifier 77 version (NO_OPENGL) { 78 enum ENABLE_OPENGL = false; 79 } else { 80 version (USE_OPENGL) { 81 enum ENABLE_OPENGL = true; 82 } else { 83 enum ENABLE_OPENGL = false; 84 } 85 } 86 enum BACKEND_SDL = false; 87 enum BACKEND_X11 = true; 88 enum BACKEND_DSFML = false; 89 enum BACKEND_WIN32 = false; 90 enum BACKEND_CONSOLE = false; 91 } else version (USE_WIN32) { 92 // Win32 backend already selected using version identifier 93 version (NO_OPENGL) { 94 enum ENABLE_OPENGL = false; 95 } else { 96 version (USE_OPENGL) { 97 enum ENABLE_OPENGL = true; 98 } else { 99 enum ENABLE_OPENGL = false; 100 } 101 } 102 enum BACKEND_SDL = false; 103 enum BACKEND_X11 = false; 104 enum BACKEND_DSFML = false; 105 enum BACKEND_WIN32 = true; 106 enum BACKEND_ANDROID = false; 107 enum BACKEND_CONSOLE = false; 108 } else version (USE_DSFML) { 109 // DSFML backend already selected using version identifier 110 //version (USE_OPENGL) { 111 enum ENABLE_OPENGL = true; 112 //} else { 113 // enum ENABLE_OPENGL = false; 114 //} 115 enum BACKEND_SDL = false; 116 enum BACKEND_X11 = false; 117 enum BACKEND_DSFML = true; 118 enum BACKEND_WIN32 = false; 119 enum BACKEND_ANDROID = false; 120 enum BACKEND_CONSOLE = false; 121 } else version (USE_EXTERNAL) { 122 // External backend already selected using version identifier 123 // All config variables should be settled in external config file 124 } else { 125 // no backend selected: set default based on platform 126 version (Windows) { 127 // For Windows 128 version (NO_OPENGL) { 129 enum ENABLE_OPENGL = false; 130 } else { 131 enum ENABLE_OPENGL = true; 132 } 133 enum BACKEND_SDL = false; 134 enum BACKEND_X11 = false; 135 enum BACKEND_DSFML = false; 136 enum BACKEND_WIN32 = true; 137 enum BACKEND_ANDROID = false; 138 enum BACKEND_CONSOLE = false; 139 } else version(Android) { 140 // Default for Linux: use SDL and OpenGL 141 enum ENABLE_OPENGL = true; 142 enum BACKEND_SDL = true; 143 enum BACKEND_X11 = false; 144 enum BACKEND_DSFML = false; 145 enum BACKEND_WIN32 = false; 146 enum BACKEND_ANDROID = true; 147 enum BACKEND_CONSOLE = false; 148 } else version(linux) { 149 // Default for Linux: use SDL and OpenGL 150 version (NO_OPENGL) { 151 enum ENABLE_OPENGL = false; 152 } else { 153 enum ENABLE_OPENGL = true; 154 } 155 enum BACKEND_SDL = true; 156 enum BACKEND_X11 = false; 157 enum BACKEND_DSFML = false; 158 enum BACKEND_WIN32 = false; 159 enum BACKEND_ANDROID = false; 160 enum BACKEND_CONSOLE = false; 161 } else version(OSX) { 162 // Default: use SDL and OpenGL 163 version (NO_OPENGL) { 164 enum ENABLE_OPENGL = false; 165 } else { 166 enum ENABLE_OPENGL = true; 167 } 168 enum BACKEND_SDL = true; 169 enum BACKEND_X11 = false; 170 enum BACKEND_DSFML = false; 171 enum BACKEND_WIN32 = false; 172 enum BACKEND_ANDROID = false; 173 enum BACKEND_CONSOLE = false; 174 } else { 175 // Unknown platform: use SDL and OpenGL 176 version (NO_OPENGL) { 177 enum ENABLE_OPENGL = false; 178 } else { 179 enum ENABLE_OPENGL = true; 180 } 181 enum BACKEND_SDL = true; 182 enum BACKEND_X11 = false; 183 enum BACKEND_DSFML = false; 184 enum BACKEND_WIN32 = false; 185 enum BACKEND_ANDROID = false; 186 enum BACKEND_CONSOLE = false; 187 } 188 } 189 }