MGL Version 2 は、Handheld PC などリソースの少ないマシンで グラフィック対応のアプリケーション動かすためのグラフィックライブラリ および、ウインドウマネージャです。
BSD ライセンス (に近いライセンス)で、ソースを公開しています。
詳しくは、"MGL2 とは何か"のページを参照してください。
mgl2-alpha-020.tar.gz
fontkit-1.1-nobdf.tar.gz ( MGL 形式のフォントが含まれています)
fontkit-1.1-src.tar.gz ( MGL形式のフォントの オリジナル (BDF))
NetBSD/hpcmips の current では、backlight on/off、contrast/brightness 調整 virtual console 切替え、resume での画面崩れ対策 および wscons=YES 時の キーが取得できない問題の対処が入ったので 、 ほぼ満足できる機能レベルになっているんじゃないかと思います。
1.5 の環境では、backlight on/off、contrast/brightness 調整 はできません。current でも contrast/brightness 調整の機能自体は開発中。 ( MGL は API だけサポート)
初代モバイルギアで動く UNIX(
PocketBSD
,
PocketLinux
) と
Window CE マシンのアーキティクチャ上で動く UNIX (
NetBSD/hpcmips
)
さらに NetBSD/mac68k,
Linux/7k(Psion5 上の Linux)
や
Linux-VR(Windows CE 機上の Linux)
をターゲットにして開発中です。
メインターゲットは上記のものですが、同一アプリケーションを
X11 で動かしたり、PC UNIX のコンソール上でも動かすことができます。
cvs -d :pserver:anoncvs@jp.netbsd.org:/cvs/jproot login CVS passwrod: anoncvs cvs -d :pserver:anoncvs@jp.netbsd.org:/cvs/jproot co othersrc/mgl/mgl2
mgl2 非対応だが、MGL の API で Windows のアプリが作れる! MGL 対応のアプリが増えると嬉しい。
mgl2 に対応した perl モジュール。サンプルが豊富。
mgl2 に付属の demo が完全移植できている!
すくなくとも浮動小数点がないマシンではruby の方が早いみたい。 オリジナルは、mgl1 にしか対応されていないが将来有望かも。
MGL2 化非公式パッチ ruby-mgl2.pat.gz
mgl2 に対応した java モジュール。
awt がなくても、グラフィックが使える!
squeak を mgl2 に移植してみました。 いろいろ不具合ありますが、デモぐらいはできそう。 ( しばらく mgl2 のソースに 最新版を添付します。)
------- alpha-020 ---------------------------------------
o md_vga.h NetBSD/i386 対応
-- いちおう動くとこまで来たので、config.mk-netbsd-i386-vga{+x} を追加
o md_vga.h
NetBSD-1.5/i386 対策 ( 動くかもしれない が未確認 )
-- ioctl を使わずに、VGA のモード設定ができるようにした。
-- wsmouse のコードを md_hpcmips.h からとってきた。
o vt.c
初期化でメモリを壊していることが判明。
o mgterm.c
変数が2重に定義されていたので修正。
o lib/emcons.c
emcons_refresh() で、core-dump する バグの修正。
( r_minx よりも r_maxx が大きくなるケースがあって、メモリが壊れる)
o nine/Makefile mgterm/Makefile
以下の問題がみつかったので修正。
nine/Makefile: GP_DYNAMIC=y でないとき make install でエラーになる。
mgterm/Makefile: elf 環境でないとき SYM_PREFIX が二重定義になる。
o config.mk-freebsd-vga/config.mk-freebsd-vga+x
FreeBSD-4.0 Console で動作を一応確認。(X と mouse は未確認)
o mgterm/mdate.c
FreeBSD-4.x 対応 (スワップ表示 の部分を usr.bin/top/machine.c から
取って来て追加 )
o mcalc
計算する部分を 手直ししてみた。...
でも電卓風というレベルは脱却していない。
あとオプション追加。-m で独立したアプリとして起動。(X 版テスト用)
o mgterm
-f オプションで複数のフォントを指定した場合、
F8 で フォントサイズを動的に切替えられるようにした。
-f オプションのフォーマット
font_size1,font_size2, ... ,font_sizeN (スペースをいれないこと)
font_size は、8,10,12,16,24 または、16x11 など
例: -f 8,10,16x11,24
最初に表示されるのは、10x8 のフォント F8 で次のフォントに切替え。
o mgterm/vt.c
カーソルの形状をカスタマイズできるようにした。
設定名(環境変数など) CURSOR_SHAPE に BLOCK,UL,RECT のいずれかを指定可能。
BLOCK は従来カーソル。
UL は、アンダーライン。
RECT は中抜き四角。
019 から 020-pre4 までの 変更概要
KEYMAP 対応 --- 各OS のキー定義を読み込み MGL 内部で、RAW モードから
キーコードに変換する。
バックライト/ブライトネス/コンソール切替え も MGL
で対応。( OS がサポートしている場合有効 )
mgl_getenv 新設 -- 今まで getenv していた設定を 設定ファイルで指定できる
ようになった。
mgterm ---
色を設定できるようになった。
/dev/pts 対応 (一応)
cygwin 対応
FreeBSD の VGA console 対応 (md_vga.h)
nine --- マウス/スタイラスからのキー入力エンジン を ソースtree に追加。
mglcalibrate の linux-VR 対応。
------- alpha-019 ---------------------------------------
o マウス入力の見直し。
いままで 移動は、ボタンを押したときしか取得できなかった
が、mgl_set_keymode(MGL_SK_EXMOUSE_EVENT)
を指定することで、ボタンを離したときも取得できるようにした。
o sqMgl.c 添付 (contrib/squeak/)
まだまだ Mgl とバージョンを合わさないとまずそう
------- 018p10
o emcons.c の見直し
o raw keybarod の定義の見直し
-- squeakMgl.pat で機能の確認。
------- 018p9
o MODIFER 付き キー入力サポート開始
-- MGL_SK_TRANSLATED_WITH_MODIFIER を
MGL_SK_EXTRANSLATED に変更 (長いので)
-- これを使うには、keymap の設定が必要
(MGLAPI.doc , memo/keymap.txt を参照。)
o 環境変数 MAXCOLOR を MGL_MAXCOLOR に変更。
------- 018p8
o mil PNG 対応 (Yukihiko Sano)
o RAW モード
-- bugfix
-- memo/raw_keyboad.doc 追加
o 64bit OS 対応
-- malloc の宣言のために stdlib.h を include
o iconedit 改良 (さとさと さん)
-- read_screen_xpm など
o hpcmips R530 系 suspend 対策
-- 時間が飛んだら redraw ( の つもり) (emcons.c)
------- 018p7
o Ctrl+@ が入力できないバグの修正
o RAW モードサポート (まだフレームワークレベル )
mgl_set_keymode(mode)
mode: MGL_SK_TRANSLATED
MGL_SK_RAW
MGL_SK_TRANSLATED_WITH_MODIFIER (X 版のみ)
demos/rawdemo
RAWモード テスト用
o linux-vr TouchPanel サポート --- 中西さん
完全ではなく、とても遅いそうです。求むチューニング。
o フォントキットのツールを 同梱
mgl_fontinfo
フォントパターンの表示/変更をサポート
bdftomgl
bdf および fontx2 フォーマットから mgl フォントを生成可
あまりしっかり作れていないのですが、結構便利に使えます。
------- 018p6
o share_fb acceleration
8bpp/16bpp サポートのためのフレームワークと
8bpp/16bpp 用ドローエンジン (未完成: 不動品 dec192c.c dec3kc.c))
o mgterm
アンダーラインサポート (mgterm.cap も更新)
o instcap.sh 追加
-- mgterm の エントリ追加のためのシェルスクリプト。
o mgterm/vt.c
memcpy -> memmove に変更。(mgl_memmove にも一応対応)
o ドローエンジン バグ fix (16color , 192color) --- やないさん
o (hpcmips) hpcfbio.h 対応 --- やないさん
最新カーネル, pbsdboot.exe の組み合わせ
でない場合は、md_hpcmips.h の USE_CMAP8 を undef してください。
( config にしません。)
o PocketLinux(mobilegear) 対応 --- 神木さん
o cons , X11 の 両方をサポートした svr を作れるようになった --- 神木さん
o share_fb acceleration
体感 倍ぐらいの性能向上。
ドローエンジンの関係で、2bpp/4bpp のみサポート可能。
------- 018p5
o 高速化その2
-- get/put_pixstream の高速化
アンローリングを中心に軽め(font にはあまり効きません)
o emx11 の使い勝手を向上
-- GENERIC_16COLOR のサポート
-- ランタイムで MAX_COLOR を変更できるように。
例: setenv MAX_COLOR 16
o md_linuxfb.h same_format acceleration
-- 実画面の update で memcpy を使えるような高速化の実装 (神木さん)
o バグ修正
-- dec192.c で mgl_memset 使ってしまったのの修正
-- mglbench バグ修正 (ほんとは clip のバグだが未修正)
o mglbench
-- 表示方法の変更 (単位を フレーム/秒に 1フレーム=480x240)
-- refresh() を入れた。
------- 018p4
o 高速化その1
-- ferom.c の最適化
-- mgl_memset2 , mgl_memxor, mgl_memxor2 の追加
-- mgl_memset, mgl_memmove の追加 (オプション)
C レベルで、アーキティクチャ向けコードを入れられるようにした。
OPTIMIZE_FOR=OPTTYPE_MIPS 等
( Build.doc を参照 )
------- 18p3
o psion5 の port をマージ (神木さん)
-- タッチパネルサポート
linux-ce と共有できるかどうかは不明 (?)
#define MGL_MOUSE_PSION5 が必要
-- dec16.c のバグ修正
o ドローエンジン dec4rn.c 追加 (やないさん)
-- 2pp reverse order / normal color (MAC 2bpp / hpcmips 2bpp NATIVE)
-- fb 共有化の準備
------- 18p2
o hpcmips MC-R500 8bpp カラーサポート
完全サポートは無理ですが 018p1 よりはまともになりました。
o mkdep.sh 修正
lib の suffix サポート
o mgl2_ 関数群 サポート(for OOP)
------- 018p1
o make 環境の見直し と 018 で入ったバグの修正
top ディレクトリから make できるように。
mkdep.sh の追加。(gcc -M の機能を利用するので、CC が指定できます
クロス対策 )
確認環境は、NetBSD/hpcmips FreeBSD-2.2.7/3.3 vine-1.1
o NetBSD/hpcmips R500 偽物カラー対応
-- 6色x3レベル + 4グレースケールしか使わないので かなり厳しい
けれど色は出る!
o emcons.c
-- memcpy での refresh のサポート(チューニングのための
フレームワークのみ)
-- SHOW_MOUSE の変数化
------- alpha-018 まで
o libmgl.a を生成するのをやめた。
- hpcmips など遅いマシン対応のため。
o FreeBSD 3.x に対応(のつもり)
conf/iself.sh を実行して 1 でないなら報告お願いします。
対応は、とりあえず FreeBSD.mk のみ。
o 640x200 サポート (のつもり)
- mglsvr -s cga
- mgterm -o cga (テスト用)
- ミニアプリ mdate,mcalc,msame,iconedit,mini_mil
o dso 版 ミニアプリ での マウスサポートのバグ修正
- フォーカスされたりはずされたときに vkattach/vkdetach するように。
o Linux fb サポート (神木さん)
- md_linuxfb.h , fb8.h その他
fb が 使えるカーネル(2.2 以上)が必須。
o WhatisMGL.doc のアップデート
- これからときどき更新するようにします。