75 lines
2.2 KiB
Ruby
75 lines
2.2 KiB
Ruby
# Copyright (c) 2018(-2023) STMicroelectronics.
|
|
# All rights reserved.
|
|
#
|
|
# This file is part of the TouchGFX 4.21.2 distribution.
|
|
#
|
|
# This software is licensed under terms that can be found in the LICENSE file in
|
|
# the root directory of this software component.
|
|
# If no LICENSE file comes with this software, it is provided AS-IS.
|
|
#
|
|
###############################################################################/
|
|
require 'json'
|
|
|
|
class ApplicationFontProviderCpp < Template
|
|
def initialize(text_entries, typographies, language, output_directory, generate_font_format)
|
|
super(text_entries, typographies, language, output_directory)
|
|
@generate_font_format = generate_font_format
|
|
@cache = {}
|
|
end
|
|
def input_path
|
|
File.join(root_dir,'Templates','ApplicationFontProvider.cpp.temp')
|
|
end
|
|
def output_path
|
|
'src/ApplicationFontProvider.cpp'
|
|
end
|
|
def cache_file
|
|
File.join(@output_directory, 'cache/ApplicationFontProvider.cache')
|
|
end
|
|
def output_filename
|
|
File.join(@output_directory, output_path)
|
|
end
|
|
def run
|
|
@cache["typographies"] = typographies.collect{|t| [t.name, t.font_file, t.font_size, t.bpp] }
|
|
@cache["generate_font_format"] = @generate_font_format
|
|
new_cache_file = false
|
|
if not File::exists?(cache_file)
|
|
new_cache_file = true
|
|
else
|
|
#cache file exists, compare data with cache file
|
|
old_cache = JSON.parse(File.read(cache_file))
|
|
new_cache_file = (old_cache != @cache)
|
|
end
|
|
if new_cache_file
|
|
#write new cache file
|
|
FileIO.write_file_silent(cache_file, @cache.to_json)
|
|
end
|
|
if !File::exists?(output_filename) || new_cache_file
|
|
#generate ApplicationFontProvider.cpp
|
|
super
|
|
end
|
|
end
|
|
|
|
def save_flashreader?
|
|
@generate_font_format == "1"
|
|
end
|
|
|
|
def get_font_index(index)
|
|
font_index[typography_name(@typographies[index])]
|
|
end
|
|
|
|
private
|
|
|
|
def typography_name(typography)
|
|
"#{typography.cpp_name}_#{typography.font_size}_#{typography.bpp}bpp"
|
|
end
|
|
|
|
def font_index
|
|
#map typographies to index of first using same font = font index
|
|
@font_index ||= @typographies.inject(Hash.new) do |list, typography|
|
|
name = typography_name(typography)
|
|
list[name] ||= list.size
|
|
list
|
|
end
|
|
end
|
|
end
|