Skip to content

Commit 70f9729

Browse files
committed
Merge branch 'v0.2dev'
2 parents 96bd152 + 741c045 commit 70f9729

32 files changed

+1491
-437
lines changed

CMakeLists.txt

Lines changed: 155 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
cmake_minimum_required(VERSION 3.5)
22

33
project(openexr-viewer
4-
VERSION 0.1.1
4+
VERSION 0.2
55
DESCRIPTION "Simple Viewer for OpenEXR files with detailed metadata display"
66
HOMEPAGE_URL "https://github.com/afichet/openexr-viewer"
77
LANGUAGES CXX
@@ -14,10 +14,18 @@ set(CMAKE_AUTORCC ON)
1414
set(CMAKE_CXX_STANDARD 11)
1515
set(CMAKE_CXX_STANDARD_REQUIRED ON)
1616

17+
if (NOT CMAKE_BUILD_TYPE)
18+
set(CMAKE_BUILD_TYPE "Release")
19+
endif()
20+
1721
cmake_policy(SET CMP0074 NEW)
1822

1923
include(GNUInstallDirs)
2024

25+
# ----------------------------------------------------------------------------
26+
# Dependencies
27+
# ----------------------------------------------------------------------------
28+
2129
find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets REQUIRED)
2230
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets REQUIRED)
2331

@@ -29,74 +37,83 @@ find_package(OpenEXR REQUIRED)
2937

3038
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake)
3139

40+
# ----------------------------------------------------------------------------
41+
# Source
42+
# ----------------------------------------------------------------------------
43+
3244
set(PROJECT_SOURCES
33-
src/main.cpp
34-
src/view/mainwindow.cpp
35-
src/view/mainwindow.h
36-
src/view/mainwindow.ui
37-
38-
src/view/GraphicsScene.cpp
39-
src/view/GraphicsScene.h
40-
41-
src/view/GraphicsView.cpp
42-
src/view/GraphicsView.h
43-
44-
src/view/RGBFramebufferWidget.cpp
45-
src/view/RGBFramebufferWidget.h
46-
src/view/RGBFramebufferWidget.ui
47-
48-
src/view/FramebufferWidget.cpp
49-
src/view/FramebufferWidget.h
50-
src/view/FramebufferWidget.ui
51-
52-
src/model/OpenEXRImage.cpp
53-
src/model/OpenEXRImage.h
54-
src/model/OpenEXRLayerItem.cpp
55-
src/model/OpenEXRLayerItem.h
56-
src/model/OpenEXRHeaderItem.cpp
57-
src/model/OpenEXRHeaderItem.h
58-
59-
src/model/ImageModel.cpp
60-
src/model/ImageModel.h
61-
src/model/FramebufferModel.cpp
62-
src/model/FramebufferModel.h
63-
src/model/RGBFramebufferModel.cpp
64-
src/model/RGBFramebufferModel.h
65-
66-
src/model/HeaderModel.cpp
67-
src/model/HeaderModel.h
68-
69-
src/util/Colormap.cpp
70-
src/util/Colormap.h
71-
src/util/TabulatedColormap.cpp
72-
src/util/TabulatedColormap.h
73-
src/util/BBGRColormap.cpp
74-
src/util/BBGRColormap.h
75-
src/util/YColormap.cpp
76-
src/util/YColormap.h
77-
src/util/ColormapModule.h
78-
src/util/ColormapModule.cpp
79-
80-
openexr-viewer.rc
45+
src/main.cpp
46+
src/view/mainwindow.cpp
47+
src/view/mainwindow.h
48+
src/view/mainwindow.ui
49+
50+
src/view/GraphicsScene.cpp
51+
src/view/GraphicsScene.h
52+
53+
src/view/GraphicsView.cpp
54+
src/view/GraphicsView.h
55+
56+
src/view/RGBFramebufferWidget.cpp
57+
src/view/RGBFramebufferWidget.h
58+
src/view/RGBFramebufferWidget.ui
59+
60+
src/view/FramebufferWidget.cpp
61+
src/view/FramebufferWidget.h
62+
src/view/FramebufferWidget.ui
63+
64+
src/model/OpenEXRImage.cpp
65+
src/model/OpenEXRImage.h
66+
src/model/OpenEXRLayerItem.cpp
67+
src/model/OpenEXRLayerItem.h
68+
src/model/OpenEXRHeaderItem.cpp
69+
src/model/OpenEXRHeaderItem.h
70+
71+
src/model/ImageModel.cpp
72+
src/model/ImageModel.h
73+
src/model/FramebufferModel.cpp
74+
src/model/FramebufferModel.h
75+
src/model/RGBFramebufferModel.cpp
76+
src/model/RGBFramebufferModel.h
77+
78+
src/model/HeaderModel.cpp
79+
src/model/HeaderModel.h
80+
81+
src/util/Colormap.cpp
82+
src/util/Colormap.h
83+
src/util/TabulatedColormap.cpp
84+
src/util/TabulatedColormap.h
85+
src/util/BBGRColormap.cpp
86+
src/util/BBGRColormap.h
87+
src/util/YColormap.cpp
88+
src/util/YColormap.h
89+
src/util/ColormapModule.h
90+
src/util/ColormapModule.cpp
91+
92+
openexr-viewer.rc
93+
assets/themes/dark_flat.qrc
8194
)
8295

