- The added line is THIS COLOR.
- The deleted line is THIS COLOR.
[[Ming:http://ming.sourceforge.net/]]とはFlashファイルを出力するライブラリで、
最近では[[Flex2:http://www.adobe.com/jp/products/flex/]]や[[MTASC:http://www.mtasc.org/]]などに押され気味な気がしないでも無いが、
フォントの埋め込みができるというのと、C/C++から直接ストリームにSWFファイルを出力できるというところがヨサゲだったので、ちょっと触ってみる。
**マニュアル [#sbf4756a]
http://www.libming.org/docs/libming/index.html
http://www.libming.org/docs/perl/index.html
**コンパイル [#l9c075b4]
%%VCのプロジェクトから0.3.0のDLLを作ろうとしたが、ファイルポインタをDLLに渡すところで落ちる。MinGWでビルドしたものも、VC6からリンクすると同じ問題にはまって解決できなかったので、仕方が無いので静的ライブラリとして作成した。%%~
結局日本語フォントを使うと落ちるのは変わらず。仕方が無いのでVCを諦めて、完全にMinGWでコンパイルすることにしたらあっさり通った。最初からこうすればよかった。
**ついでにPukiwikiのFlashプラグインも入れてみたよ [#gd9025d2]
[[自作プラグイン/flash.inc.php - Pukiwiki-official:http://pukiwiki.sourceforge.jp/?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2Fflash.inc.php]]
**Sample1 [#q6ca7de0]
#include <stdio.h>
#include "ming.h"
#define FONT_FILE "Sazanami Mincho.fdb"
#define WIDTH 300
#define HEIGHT 200
#define SIZE 40
int main()
{
const char str[] = "こんにちは";
FILE *f;
SWFFont font;
SWFText text;
SWFDisplayItem d;
SWFMovie movie = newSWFMovie();
SWFMovie_setDimension(movie, WIDTH, HEIGHT);
SWFMovie_setBackground(movie, 0x33, 0x44, 0x33);
SWFMovie_setRate(movie, 12);
f = fopen(FONT_FILE, "rb");
if (f == NULL) {
printf("failed to open font file!\n");
return 1;
}
font = loadSWFFontFromFile(f);
text = newSWFText();
SWFText_setFont(text, font);
SWFText_setColor(text, 0xff, 0xff, 0xff, 0xff);
SWFText_setHeight(text, SIZE);
SWFText_setSpacing(text, 0);
SWFText_addUTF8String(text, str, NULL);
d = SWFMovie_add(movie, (SWFCharacter)text);
SWFDisplayItem_move(d, 10, 100);
SWFMovie_save(movie, "ming_test01.swf");
return 0;
}
#flash(http://reddog.s35.xrea.com/img/ming_test01.swf, 300x200, align=left)
**日本語 [#m001d672]
0.3.0には文字を表示するための三つの関数がある。
-void SWFText_addString(SWFText text, const char* string, int* advance);
-void SWFText_addUTF8String(SWFText text, const char* string, int* advance);
-void SWFText_addWideString(SWFText text, const unsigned short* string, int strlen, int* advance);
で、日本語を使う場合、addUTF8StringかaddWideStringのどっちかを使わなければならない。ところで、UTF-8をWideStringに変換するコンバーターがmingw-0.3.0/src/blocks/utf8.cにあるので、文字列を一文字ずつループするときはUTF-8をを長さが固定のWideStringに変換した方が便利だ。
**埋め込みできる日本語TrueTypeフォント探し [#r06f4890]
-埋め込みの場合は制限無しと明記してあるもの
--[[さざなみフォント:http://wiki.fdiary.net/font/?sazanami]]
--[[XANO明朝:http://www.asahi-net.or.jp/~sd5a-ucd/freefonts/XANO-mincho/]]
--[[Y.OzFont:http://yozvox.web.infoseek.co.jp/]]
-その他制限がありそうなもの
--[[GT書体:http://www.l.u-tokyo.ac.jp/GT/]] 非営利のみ利用可&配布には利用許諾書の添付が必要
--[[IPAフォント:http://www.grass-japan.org/FOSS4G/readme-grass-i18n-ipafonts.eucjp.htm]] 再配布はGRASSのGISソフトに同梱し、利用許諾書を添付し、IPAフォントであることを明示しなければならない。
**シンボルとインスタンス [#ibb0797a]
Flashのオーサリングツール上、シンボルとインスタンスと呼ばれているものは、Mingでは、シンボルはSWFDisplayItemと呼ばれ、インスタンスはそれぞれSWFTextやらSWFShapeらしい。できないものかとしばらく模索していたのが、「Mingでシンボルだけ作って、ActionScriptで動的にポコポコインスタンスを作る方法」だったのだが、まあ紙に印刷されたActionScriptのマニュアルは5のやつしか持ってないがそれは一応読んだがよくわからず、しかし、[[ここ:http://www.fumiononaka.com/TechNotes/Flash/FN0307001.html]]によれば、できそうな気がしないでもないが、Ming側のシンボル作成の方法がよくわからん。たぶんSWFMovie_addExportがソレっぽいが、あとで調べる。
----
[[CategoryFlash]]
HTML convert time: 0.004 sec.