aviutlでスクリプト制御を試してみた

aviutlluaスクリプトが動くということを(今更)知ったので、ちょっと試してみた。

--dialog:駅名,station_name="";駅名(英語),station_name_en="";駅ナンバー,station_no=0;幅,width=350;
local height = 70;
local left_offset = 140;
local text_x = width - 250;
-- 背景(紫)
obj.setoption("drawtarget","tempbuffer", width * 2, height * 2);
obj.load("figure", "四角形", 0x151380, 1);
obj.drawpoly(
    -width, -height, 0,
    -width, height, 0,
    width, height, 0,
    width, -height, 0
);
-- 背景(オレンジ)
obj.load("figure", "四角形", 0xf39800, 1);
obj.drawpoly(
    -width + left_offset, -height, 0,
    -width + left_offset, height, 0,
    width, height, 0,
    width, -height, 0
);
obj.load("figure", "円", 0xf39800, height * 4);
obj.draw(-width + left_offset, -height + 2);
-- 背景(白)
obj.load("figure", "四角形", 0xffffff, 1);
obj.drawpoly(
    -width + left_offset, -height, 0,
    -width + left_offset, height - 10, 0,
    width, height - 10, 0,
    width, -height, 0
);
obj.load("figure", "円", 0xffffff, height * 3);
obj.draw(-width + left_offset, -height + 27);
-- 駅名
obj.setfont("", 60, 0, 0x000000);
obj.load("text", station_name);
obj.draw(text_x, -10);
obj.setfont("", 30, 0, 0x000000);
obj.load("text", station_name_en);
obj.draw(text_x, 30);
obj.setoption("drawtarget","framebuffer")
obj.load("tempbuffer");
obj.draw(0, 0);
-- 駅No
obj.load("figure", "円", 0x151380, height * 2 - 40);
obj.draw(-width + left_offset, -10);
obj.load("figure", "円", 0xffffff, height * 2 - 41);
obj.draw(-width + left_offset, -10);
obj.setoption("drawtarget","tempbuffer", width * 2, height * 2);
local cercle_size = height * 2 - 45;
obj.load("figure", "円", 0x151380, cercle_size);
obj.draw(-width + left_offset, - 10);
obj.setoption("blend", "alpha_sub")
obj.load("figure", "四角形", cercle_size - 20);
obj.draw(-width + left_offset, 65)
obj.setoption("drawtarget","framebuffer")
obj.load("tempbuffer");
obj.draw(0, 0);
obj.setfont("", 50, 0, 0xffffff);
obj.load("text", station_no);
obj.draw(-width + left_offset, -20);

矩形や円、テキストは

obj.load

で作成。
Wikiによると、大きな矩形はそのまま作るんじゃなくて

obj.drawpoly

で拡大したほうがいいらしいのでそのように実装。
そのまま描写すると円がはみ出すので、一旦

obj.setoption("drawtarget","tempbuffer", width * 2, height * 2);

でサイズ制限したバッファに描写してから

obj.setoption("drawtarget","framebuffer")
obj.load("tempbuffer");
obj.draw(0, 0);

で描写することで、はみ出した部分を削除。なんかもちょっといい手段無いかな。
一旦裏画面をクリアしてから駅Noの図形を描写して改めて表画面に転送。
これでシーサイドラインの駅表示っぽくできた。


それはそうと、wordpresのAPH Prism Highlighterでluaを有効にするとプレビューが見れない……投稿してから有効にすれば見れるかな?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です