Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 9302642

Browse filesBrowse files
committed
Merge remote-tracking branch 'io2d/master' into sdl2-2
2 parents 369e6b0 + ac46974 commit 9302642
Copy full SHA for 9302642

File tree

5 files changed

+166
-23
lines changed
Filter options

5 files changed

+166
-23
lines changed

‎CMakeLists.txt

Copy file name to clipboardExpand all lines: CMakeLists.txt
+2Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
cmake_minimum_required(VERSION 3.0.0)
22

3+
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
4+
35
project(io2d CXX)
46
if( MSVC )
57
if(CMAKE_C_FLAGS MATCHES "/W[0-4]")

‎P0267_RefImpl/P0267_RefImpl/cairo/CMakeLists.txt

Copy file name to clipboardExpand all lines: P0267_RefImpl/P0267_RefImpl/cairo/CMakeLists.txt
+4-19Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ cmake_minimum_required(VERSION 3.8)
22

33
project(io2d CXX)
44

5+
find_package(Cairo REQUIRED)
6+
57
add_library(io2d_cairo
68
cairo_renderer-graphicsmagickinit.cpp
79
xcairo.h
@@ -21,40 +23,23 @@ target_include_directories(io2d_cairo PUBLIC
2123

2224
target_compile_features(io2d_cairo PUBLIC cxx_std_17)
2325

24-
target_link_libraries(io2d_cairo PUBLIC io2d_core)
26+
target_link_libraries(io2d_cairo PUBLIC io2d_core Cairo::Cairo)
2527

2628
if(MSVC)
27-
find_path(CAIRO_INCLUDE_DIR cairo.h)
2829
find_path(GRAPHICSMAGICK_INCLUDE_DIR magick/api.h)
29-
find_library(CAIRO_LIB_DEBUG cairod)
30-
find_library(CAIRO_LIB_RELEASE cairo)
3130
find_library(GRAPHICSMAGICK_LIB graphicsmagick)
3231
elseif(APPLE)
33-
find_path(CAIRO_INCLUDE_DIR cairo-xlib.h PATH_SUFFIXES cairo)
3432
find_path(GRAPHICSMAGICK_INCLUDE_DIR magick/api.h PATH_SUFFIXES GraphicsMagick)
35-
find_library(CAIRO_LIB cairo)
3633
find_library(GRAPHICSMAGICK_LIB GraphicsMagick)
3734
else() # Linux
38-
find_path(CAIRO_INCLUDE_DIR cairo-xlib.h PATH_SUFFIXES cairo)
3935
find_path(GRAPHICSMAGICK_INCLUDE_DIR magick/api.h PATH_SUFFIXES GraphicsMagick)
40-
find_library(CAIRO_LIB cairo)
4136
find_library(GRAPHICSMAGICK_LIB GraphicsMagick)
4237
endif()
4338

44-
target_include_directories(io2d_cairo SYSTEM PUBLIC ${CAIRO_INCLUDE_DIR} ${GRAPHICSMAGICK_INCLUDE_DIR})
39+
target_include_directories(io2d_cairo SYSTEM PUBLIC ${GRAPHICSMAGICK_INCLUDE_DIR})
4540

4641
target_link_libraries(io2d_cairo PUBLIC ${GRAPHICSMAGICK_LIB})
4742

48-
if(MSVC)
49-
if(CAIRO_LIB_DEBUG STREQUAL "CAIRO_LIB_DEBUG-NOTFOUND")
50-
message(STATUS "io2d: Can't find Debug build of Cairo. Will try to use Release build, instead.")
51-
target_link_libraries(io2d_cairo PUBLIC ${CAIRO_LIB_RELEASE})
52-
else()
53-
target_link_libraries(io2d_cairo PUBLIC debug ${CAIRO_LIB_DEBUG} optimized ${CAIRO_LIB_RELEASE})
54-
endif()
55-
else()
56-
target_link_libraries(io2d_cairo PUBLIC ${CAIRO_LIB})
57-
endif()
5843

5944
install(
6045
TARGETS io2d_cairo EXPORT io2d_targets

‎P0267_RefImpl/Samples/rocks_in_space/Maths.cpp

Copy file name to clipboardExpand all lines: P0267_RefImpl/Samples/rocks_in_space/Maths.cpp
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ float rocks_in_space::minimum_distance_from_line_segment(point_2d e1, point_2d e
2020
rocks_in_space::point_2d rocks_in_space::rotate(const point_2d& point, float theta, const point_2d& origin)
2121
{
2222
const auto translation = point - origin;
23-
const auto s = sin(theta);
24-
const auto c = cos(theta);
23+
const auto s = std::sin(theta);
24+
const auto c = std::cos(theta);
2525

2626
return point_2d{ translation.x() * c - translation.y() * s, translation.x() * s + translation.y() * c } + origin;
2727
}

‎P0267_RefImpl/Samples/rocks_in_space/Maths.h

Copy file name to clipboardExpand all lines: P0267_RefImpl/Samples/rocks_in_space/Maths.h
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,12 @@ inline float rocks_in_space::polar_2d::theta() const
6161

6262
inline rocks_in_space::point_2d rocks_in_space::pol_to_car(const polar_2d& p)
6363
{
64-
return{ p.r() * cos(p.theta()), p.r() * sin(p.theta()) };
64+
return{ p.r() * std::cos(p.theta()), p.r() * std::sin(p.theta()) };
6565
}
6666

6767
inline rocks_in_space::polar_2d rocks_in_space::car_to_pol(const point_2d& v)
6868
{
69-
return{ v.magnitude(), atan2(v.y(), v.x()) };
69+
return{ v.magnitude(), std::atan2(v.y(), v.x()) };
7070
}
7171

7272
inline rocks_in_space::stadium::stadium(point_2d c1, point_2d c2, float radius)

‎cmake/FindCairo.cmake

Copy file name to clipboard
+156Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
# - Try to find Cairo
2+
# Once done, this will define
3+
#
4+
# CAIRO_FOUND - system has Cairo
5+
# CAIRO_INCLUDE_DIRS - the Cairo include directories
6+
# CAIRO_LIBRARIES - link these to use Cairo
7+
#
8+
# Copyright (C) 2012 Raphael Kubo da Costa <rakuco@webkit.org>
9+
#
10+
# Redistribution and use in source and binary forms, with or without
11+
# modification, are permitted provided that the following conditions
12+
# are met:
13+
# 1. Redistributions of source code must retain the above copyright
14+
# notice, this list of conditions and the following disclaimer.
15+
# 2. Redistributions in binary form must reproduce the above copyright
16+
# notice, this list of conditions and the following disclaimer in the
17+
# documentation and/or other materials provided with the distribution.
18+
#
19+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND ITS CONTRIBUTORS ``AS
20+
# IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21+
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22+
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ITS
23+
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24+
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25+
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
26+
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
27+
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
28+
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
29+
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30+
31+
find_package(PkgConfig)
32+
pkg_check_modules(PC_CAIRO QUIET cairo)
33+
34+
find_path(CAIRO_INCLUDE_DIRS
35+
NAMES cairo.h
36+
HINTS ${PC_CAIRO_INCLUDEDIR}
37+
${PC_CAIRO_INCLUDE_DIRS}
38+
PATH_SUFFIXES cairo
39+
)
40+
41+
find_library(CAIRO_LIBRARIES
42+
NAMES cairo
43+
HINTS ${PC_CAIRO_LIBDIR}
44+
${PC_CAIRO_LIBRARY_DIRS}
45+
)
46+
find_library(CAIRO_LIBRARIES_DEBUG
47+
NAMES cairod
48+
HINTS ${PC_CAIRO_LIBDIR}
49+
${PC_CAIRO_LIBRARY_DIRS}
50+
)
51+
52+
if (CAIRO_INCLUDE_DIRS)
53+
set(_CAIRO_PATH ${CAIRO_INCLUDE_DIRS})
54+
while(TRUE)
55+
get_filename_component(_CAIRO_PATH_PART ${_CAIRO_PATH} NAME)
56+
string(TOLOWER ${_CAIRO_PATH_PART} _CAIRO_PATH_PART)
57+
if (${_CAIRO_PATH_PART} STREQUAL "cairo" OR ${_CAIRO_PATH_PART} STREQUAL "include")
58+
get_filename_component(_CAIRO_PATH ${_CAIRO_PATH} DIRECTORY)
59+
continue()
60+
endif()
61+
if (NOT (${_CAIRO_PATH} STREQUAL ""))
62+
set(CAIRO_PATH ${_CAIRO_PATH})
63+
set(CAIRO_PATH ${CAIRO_PATH} PARENT_SCOPE)
64+
endif()
65+
break()
66+
endwhile()
67+
endif()
68+
69+
find_file(CAIRO_DLL
70+
NAMES cairo.dll
71+
HINTS ${CAIRO_PATH}
72+
PATH_SUFFIXES bin
73+
)
74+
find_file(CAIRO_DLL_DEBUG
75+
NAMES cairod.dll
76+
HINTS ${CAIRO_PATH}
77+
PATH_SUFFIXES debug/bin
78+
)
79+
80+
if (CAIRO_INCLUDE_DIRS)
81+
if (EXISTS "${CAIRO_INCLUDE_DIRS}/cairo-version.h")
82+
file(READ "${CAIRO_INCLUDE_DIRS}/cairo-version.h" CAIRO_VERSION_CONTENT)
83+
84+
string(REGEX MATCH "#define +CAIRO_VERSION_MAJOR +([0-9]+)" _dummy "${CAIRO_VERSION_CONTENT}")
85+
set(CAIRO_VERSION_MAJOR "${CMAKE_MATCH_1}")
86+
87+
string(REGEX MATCH "#define +CAIRO_VERSION_MINOR +([0-9]+)" _dummy "${CAIRO_VERSION_CONTENT}")
88+
set(CAIRO_VERSION_MINOR "${CMAKE_MATCH_1}")
89+
90+
string(REGEX MATCH "#define +CAIRO_VERSION_MICRO +([0-9]+)" _dummy "${CAIRO_VERSION_CONTENT}")
91+
set(CAIRO_VERSION_MICRO "${CMAKE_MATCH_1}")
92+
93+
set(CAIRO_VERSION "${CAIRO_VERSION_MAJOR}.${CAIRO_VERSION_MINOR}.${CAIRO_VERSION_MICRO}")
94+
endif ()
95+
endif ()
96+
97+
if ("${Cairo_FIND_VERSION}" VERSION_GREATER "${CAIRO_VERSION}")
98+
message(FATAL_ERROR "Required version (" ${Cairo_FIND_VERSION} ") is higher than found version (" ${CAIRO_VERSION} ")")
99+
endif ()
100+
101+
include(FindPackageHandleStandardArgs)
102+
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Cairo REQUIRED_VARS CAIRO_INCLUDE_DIRS CAIRO_LIBRARIES
103+
VERSION_VAR CAIRO_VERSION)
104+
105+
mark_as_advanced(
106+
CAIRO_INCLUDE_DIRS
107+
CAIRO_LIBRARIES
108+
CAIRO_LIBRARIES_DEBUG
109+
)
110+
111+
# Create CMake targets
112+
if (CAIRO_FOUND AND NOT TARGET Cairo::Cairo)
113+
if (CAIRO_DLL)
114+
# Not using 'SHARED' when Cairo is available through a .dll can
115+
# cause build issues with MSVC, at least when trying to link against
116+
# a vcpkg-provided copy of "cairod".
117+
add_library(Cairo::Cairo SHARED IMPORTED)
118+
else()
119+
add_library(Cairo::Cairo UNKNOWN IMPORTED)
120+
endif()
121+
122+
set_target_properties(Cairo::Cairo PROPERTIES
123+
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
124+
INTERFACE_INCLUDE_DIRECTORIES ${CAIRO_INCLUDE_DIRS}
125+
)
126+
127+
if(CAIRO_DLL)
128+
# When using a .dll, the location of *both( the .dll file, and its .lib,
129+
# needs to be specified to CMake. The path to the .dll goes into
130+
# IMPORTED_LOCATION(_*), whereas the path to the .lib goes into
131+
# IMPORTED_IMPLIB(_*).
132+
set_target_properties(Cairo::Cairo PROPERTIES
133+
IMPORTED_LOCATION ${CAIRO_DLL}
134+
IMPORTED_IMPLIB ${CAIRO_LIBRARIES}
135+
)
136+
if (CAIRO_DLL_DEBUG)
137+
set_target_properties(Cairo::Cairo PROPERTIES
138+
IMPORTED_LOCATION_DEBUG ${CAIRO_DLL_DEBUG}
139+
)
140+
endif()
141+
if (CAIRO_LIBRARIES_DEBUG)
142+
set_target_properties(Cairo::Cairo PROPERTIES
143+
IMPORTED_IMPLIB_DEBUG ${CAIRO_LIBRARIES_DEBUG}
144+
)
145+
endif()
146+
else()
147+
set_target_properties(Cairo::Cairo PROPERTIES
148+
IMPORTED_LOCATION ${CAIRO_LIBRARIES}
149+
)
150+
if (CAIRO_LIBRARIES_DEBUG)
151+
set_target_properties(Cairo::Cairo PROPERTIES
152+
IMPORTED_LOCATION_DEBUG ${CAIRO_LIBRARIES_DEBUG}
153+
)
154+
endif()
155+
endif()
156+
endif()

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.