@@ -43,6 +43,28 @@ add_subdirectory(${REPO_ROOT_DIR}/components/miniz ${CMAKE_CURRENT_BINARY_DIR}/m
4343
4444add_subdirectory (${REPO_ROOT_DIR} /components/Adafruit-GFX-Library ${CMAKE_CURRENT_BINARY_DIR} /Adafruit-GFX-Library)
4545
46+ add_subdirectory (${REPO_ROOT_DIR} /components/tiny-font ${CMAKE_CURRENT_BINARY_DIR} /tiny-font)
47+
48+ # Conditionally link freetype if we're using 8-bit or 16-bit display
49+ if (DISPLAY_TYPE STREQUAL "DISPLAY_SIM_24BIT" OR DISPLAY_TYPE STREQUAL "DISPLAY_SIM_16BIT" OR DISPLAY_TYPE STREQUAL "DISPLAY_SIM_8BIT" )
50+ # Set FreeType options before adding the subdirectory
51+ set (FT_DISABLE_PNG ON CACHE BOOL "Disable PNG support in FreeType" FORCE)
52+ set (FT_DISABLE_HARFBUZZ ON CACHE BOOL "Disable HarfBuzz support in FreeType" FORCE)
53+ set (FT_DISABLE_BROTLI ON CACHE BOOL "Disable Brotli support in FreeType" FORCE)
54+ add_subdirectory (${REPO_ROOT_DIR} /components/tiny-font/freetype/freetype ${CMAKE_CURRENT_BINARY_DIR} /freetype)
55+ target_link_libraries (tiny-font PUBLIC freetype)
56+ target_compile_definitions (tiny-font PUBLIC
57+ CONFIG_TINYFONT_TTF=1
58+ CONFIG_TINYFONT_IBMF=0
59+ CONFIG_TINYFONT_DISPLAY_DPI=${TTF_SCREEN_RES_PER_INCH}
60+ )
61+ else ()
62+ target_compile_definitions (tiny-font PUBLIC
63+ CONFIG_TINYFONT_TTF=0
64+ CONFIG_TINYFONT_IBMF=1
65+ )
66+ endif ()
67+
4668add_subdirectory (${REPO_ROOT_DIR} /lib/esp_ringbuf ${CMAKE_CURRENT_BINARY_DIR} /esp_ringbuf)
4769
4870# Before adding mbedtls, set options to disable tests and programs
@@ -59,7 +81,7 @@ endif()
5981
6082add_library (${PROJECT_NAME} STATIC ${SOURCES} ${HTTP_CLIENT_SOURCE} )
6183
62- target_link_libraries (${PROJECT_NAME} PUBLIC pugixml ArduinoJson miniz astubs esp-idf-stubs nvs_flash Adafruit-GFX-Library mbedtls mbedx509 mbedcrypto esp_ringbuf)
84+ target_link_libraries (${PROJECT_NAME} PUBLIC pugixml ArduinoJson miniz astubs esp-idf-stubs nvs_flash Adafruit-GFX-Library tiny-font mbedtls mbedx509 mbedcrypto esp_ringbuf)
6385
6486target_include_directories (${PROJECT_NAME} PUBLIC
6587 "${REPO_ROOT_DIR} /src"
@@ -71,46 +93,42 @@ target_include_directories(${PROJECT_NAME} PUBLIC
7193 "${REPO_ROOT_DIR} /lib/argparse"
7294)
7395
74- # Conditionally link freetype if we're using 8-bit or 16-bit display
75- if (DISPLAY_TYPE STREQUAL "DISPLAY_SIM_24BIT" OR DISPLAY_TYPE STREQUAL "DISPLAY_SIM_16BIT" OR DISPLAY_TYPE STREQUAL "DISPLAY_SIM_8BIT" )
76- # Set FreeType options before adding the subdirectory
77- set (FT_DISABLE_PNG ON CACHE BOOL "Disable PNG support in FreeType" FORCE)
78- set (FT_DISABLE_HARFBUZZ ON CACHE BOOL "Disable HarfBuzz support in FreeType" FORCE)
79- set (FT_DISABLE_BROTLI ON CACHE BOOL "Disable Brotli support in FreeType" FORCE)
80- add_subdirectory (${REPO_ROOT_DIR} /components/freetype/freetype ${CMAKE_CURRENT_BINARY_DIR} /freetype)
81- target_link_libraries (${PROJECT_NAME} PUBLIC freetype)
82- target_compile_definitions (${PROJECT_NAME} PUBLIC
83- CONFIG_FONT_TTF=1
84- CONFIG_FONT_IBMF=0
85- )
86- else ()
87- target_compile_definitions (${PROJECT_NAME} PUBLIC
88- CONFIG_FONT_TTF=0
89- CONFIG_FONT_IBMF=1
90- )
91- endif ()
92-
9396# Set compile definitions based on the selected DISPLAY_TYPE
9497if (DISPLAY_TYPE STREQUAL "DISPLAY_SIM_24BIT" )
9598 target_compile_definitions (${PROJECT_NAME} PUBLIC
9699 CONFIG_DISPLAY_SIM_24BIT=1
97100 )
101+ target_compile_definitions (tiny-font PUBLIC
102+ CONFIG_TINYFONT_PIXEL_RESOLUTION_TWENTY_FOUR_BIT=1
103+ )
98104elseif (DISPLAY_TYPE STREQUAL "DISPLAY_SIM_16BIT" )
99105 target_compile_definitions (${PROJECT_NAME} PUBLIC
100106 CONFIG_DISPLAY_SIM_16BIT=1
101107 )
108+ target_compile_definitions (tiny-font PUBLIC
109+ CONFIG_TINYFONT_PIXEL_RESOLUTION_SIXTEEN_BIT=1
110+ )
102111elseif (DISPLAY_TYPE STREQUAL "DISPLAY_SIM_8BIT" )
103112 target_compile_definitions (${PROJECT_NAME} PUBLIC
104113 CONFIG_DISPLAY_SIM_8BIT=1
105114 )
115+ target_compile_definitions (tiny-font PUBLIC
116+ CONFIG_TINYFONT_PIXEL_RESOLUTION_EIGHT_BIT=1
117+ )
106118elseif (DISPLAY_TYPE STREQUAL "DISPLAY_SIM_1BIT" )
107119 target_compile_definitions (${PROJECT_NAME} PUBLIC
108120 CONFIG_DISPLAY_SIM_1BIT=1
109121 )
122+ target_compile_definitions (tiny-font PUBLIC
123+ CONFIG_TINYFONT_PIXEL_RESOLUTION_ONE_BIT=1
124+ )
110125elseif (DISPLAY_TYPE STREQUAL "DISPLAY_EINKET013TT1" )
111126 target_compile_definitions (${PROJECT_NAME} PUBLIC
112127 CONFIG_DISPLAY_EINKET013TT1=1
113128 )
129+ target_compile_definitions (tiny-font PUBLIC
130+ CONFIG_TINYFONT_PIXEL_RESOLUTION_ONE_BIT=1
131+ )
114132else ()
115133 message (FATAL_ERROR "Invalid DISPLAY_TYPE: ${DISPLAY_TYPE} " )
116134endif ()
@@ -145,7 +163,6 @@ target_compile_definitions(${PROJECT_NAME} PUBLIC
145163 CONFIG_DISABLE_POWER_MANAGEMENT=1
146164 RTC_SLOW_ATTR=
147165 RTC_NOINIT_ATTR=
148- CONFIG_TTF_SCREEN_RES_PER_INCH=${TTF_SCREEN_RES_PER_INCH}
149166 CONFIG_DEFAULT_INACTIVITY_MINUTES=10
150167 CONFIG_DISPLAY_POWER=-1
151168 CONFIG_DISPLAY_WIDTH=${DISPLAY_WIDTH}
0 commit comments