use rustraight::prelude::*;
fn asset(rel: &str) -> String {
format!("{}/検証素材/{}", env!("CARGO_MANIFEST_DIR"), rel)
}
const SAMPLE: &str = "こんにちは rustraight 0123";
fn main() {
init(WindowConfig {
title: String::from("09_text"),
width: 900,
height: 420,
screen_width: 900,
screen_height: 420,
..Default::default()
});
let font_a_path = asset("fonts/Mamelon-3.5-Hi-Regular.otf");
let font_b_path = asset("fonts/YDWaosagi.otf");
let font_a = load_font(&font_a_path, 28);
let font_b = load_font(&font_b_path, 28);
let width_a = get_text_width(SAMPLE, font_a);
let width_b = get_text_width(SAMPLE, font_b);
let bad_font = load_font("no_such_font.ttf", 16);
let mut default_size = 20u32;
while advance_frame() {
draw_fill(MAIN_SCREEN, Color::rgb(15, 15, 20));
draw_text(MAIN_SCREEN, 10, 6, "1: デフォルトフォントをMamelonに切替 2: YDWaosagiに切替 +/-: set_font_sizeを変更", Color::YELLOW);
draw_text_ex(MAIN_SCREEN, 20, 50, SAMPLE, Color::WHITE, font_a);
draw_text(MAIN_SCREEN, 20, 90, format!("font_a (Mamelon) get_text_width = {width_a}px"), Color::CYAN);
draw_text_ex(MAIN_SCREEN, 20, 130, SAMPLE, Color::WHITE, font_b);
draw_text(MAIN_SCREEN, 20, 170, format!("font_b (YDWaosagi) get_text_width = {width_b}px"), Color::CYAN);
if is_just_pressed(KeyCode::Digit1) { set_font_file(&font_a_path); }
if is_just_pressed(KeyCode::Digit2) { set_font_file(&font_b_path); }
if is_just_pressed(KeyCode::Equal) { default_size += 2; set_font_size(default_size); }
if is_just_pressed(KeyCode::Minus) { default_size = (default_size - 2).max(8); set_font_size(default_size); }
draw_text(MAIN_SCREEN, 20, 230, format!("draw_text (デフォルトフォント, size={default_size})"), Color::GREEN);
draw_text(MAIN_SCREEN, 20, 260, SAMPLE, Color::WHITE);
draw_text(MAIN_SCREEN, 20, 320, format!("load_font(存在しないパス) の戻り値: {bad_font} (0=失敗)"), Color::RED);
}
}