diff --git a/.gitea/workflows/run_build.yaml b/.gitea/workflows/run_build.yaml new file mode 100644 index 0000000..e3772b9 --- /dev/null +++ b/.gitea/workflows/run_build.yaml @@ -0,0 +1,43 @@ +name: Run Build +run-name: ${{ gitea.actor }} is building tview +on: [push] + +jobs: + run-build-arch: + container: + image: archlinux:multilib-devel + steps: + - name: Install dependencies + run: pacman -Sy --noconfirm sdl2 mesa-utils exiv2 cmake nodejs git && pacman -Syu --noconfirm + - name: Check out repository code + uses: actions/checkout@v4 + - name: Run ls + run: ls + - name: Generate build files + run: cmake . + - name: Build + run: cmake --build . + run-build-ubuntu: + container: + image: ubuntu:24.04 + steps: + - name: Install dependencies + run: apt update && apt install --no-install-recommends -y build-essential cmake libsdl2-dev libexiv2-dev mesa-utils nodejs ca-certificates git + - name: Check out repository code + uses: actions/checkout@v4 + - name: Generate build files + run: cmake . + - name: Build + run: cmake --build . + run-build-debian: + container: + image: debian:bookworm + steps: + - name: Install dependencies + run: apt update && apt install --no-install-recommends -y build-essential cmake libsdl2-dev libexiv2-dev mesa-utils nodejs ca-certificates git + - name: Check out repository code + uses: actions/checkout@v4 + - name: Generate build files + run: cmake . + - name: Build + run: cmake --build . diff --git a/.gitignore b/.gitignore index 0f3c454..a6efe49 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,18 @@ imgui.ini tview + +#CMake +CMakeLists.txt.user +CMakeCache.txt +CMakeFiles +CMakeScripts +Testing +Makefile +cmake_install.cmake +install_manifest.txt +compile_commands.json +CTestTestfile.cmake +_deps +CMakeUserPresets.json + diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..4ff0d0e --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,58 @@ +cmake_minimum_required(VERSION 3.10) + +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release) +endif() + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED True) + +project(tview) + +set (SOURCES +lib/backends/imgui_impl_opengl3.cpp +lib/backends/imgui_impl_opengl3.h +lib/backends/imgui_impl_opengl3_loader.h +lib/backends/imgui_impl_sdl2.cpp +lib/backends/imgui_impl_sdl2.h +lib/backends/tex_inspect_opengl.h +lib/backends/tex_inspect_opengl.cpp +lib/context_wrapper.h +lib/image_model.h +lib/imconfig.h +lib/imfilebrowser.h +lib/imgui.cpp +lib/imgui.h +lib/imgui_bezier_math.h +lib/imgui_bezier_math.inl +lib/imgui_demo.cpp +lib/imgui_draw.cpp +lib/imgui_extra_math.h +lib/imgui_extra_math.inl +lib/imgui_internal.h +lib/imgui_tables.cpp +lib/imgui_widgets.cpp +lib/imstb_rectpack.h +lib/imstb_textedit.h +lib/imstb_truetype.h +lib/stb_image.h +lib/imgui_tex_inspect.h +lib/imgui_tex_inspect_internal.h +lib/imgui_tex_inspect.cpp +lib/argparse.hpp +lib/histogram.h +main.cpp +) + +set(OpenGL_GL_PREFERENCE GLVND) +find_package(SDL2 REQUIRED) +find_package(OpenGL REQUIRED) +find_package(exiv2 REQUIRED) +include_directories(${SDL2_INCLUDE_DIRS} ${OPENGL_INCLUDE_DIRS}) + +set(CMAKE_CXX_FLAGS "-Wall -Wextra") +set(CMAKE_CXX_FLAGS_DEBUG "-g") +set(CMAKE_CXX_FLAGS_RELEASE "-O2") + +add_executable(tview ${SOURCES}) +target_link_libraries(tview ${SDL2_LIBRARIES} ${OPENGL_LIBRARIES} exiv2lib) diff --git a/Makefile b/Makefile deleted file mode 100644 index b53f171..0000000 --- a/Makefile +++ /dev/null @@ -1,91 +0,0 @@ -# -# Cross Platform Makefile -# Compatible with MSYS2/MINGW, Ubuntu 14.04.1 and Mac OS X -# -# You will need SDL2 (http://www.libsdl.org): -# Linux: -# apt-get install libsdl2-dev -# Mac OS X: -# brew install sdl2 -# MSYS2: -# pacman -S mingw-w64-i686-SDL2 -# - -#CXX = g++ -#CXX = clang++ - -EXE = tview -IMGUI_DIR = lib -SOURCES = main.cpp -SOURCES += $(wildcard $(IMGUI_DIR)/*.cpp) -SOURCES += $(wildcard $(IMGUI_DIR)/backends/*.cpp) -OBJS = $(addsuffix .o, $(basename $(notdir $(SOURCES)))) -UNAME_S := $(shell uname -s) -LINUX_GL_LIBS = -lGL - -CXXFLAGS = -std=c++20 -I$(IMGUI_DIR) -I$(IMGUI_DIR)/backends -CXXFLAGS += -DIMGUI_DEFINE_MATH_OPERATORS -O3 -DGL_SILENCE_DEPRECATION -LIBS = -lexiv2 - -##--------------------------------------------------------------------- -## OPENGL ES -##--------------------------------------------------------------------- - -## This assumes a GL ES library available in the system, e.g. libGLESv2.so -# CXXFLAGS += -DIMGUI_IMPL_OPENGL_ES2 -# LINUX_GL_LIBS = -lGLESv2 -## If you're on a Raspberry Pi and want to use the legacy drivers, -## use the following instead: -# LINUX_GL_LIBS = -L/opt/vc/lib -lbrcmGLESv2 - -##--------------------------------------------------------------------- -## BUILD FLAGS PER PLATFORM -##--------------------------------------------------------------------- - -ifeq ($(UNAME_S), Linux) #LINUX - ECHO_MESSAGE = "Linux" - LIBS += $(LINUX_GL_LIBS) -ldl -L/usr/lib -lSDL2 - - CXXFLAGS += -I/usr/include/SDL2 -D_REENTRANT - CFLAGS = $(CXXFLAGS) -endif - -ifeq ($(UNAME_S), Darwin) #APPLE - ECHO_MESSAGE = "Mac OS X" - LIBS += -framework OpenGL -framework Cocoa -framework IOKit -framework CoreVideo `sdl2-config --libs` - LIBS += -L/usr/local/lib -L/opt/local/lib - - CXXFLAGS += `sdl2-config --cflags` - CXXFLAGS += -I/usr/local/include -I/opt/local/include - CFLAGS = $(CXXFLAGS) -endif - -ifeq ($(OS), Windows_NT) - ECHO_MESSAGE = "MinGW" - LIBS += -lgdi32 -lopengl32 -limm32 `pkg-config --static --libs sdl2` - - CXXFLAGS += `pkg-config --cflags sdl2` - CFLAGS = $(CXXFLAGS) -endif - -##--------------------------------------------------------------------- -## BUILD RULES -##--------------------------------------------------------------------- - -%.o:%.cpp - $(CXX) $(CXXFLAGS) -c -o $@ $< - -%.o:$(IMGUI_DIR)/%.cpp - $(CXX) $(CXXFLAGS) -c -o $@ $< - -%.o:$(IMGUI_DIR)/backends/%.cpp - $(CXX) $(CXXFLAGS) -c -o $@ $< - -all: $(EXE) - @echo Build complete for $(ECHO_MESSAGE) - -$(EXE): $(OBJS) - $(CXX) -o $@ $^ $(CXXFLAGS) $(LIBS) - -clean: - rm -f $(EXE) $(OBJS) diff --git a/main.cpp b/main.cpp index c06d690..8b27282 100644 --- a/main.cpp +++ b/main.cpp @@ -8,6 +8,7 @@ #include "lib/imgui_internal.h" #include #include +#include #include #include #include @@ -39,6 +40,8 @@ #include "lib/histogram.h" + + struct Args : public argparse::Args { std::string &fpath = arg("path to the image"); }; @@ -83,7 +86,11 @@ EXIFData printExifData(const std::string& imagePath) { d.CameraMake = "NULL"; try { // Load the image + #if EXIV2_TEST_VERSION(0,28,0) Exiv2::Image::UniquePtr img = Exiv2::ImageFactory::open(imagePath); + #else + Exiv2::Image::AutoPtr img = Exiv2::ImageFactory::open(imagePath); + #endif if (img.get() == 0) { std::cerr << "Error: Could not open image file " << imagePath << std::endl; return d;