Commit 1bf13ff5 authored by Paul Asmuth's avatar Paul Asmuth
Browse files

make the libfribidi dependency optional

parent 45be8458
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -19,7 +19,17 @@ find_package(Freetype)
find_package(HarfBuzz)
find_package(Fontconfig)
find_package(PNG)
include_directories(${CAIRO_INCLUDE_DIRS} ${FREETYPE_INCLUDE_DIRS} ${HARFBUZZ_INCLUDE_DIRS} ${PNG_INCLUDE_DIRS}})

#if(FVIZ_TEXT_BACKEND EQUAL "freetype")
  pkg_check_modules(FRIBIDI QUIET fribidi)
  find_path(FRIBIDI_INCLUDE_DIR NAMES fribidi/fribidi.h)
  find_library(FRIBIDI_LIBRARY NAMES fribidi)

  if(NOT FRIBIDI_FOUND)
    message(WARNING "libfribidi not found; disabling BiDI support")
    set(FVIZ_TEXT_ENABLE_BIDI OFF)
  endif()
#endif()


# Compile Flags
@@ -27,6 +37,7 @@ include_directories(${CAIRO_INCLUDE_DIRS} ${FREETYPE_INCLUDE_DIRS} ${HARFBUZZ_IN
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")

include_directories(${CAIRO_INCLUDE_DIRS} ${FREETYPE_INCLUDE_DIRS} ${HARFBUZZ_INCLUDE_DIRS} ${PNG_INCLUDE_DIRS}})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/core)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/core/utils)
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
@@ -67,7 +78,7 @@ file(GLOB source_files "core/*.cc" "core/**/*.cc" "elements/*.cc" "elements/**/*
list(REMOVE_ITEM source_files "core/cli.cc")
add_library(fviz STATIC ${source_files})
set_target_properties(fviz PROPERTIES PUBLIC_HEADER "core/fviz.h")
set(fviz_LDFLAGS fviz ${CAIRO_LIBRARIES} ${FREETYPE_LIBRARIES} ${HARFBUZZ_LIBRARIES} ${HARFBUZZ_ICU_LIBRARIES} ${PNG_LIBRARIES} ${FONTCONFIG_LIBRARIES} fmt fribidi)
set(fviz_LDFLAGS fviz ${CAIRO_LIBRARIES} ${FREETYPE_LIBRARIES} ${HARFBUZZ_LIBRARIES} ${HARFBUZZ_ICU_LIBRARIES} ${PNG_LIBRARIES} ${FONTCONFIG_LIBRARIES} ${FRIBIDI_LIBRARIES} fmt)


# Build: CLI
+11 −0
Original line number Diff line number Diff line
@@ -11,10 +11,16 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#include "fviz_config.h"
#include "text_backend.h"

#include <numeric>

#if FVIZ_TEXT_ENABLE_BIDI == 1
#include <fribidi/fribidi.h>
#endif

const constexpr bool TEXT_ENABLE_BIDI = FVIZ_TEXT_ENABLE_BIDI;

namespace fviz::text::backend_freetype {

@@ -24,6 +30,9 @@ ReturnCode text_analyze_bidi_line(
    TextDirection text_direction_base,
    std::vector<TextSpan>* runs,
    std::vector<int>* run_bidi_levels) {
#if FVIZ_TEXT_ENABLE_BIDI == 0
  return error(ERROR, "compiled without fribidi");
#else
  FriBidiParType fb_basedir;
  switch (text_direction_base) {
    case TextDirection::LTR:
@@ -115,7 +124,9 @@ ReturnCode text_analyze_bidi_line(
  }

  return OK;
#endif
}


} // namespace fviz::text::backend_freetype