8396
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
8497
if (WIN32)
8598
qt_add_executable(openexr-viewer WIN32
8699
${PROJECT_SOURCES}
87100
)
101+
elseif(APPLE)
102+
qt_add_executable(openexr-viewer MACOSX_BUNDLE
103+
${PROJECT_SOURCES}
104+
)
88105
else()
89106
qt_add_executable(openexr-viewer
90107
${PROJECT_SOURCES}
91108
)
92109
endif()
93110
else()
94-
if(ANDROID)
95-
add_library(openexr-viewer SHARED
111+
if(WIN32)
112+
add_executable(openexr-viewer WIN32
96113
${PROJECT_SOURCES}
97114
)
98-
elseif(WIN32)
99-
add_executable(openexr-viewer WIN32
115+
elseif(APPLE)
116+
add_executable(openexr-viewer MACOSX_BUNDLE
100117
${PROJECT_SOURCES}
101118
)
102119
else()
@@ -114,50 +131,112 @@ target_link_libraries(openexr-viewer PRIVATE Imath::Imath OpenEXR::OpenEXR)
114131

115132
if((OpenMP_CXX_FOUND) OR (OpenMP_FOUND))
116133
target_link_libraries(openexr-viewer PRIVATE OpenMP::OpenMP_CXX)
117-
# target_link_libraries(openexr-viewer PRIVATE OpenMP::OpenMP_C)
134+
# target_link_libraries(openexr-viewer PRIVATE OpenMP::OpenMP_C)
118135
endif()
119136

120-
# Install
121137

122-
install(TARGETS openexr-viewer)
123-
install(
124-
FILES $<TARGET_FILE:Imath::Imath>
125-
DESTINATION ${CMAKE_INSTALL_LIBDIR}
126-
)
127-
install(
128-
FILES $<TARGET_FILE:OpenEXR::OpenEXR>
129-
DESTINATION ${CMAKE_INSTALL_LIBDIR}
130-
)
138+
if (WIN32)
139+
add_custom_command(
140+
TARGET openexr-viewer POST_BUILD
141+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
142+
$<TARGET_FILE:Qt${QT_VERSION_MAJOR}::Widgets>
143+
$<TARGET_FILE:Qt${QT_VERSION_MAJOR}::Core>
144+
$<TARGET_FILE:Qt${QT_VERSION_MAJOR}::Gui>
145+
$<TARGET_FILE_DIR:openexr-viewer>
146+
)
147+
endif(WIN32)
148+
149+
150+
# ----------------------------------------------------------------------------
151+
# Install Rules
152+
# ----------------------------------------------------------------------------
131153

132154
if(UNIX AND NOT APPLE)
155+
install(TARGETS openexr-viewer)
156+
157+
# Application desktop entry
133158
install(
134-
FILES deploy/linux/openexr-viewer.desktop
135-
DESTINATION share/applications
159+
FILES
160+
deploy/linux/openexr-viewer.desktop
161+
DESTINATION
162+
share/applications
136163
)
164+
165+
# MIME data
137166
install(
138-
FILES deploy/linux/openexr-viewer.xml
139-
DESTINATION share/mime/packages
167+
FILES
168+
deploy/linux/openexr-viewer.xml
169+
DESTINATION
170+
share/mime/packages
140171
)
172+
173+
# Application icon
141174
install(
142-
FILES deploy/icon/openexr-viewer.png
143-
DESTINATION share/pixmaps
175+
FILES
176+
deploy/icon/openexr-viewer.png
177+
DESTINATION
178+
share/pixmaps
144179
)
145180
elseif(WIN32)
146-
# include(Windeployqt)
147-
# windeployqt(openexr-viewer ${CMAKE_INSTALL_LIBDIR})
181+
install(
182+
TARGETS
183+
openexr-viewer
184+
DESTINATION
185+
${CMAKE_INSTALL_BINDIR}
186+
)
187+
188+
set(CMAKE_INSTALL_OPENMP_LIBRARIES TRUE)
189+
include(InstallRequiredSystemLibraries)
190+
191+
install(
192+
FILES
193+
"${ZLIB_ROOT}\\bin\\zlib.dll" # Zlib
194+
$<TARGET_FILE:Imath::Imath> # OpenEXR
195+
$<TARGET_FILE:OpenEXR::Iex>
196+
$<TARGET_FILE:OpenEXR::IlmThread>
197+
$<TARGET_FILE:OpenEXR::OpenEXR>
198+
${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} # Windows DLLs
199+
DESTINATION
200+
${CMAKE_INSTALL_BINDIR}
201+
)
202+
203+
include(Windeployqt)
204+
windeployqt(openexr-viewer ${CMAKE_INSTALL_BINDIR})
148205
endif()
149206

150207

151-
# CPack
152-
include(CPack)
208+
# ----------------------------------------------------------------------------
209+
# Packaging
210+
# ----------------------------------------------------------------------------
153211

154212
# set(CPACK_PACKAGE_NAME "OpenEXR Viewer")
155213
# set(CPACK_PACKAGE_VENDOR "")
156214
set(CPACK_PACKAGE_DESCRIPTION "Simple Viewer for OpenEXR files with detailed metadata display")
157215
set(CPACK_PACKAGE_INSTALL_DIRECTORY "OpenEXR Viewer")
158216
# set(CPACK_PACKAGE_ICON "")
159217
# set(CPACK_PACKAGE_CHECKSUM "SHA512")
160-
set(CPACK_RESOURCE_FILE_LICENSE "LICENSE")
218+
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_LIST_DIR}/LICENSE")
161219
# set(CPACK_RESOURCE_FILE_README "README.md")
162220
set(CPACK_MONOLITHIC_INSTALL True)
163-
set(CPACK_PACKAGE_EXECUTABLES "openexr-viewer;OpenEXR Viewer")
221+
set(CPACK_PACKAGE_EXECUTABLES "openexr-viewer;OpenEXR Viewer")
222+
223+
# NSIS specific settings
224+
if(CPACK_GENERATOR MATCHES "NSIS")
225+
set(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_LIST_DIR}/deploy/icon/openexr-viewer.ico")
226+
set(CPACK_NSIS_HELP_LINK "")
227+
set(CPACK_NSIS_URL_INFO_ABOUT "")
228+
set(CPACK_CREATE_DESKTOP_LINKS "OpenEXR Viewer")
229+
set(CPACK_NSIS_INSTALLED_ICON_NAME "openexr-viewer.exe")
230+
set(CPACK_NSIS_MENU_LINKS "openexr-viewer.exe" "OpenEXR Viewer")
231+
set(CPACK_NSIS_MODIFY_PATH OFF)
232+
set(CPACK_NSIS_EXECUTABLES_DIRECTORY ".")
233+
set(CPACK_NSIS_MUI_FINISHPAGE_RUN "openexr-viewer.exe")
234+
endif(CPACK_GENERATOR MATCHES "NSIS")
235+
236+
if("${CPACK_GENERATOR}" STREQUAL "PackageMaker")
237+
set(CPACK_PACKAGE_DEFAULT_LOCATION "/Applications")
238+
endif("${CPACK_GENERATOR}" STREQUAL "PackageMaker")
239+
240+
241+
# CPack
242+
include(CPack)

LICENSE

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,14 @@
11
BSD 3-Clause License
22

3-
Copyright (c) 2021, Alban
3+
Copyright (c) 2021, Alban Fichet
44
All rights reserved.
55

6-
Redistribution and use in source and binary forms, with or without
7-
modification, are permitted provided that the following conditions are met:
6+
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
87

9-
1. Redistributions of source code must retain the above copyright notice, this
10-
list of conditions and the following disclaimer.
8+
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
119

12-
2. Redistributions in binary form must reproduce the above copyright notice,
13-
this list of conditions and the following disclaimer in the documentation
14-
and/or other materials provided with the distribution.
10+
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
1511

16-
3. Neither the name of the copyright holder nor the names of its
17-
contributors may be used to endorse or promote products derived from
18-
this software without specific prior written permission.
12+
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
1913

20-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21-
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22-
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23-
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24-
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25-
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26-
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27-
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28-
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29-
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

assets/themes/dark_flat.qrc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<RCC>
2+
<qresource prefix="/">
3+
<file>dark_flat/theme.css</file>
4+
<file>dark_flat/icons/down-scroll.svg</file>
5+
<file>dark_flat/icons/left-scroll.svg</file>
6+
<file>dark_flat/icons/right-scroll.svg</file>
7+
<file>dark_flat/icons/up-scroll.svg</file>
8+
</qresource>
9+
</RCC>
Lines changed: 31 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)