Compare commits
	
		
			2 commits
		
	
	
		
			
				10cb797084
			
			...
			
				01697f9df4
			
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
							
							
								
							
							
	
	
		
			
		
	
	01697f9df4 | 
						
						
							|||
| 
							
							
								
							
							
	
	
		
			
		
	
	9dfe0faa56 | 
						
						
							
					 9 changed files with 222 additions and 6 deletions
				
			
		
							
								
								
									
										128
									
								
								CMakeLists.txt
									
										
									
									
									
								
							
							
						
						
									
										128
									
								
								CMakeLists.txt
									
										
									
									
									
								
							| 
						 | 
					@ -1,11 +1,131 @@
 | 
				
			||||||
cmake_minimum_required(VERSION 3.19 FATAL_ERROR)
 | 
					cmake_minimum_required(VERSION 3.19 FATAL_ERROR)
 | 
				
			||||||
project(BillySheet)
 | 
					project(BillySheet LANGUAGES CXX C)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
add_executable(BillySheet src/main.cpp)
 | 
					find_package(OpenGL REQUIRED)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set_target_properties(BillySheet PROPERTIES
 | 
					set(PRECOMPILE_HEADERS
 | 
				
			||||||
 | 
						include/gui.hpp
 | 
				
			||||||
 | 
						include/gui_data.hpp
 | 
				
			||||||
 | 
						include/window.hpp
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set(SOURCE_HEADERS
 | 
				
			||||||
 | 
						include/imgui/imconfig.h
 | 
				
			||||||
 | 
						include/imgui/imgui.h
 | 
				
			||||||
 | 
						include/imgui/imgui_impl_glfw.h
 | 
				
			||||||
 | 
						include/imgui/imgui_impl_opengl3.h
 | 
				
			||||||
 | 
						include/imgui/imgui_impl_opengl3_loader.h
 | 
				
			||||||
 | 
						include/imgui/imgui_internal.h
 | 
				
			||||||
 | 
						include/imgui/imstb_rectpack.h
 | 
				
			||||||
 | 
						include/imgui/imstb_textedit.h
 | 
				
			||||||
 | 
						include/imgui/imstb_truetype.h
 | 
				
			||||||
 | 
						include/gui.hpp
 | 
				
			||||||
 | 
						include/gui_data.hpp
 | 
				
			||||||
 | 
						include/window.hpp)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set(SOURCE_FILES
 | 
				
			||||||
 | 
						src/imgui/imgui.cpp
 | 
				
			||||||
 | 
						src/imgui/imgui_draw.cpp
 | 
				
			||||||
 | 
						src/imgui/imgui_impl_glfw.cpp
 | 
				
			||||||
 | 
						src/imgui/imgui_impl_opengl3.cpp
 | 
				
			||||||
 | 
						src/imgui/imgui_tables.cpp
 | 
				
			||||||
 | 
						src/imgui/imgui_widgets.cpp
 | 
				
			||||||
 | 
						src/main.cpp
 | 
				
			||||||
 | 
						src/gui.cpp
 | 
				
			||||||
 | 
						src/gui_data.cpp
 | 
				
			||||||
 | 
						src/window.cpp)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set(SOURCES
 | 
				
			||||||
 | 
						${SOURCE_HEADERS}
 | 
				
			||||||
 | 
						${SOURCE_FILES})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					find_program(CCACHE_FOUND ccache)
 | 
				
			||||||
 | 
					if (CCACHE_FOUND)
 | 
				
			||||||
 | 
						message(STATUS "ccache found !")
 | 
				
			||||||
 | 
						set_property(GLOBAL PROPERTY C_COMPILER_LAUNCHER ccache)
 | 
				
			||||||
 | 
						set_property(GLOBAL PROPERTY C_LINKER_LAUNCHER ccache)
 | 
				
			||||||
 | 
						set_property(GLOBAL PROPERTY CXX_COMPILER_LAUNCHER ccache)
 | 
				
			||||||
 | 
						set_property(GLOBAL PROPERTY CXX_LINKER_LAUNCHER ccache)
 | 
				
			||||||
 | 
					else ()
 | 
				
			||||||
 | 
						message(STATUS "ccache not found")
 | 
				
			||||||
 | 
					endif ()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
 | 
				
			||||||
 | 
					option(GLFW_BUILD_EXAMPLES "Build the GLFW example programs" OFF)
 | 
				
			||||||
 | 
					option(GLFW_BUILD_TESTS "Build the GLFW test programs" OFF)
 | 
				
			||||||
 | 
					option(GLFW_BUILD_DOCS "Build the GLFW documentation" OFF)
 | 
				
			||||||
 | 
					option(GLFW_INSTALL "Generate installation target" OFF)
 | 
				
			||||||
 | 
					option(GLFW_VULKAN_STATIC "Assume the Vulkan loader is linked with the application" OFF)
 | 
				
			||||||
 | 
					add_subdirectory(external/glfw)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					option(SPDLOG_ENABLE_PCH "Build static or shared library using precompiled header to speed up compilation time" ON)
 | 
				
			||||||
 | 
					option(SPDLOG_BUILD_WARNINGS "Enable compiler warnings" ON)
 | 
				
			||||||
 | 
					option(SPDLOG_PREVENT_CHILD_FD "Prevent from child processes to inherit log file descriptors" ON)
 | 
				
			||||||
 | 
					option(SPDLOG_NO_THREAD_ID "prevent spdlog from querying the thread id on each log call if thread id is not needed" ON)
 | 
				
			||||||
 | 
					option(SPDLOG_NO_TLS "prevent spdlog from using thread local storage" ON)
 | 
				
			||||||
 | 
					option(SPDLOG_NO_ATOMIC_LEVELS "prevent spdlog from using of std::atomic log levels (use only if your code never modifies log levels concurrently" ON)
 | 
				
			||||||
 | 
					add_subdirectory(external/spdlog)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set(COMPILE_FLAGS
 | 
				
			||||||
 | 
						-pipe
 | 
				
			||||||
 | 
						-march=skylake # change to native or your architecture.
 | 
				
			||||||
 | 
						-mtune=skylake # same as above
 | 
				
			||||||
 | 
						-mrdseed # be careful about this, this is linked to the x86 architecture.
 | 
				
			||||||
 | 
						-mrdrnd # same as above
 | 
				
			||||||
 | 
						-Wall
 | 
				
			||||||
 | 
						-Wextra
 | 
				
			||||||
 | 
						-Wpedantic
 | 
				
			||||||
 | 
						-pedantic
 | 
				
			||||||
 | 
						-ffunction-sections
 | 
				
			||||||
 | 
						-fdata-sections
 | 
				
			||||||
 | 
						-fuse-ld=gold
 | 
				
			||||||
 | 
						-funroll-loops
 | 
				
			||||||
 | 
						-fdevirtualize-at-ltrans
 | 
				
			||||||
 | 
						-fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					set(LINKER_OPTIONS
 | 
				
			||||||
 | 
						-Wl,--sort-common,--as-needed,--gc-sections,--strip-all
 | 
				
			||||||
 | 
						-fuse-ld=gold
 | 
				
			||||||
 | 
						-fdevirtualize-at-ltrans
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set(LINKER_FLAGS
 | 
				
			||||||
 | 
						jemalloc
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					add_executable(BillySheet ${SOURCES})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					target_include_directories(BillySheet PRIVATE include include/imgui)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set_target_properties(BillySheet spdlog PROPERTIES
 | 
				
			||||||
					  CXX_STANDARD 17
 | 
										  CXX_STANDARD 17
 | 
				
			||||||
					  CXX_STANDARD_REQUIRED ON
 | 
										  CXX_STANDARD_REQUIRED ON
 | 
				
			||||||
					  CXX_EXTENSIONS OFF
 | 
										  CXX_EXTENSIONS OFF
 | 
				
			||||||
					  INTERPROCEDURAL_OPTIMIZATION ON
 | 
										  INTERPROCEDURAL_OPTIMIZATION ON
 | 
				
			||||||
					  UNITY_BUILD ON)
 | 
										  # UNITY_BUILD ON
 | 
				
			||||||
 | 
										  )
 | 
				
			||||||
 | 
					set_target_properties(glfw PROPERTIES
 | 
				
			||||||
 | 
										  C_STANDARD 11
 | 
				
			||||||
 | 
										  C_STANDARD_REQUIRED ON
 | 
				
			||||||
 | 
										  C_EXTENSIONS OFF
 | 
				
			||||||
 | 
										  INTERPROCEDURAL_OPTIMIZATION ON
 | 
				
			||||||
 | 
										  # UNITY_BUILD ON
 | 
				
			||||||
 | 
										  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#target_precompile_headers(BillySheet PRIVATE ${PRECOMPILE_HEADERS})
 | 
				
			||||||
 | 
					target_compile_definitions(BillySheet PRIVATE
 | 
				
			||||||
 | 
											   $<$<CONFIG:Debug>:_GLIBCXX_DEBUG>
 | 
				
			||||||
 | 
											   $<$<CONFIG:Debug>:SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_DEBUG>
 | 
				
			||||||
 | 
											   $<$<CONFIG:Release>:SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_ERROR>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					target_compile_options(spdlog PRIVATE ${COMPILE_FLAGS})
 | 
				
			||||||
 | 
					target_compile_options(glfw PRIVATE ${COMPILE_FLAGS})
 | 
				
			||||||
 | 
					target_compile_options(BillySheet PRIVATE ${COMPILE_FLAGS})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					target_link_options(spdlog PRIVATE ${LINKER_OPTIONS})
 | 
				
			||||||
 | 
					target_link_options(glfw PRIVATE ${LINKER_OPTIONS})
 | 
				
			||||||
 | 
					target_link_options(BillySheet PRIVATE ${LINKER_OPTIONS})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					target_link_libraries(spdlog PRIVATE ${LINKER_FLAGS})
 | 
				
			||||||
 | 
					target_link_libraries(glfw PRIVATE ${LINKER_FLAGS})
 | 
				
			||||||
 | 
					target_link_libraries(BillySheet glfw spdlog OpenGL::OpenGL ${LINKER_FLAGS})
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,6 +2,12 @@
 | 
				
			||||||
This project is about to digitally control your character sheet from the book "La Forteresse du Chaudron Noir" from Bob Lennon.
 | 
					This project is about to digitally control your character sheet from the book "La Forteresse du Chaudron Noir" from Bob Lennon.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## External dependencies
 | 
					## External dependencies
 | 
				
			||||||
All dependencies are inside the "external" directory. The followings are inside:
 | 
					Some dependencies are inside the "external" directory. The followings are inside:
 | 
				
			||||||
- GLFW: windowing
 | 
					- GLFW: windowing
 | 
				
			||||||
- Spdlog: logging the app.
 | 
					- Spdlog: logging the app.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The others are:
 | 
				
			||||||
 | 
					- jemalloc
 | 
				
			||||||
 | 
					- ccache
 | 
				
			||||||
 | 
					- the gold linker
 | 
				
			||||||
 | 
					- OpenGL
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										16
									
								
								include/gui.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								include/gui.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					#ifndef BILLYSHEET_GUI_HPP
 | 
				
			||||||
 | 
					#define BILLYSHEET_GUI_HPP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace gui {
 | 
				
			||||||
 | 
						class Gui final {
 | 
				
			||||||
 | 
						private:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public:
 | 
				
			||||||
 | 
							Gui() = delete;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							~Gui() noexcept;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif //BILLYSHEET_GUI_HPP
 | 
				
			||||||
							
								
								
									
										21
									
								
								include/gui_data.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								include/gui_data.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,21 @@
 | 
				
			||||||
 | 
					#ifndef BILLYSHEET_GUI_DATA_HPP
 | 
				
			||||||
 | 
					#define BILLYSHEET_GUI_DATA_HPP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "window.hpp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace gui {
 | 
				
			||||||
 | 
						class GuiData final {
 | 
				
			||||||
 | 
						private:
 | 
				
			||||||
 | 
							Window &window;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public:
 | 
				
			||||||
 | 
							GuiData() = delete;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							explicit GuiData(Window &wwindow) : window(wwindow) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							~GuiData() noexcept = default;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif //BILLYSHEET_GUI_DATA_HPP
 | 
				
			||||||
							
								
								
									
										25
									
								
								include/window.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								include/window.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,25 @@
 | 
				
			||||||
 | 
					#ifndef BILLYSHEET_WINDOW_HPP
 | 
				
			||||||
 | 
					#define BILLYSHEET_WINDOW_HPP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <memory>
 | 
				
			||||||
 | 
					#include <GLFW/glfw3.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace gui {
 | 
				
			||||||
 | 
						class Window final {
 | 
				
			||||||
 | 
						private:
 | 
				
			||||||
 | 
							static void delete_glfw_window(GLFWwindow *glfWwindow) {
 | 
				
			||||||
 | 
								glfwDestroyWindow(glfWwindow);
 | 
				
			||||||
 | 
								glfwTerminate();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							std::unique_ptr<GLFWwindow, decltype(&delete_glfw_window)> wwindow{ nullptr, delete_glfw_window };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public:
 | 
				
			||||||
 | 
							Window();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							~Window() noexcept = default;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif //BILLYSHEET_WINDOW_HPP
 | 
				
			||||||
							
								
								
									
										5
									
								
								src/gui.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/gui.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,5 @@
 | 
				
			||||||
 | 
					#include "gui.hpp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					gui::Gui::~Gui() noexcept {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										1
									
								
								src/gui_data.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/gui_data.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					#include "gui_data.hpp"
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,10 @@
 | 
				
			||||||
#include <iostream>
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					#include <spdlog/spdlog.h>
 | 
				
			||||||
 | 
					#include <spdlog/sinks/stdout_sinks.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int main() {
 | 
					int main() {
 | 
				
			||||||
	std::cout << "Hello, World!" << std::endl;
 | 
						std::ios::sync_with_stdio(false);
 | 
				
			||||||
 | 
						spdlog::set_default_logger(spdlog::stdout_logger_st("console"));
 | 
				
			||||||
 | 
						SPDLOG_WARN("Hello world !");
 | 
				
			||||||
	return EXIT_SUCCESS;
 | 
						return EXIT_SUCCESS;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										18
									
								
								src/window.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/window.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,18 @@
 | 
				
			||||||
 | 
					#include "window.hpp"
 | 
				
			||||||
 | 
					#include <stdexcept>
 | 
				
			||||||
 | 
					#include <spdlog/spdlog.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void glfwErrorCallback(int error, const char *message) {
 | 
				
			||||||
 | 
						spdlog::error("Error code {}: {}", error, message);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					gui::Window::Window() {
 | 
				
			||||||
 | 
						glfwSetErrorCallback(glfwErrorCallback);
 | 
				
			||||||
 | 
						if (glfwInit() == GLFW_FALSE) {
 | 
				
			||||||
 | 
							throw std::runtime_error("GLFW init failed.");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
 | 
				
			||||||
 | 
						glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
 | 
				
			||||||
 | 
						wwindow = std::unique_ptr<GLFWwindow, decltype(&delete_glfw_window)>(glfwCreateWindow(600, 800, "Billy Sheet tracker", nullptr, nullptr),
 | 
				
			||||||
 | 
																							 delete_glfw_window);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue