RustでeguiでHello Worldウィンドウを表示する
eguiはGUIの外部ライブラリ クレートです。
epiはequiのGUIのウィンドウのインターフェースを提供する外部ライブラリ クレートです。
eframeはeguiのフレームワークの外部ライブラリ クレートです。
eguiはLinuxの場合だけ次のコマンドを実行する必要が有ります。
――――――――――――――――――――
sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libspeechd-dev libxkbcommon-dev libssl-dev
――――――――――――――――――――
libxcbはLinuxのGUIのX Window SystemのC言語のライブラリのようです。
libspeechdは音声合成のC言語のライブラリのようです。
libxkbはLinuxのキーボードのC言語のライブラリのようです。
libsslはSSLのC言語のライブラリのようです。
Cargo.toml
――――――――――――――――――――
[package]
name = "epub_maker"
version = "0.1.0"
edition = "2021"
[dependencies]
eframe = "0.16"
――――――――――――――――――――
main.rs
――――――――――――――――――――
use eframe::epi::App;
use eframe::egui::CtxRef;
use eframe::epi::Frame;
use eframe::epi::Storage;
use eframe::egui::Vec2;
use eframe::egui::FontDefinitions;
use eframe::egui::FontData;
use eframe::egui::FontFamily;
use eframe::egui::CentralPanel;
use eframe::NativeOptions;
struct AppImpl {}
impl App for AppImpl {
//ウィンドウのタイトルなどに利用されます。
fn name(&self) -> &str {
return "タイトル";
}
//描画の前に1回だけ起動されます。
fn setup(&mut self, ctx: &CtxRef, _frame: &Frame, _storage: Option<&dyn Storage>) {
//日本語のフォントを設定
//.ttfか.otf
let mut font_definitions = FontDefinitions::default();
font_definitions.font_data.insert(
"ja".to_owned(),
FontData::from_static(include_bytes!("/usr/share/fonts/truetype/takao-gothic/TakaoPGothic.ttf"))
);
font_definitions.fonts_for_family.get_mut(&FontFamily::Proportional).unwrap().insert(0, "ja".to_owned());
font_definitions.fonts_for_family.get_mut(&FontFamily::Monospace).unwrap().insert(0, "ja".to_owned());
ctx.set_fonts(font_definitions);
//ウィンドウのサイズを設定
_frame.set_window_size(Vec2::new(800.0, 500.0));
}
//描画のたびに起動されます。
fn update(&mut self, ctx: &CtxRef, _frame: &Frame) {
//拡大
ctx.set_pixels_per_point(1.5);
CentralPanel::default().show(ctx, |ui| {
ui.label("こんにちは");
});
}
}
fn main() {
eframe::run_native(Box::new(AppImpl{}), NativeOptions::default());
}
――――――――――――――――――――
コピペする場合は、2文字の全角空白を4文字の半角空白に、/usr/share/fonts/truetype/takao-gothic/TakaoPGothic.ttfを適切な日本語のフォントのファイルのパスに、置換してください。
eguiは、日本語のフォントのファイルを指定しないと、日本語が文字化けします。
struct AppImpl {}
impl App for AppImpl {
はJava風に書くと、
class AppImpl implements App {
に成ります。
Rustではimplでstructで定義した構造体にメソッドを実装させる事ができるようです。
Rustではimplで実装する処理の最初の引数は必ず&selfという自身のインスタンスの参照に成るようです。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます