compile method
Implementation
CompiledIcons compile({
required Directory inputDir,
required Directory outputDir,
required String bundleName,
}) {
outputDir.createSync(recursive: true);
final buffer = StringBuffer()
..write('#include "$bundleName.h"\n\n#include <gui/icon_i.h>\n\n');
final icons = <_IconEntry>[];
_walk(inputDir, buffer, icons);
for (final icon in icons) {
buffer.write(
'const Icon ${icon.name} = {.width=${icon.width},'
'.height=${icon.height},.frame_count=${icon.frameCount},'
'.frame_rate=${icon.frameRate},.frames=_${icon.name}};\n',
);
}
buffer.write('\n');
final source = File(UfbtPaths.join(outputDir.path, '$bundleName.c'))
..writeAsStringSync(buffer.toString());
final headerBuffer = StringBuffer(
'#pragma once\n\n#include <gui/icon.h>\n\n',
);
for (final icon in icons) {
headerBuffer.write('extern const Icon ${icon.name};\n');
}
final header = File(UfbtPaths.join(outputDir.path, '$bundleName.h'))
..writeAsStringSync(headerBuffer.toString());
return CompiledIcons(source: source, header: header);
}