Skip to content

Commit

Permalink
Import sources.
Browse files Browse the repository at this point in the history
  • Loading branch information
virxkane committed Mar 22, 2018
1 parent 34c01d4 commit 71c6ad7
Show file tree
Hide file tree
Showing 13 changed files with 1,323 additions and 0 deletions.
38 changes: 38 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
project(freetype-textdraw)

cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR)

set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules/")

# Find the Qt5 libraries
find_package(Qt5Core REQUIRED)
find_package(Qt5Gui REQUIRED)
find_package(Qt5Widgets REQUIRED)

option(USE_HARFBUZZ "Use HarfBuzz for text shaping" ON)

find_package(Freetype REQUIRED)
if (USE_HARFBUZZ)
find_package(HarfBuzz REQUIRED)
add_definitions(-DUSE_HARFBUZZ=1)
endif(USE_HARFBUZZ)

include_directories(${FREETYPE_INCLUDE_DIRS})
include_directories(${HARFBUZZ_INCLUDE_DIR})

include_directories(${CMAKE_BINARY_DIR})

# add defines for debug build type
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")

if (WIN32)
set(CMAKE_RC_COMPILER windres)
# set rc syntax
set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> <FLAGS> <DEFINES> -O coff -o <OBJECT> -i <SOURCE>")
set(CMAKE_RC_SOURCE_FILE_EXTENSIONS rc)
set(CMAKE_RC_FLAGS "-I${CMAKE_BINARY_DIR}")
# enable resource language for this project
enable_language(RC)
endif(WIN32)

add_subdirectory(src)
66 changes: 66 additions & 0 deletions cmake/modules/FindHarfBuzz.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
#.rst:
# Find HarfBuzz
# -------------
#
# Finds the HarfBuzz library. This module defines:
#
# HarfBuzz_FOUND - True if HarfBuzz library is found
# HarfBuzz::HarfBuzz - HarfBuzz imported target
#
# Additionally these variables are defined for internal usage:
#
# HARFBUZZ_LIBRARY - HarfBuzz library
# HARFBUZZ_LIBRARIES - Same as HARFBUZZ_LIBRARY
# HARFBUZZ_INCLUDE_DIR - Include dir
#

#
# This file is part of Magnum.
#
# Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018
# Vladimír Vondruš <[email protected]>
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
#

# Library
find_library(HARFBUZZ_LIBRARY NAMES harfbuzz)

# Include dir
find_path(HARFBUZZ_INCLUDE_DIR
NAMES hb.h
PATH_SUFFIXES harfbuzz)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(HarfBuzz DEFAULT_MSG
HARFBUZZ_LIBRARY
HARFBUZZ_INCLUDE_DIR)

mark_as_advanced(FORCE
HARFBUZZ_LIBRARY
HARFBUZZ_INCLUDE_DIR)

if(NOT TARGET HarfBuzz::HarfBuzz)
add_library(HarfBuzz::HarfBuzz UNKNOWN IMPORTED)
set_target_properties(HarfBuzz::HarfBuzz PROPERTIES
IMPORTED_LOCATION ${HARFBUZZ_LIBRARY}
INTERFACE_INCLUDE_DIRECTORIES ${HARFBUZZ_INCLUDE_DIR})
endif()

set(HARFBUZZ_LIBRARIES ${HARFBUZZ_LIBRARY})
30 changes: 30 additions & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@

# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(EXE_NAME freetype-textdraw)

# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)

set(SRC_LIST
main.cpp
mainwnd.cpp
mainwnd.ui
lowlevel_textrender.cpp
lowlevel_textrender_private.cpp
)

set(LDADD_LIBS)
if(WIN32)
# -mwindows -> window application (without terminal screen)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -mwindows")
#set(LDADD_LIBS ${LDADD_LIBS} -lpsapi)
endif(WIN32)

add_executable(${EXE_NAME} WIN32 ${SRC_LIST} ${QRC_GEN_FILES})
target_link_libraries(${EXE_NAME} Qt5::Core Qt5::Gui Qt5::Widgets ${FREETYPE_LIBRARIES} ${HARFBUZZ_LIBRARIES} ${LDADD_LIBS})
install(TARGETS ${EXE_NAME} RUNTIME DESTINATION bin)

configure_file(valgrind_check.sh.cmake ${CMAKE_CURRENT_BINARY_DIR}/valgrind_check.sh)
Loading

0 comments on commit 71c6ad7

Please sign in to comment.