fltk

fltk入門ビデオ

syoyo さんに、fltk ネタをリクエストされたが...ない。 とりあえず、久しぶりに行ったらチュートリアルのビデオがあったので、紹介します。英語が分からない方でも、VC++ の操作方法が分かるので、ぜんぜん問題無しです。ライブラリでのこういった取り組み…

ハメメモ

メッセージにハメがあるので、忘れないうちにメモ。 FL_MOVE マウスのドラッグを、このメッセージで処理することはできない FL_DRAG マウスのドラッグを得る場合はこの関数を使う。int handle() 関数FL_PUSH, FL_RELEASE, FL_DRAG が来た場合、1 を返さない…

グローバル変数を使わずにコールバックから親クラスを取得する

fltk、特に fluid を「素直」に使うと、グローバル変数が大量発生してさながら C プログラムになってしまう。fltk は C になってしまうのはしょうがないのかとあきらめていたが、やっと解決法が見つかった。とても fltk らしい方法だ。fluid でクラスを作り…

.flファイルのVC++7.1からのコンパイル指定

サンプルだとファイル名を直打ちしているが、マクロを使って綺麗に書きたい。 fluid -c $(InputFileName) あと、さっきの#include "stdafx.h" を追加するやつをかませるには、さっきのスクリプトをmodifyFluid.py として、以下のように書き換える。 fluid -c…

ロジック部分を.flファイルから切り離す

fluid を使っても C++ コードがかけるので、しばらくそれを使っていたが、レイアウト以外はテキストエディタを使いたい。fluidが便利なのは、せいぜいレイアウトどまりだ。そんなときは、各種イベント関数を「function (丸いアイコンのやつ)として作った後、…

VC用くずスクリプト

コマンドラインから第一引数で受け取ったファイルの先頭に #include "stdafx.h" を挿入。 import sys f = open( sys.argv[ 1 ], 'r' ) t = f.read() f.close() f = open( sys.argv[ 1 ], 'w' ) f.write( '#include "stdafx.h"\n' ) f.write( t ) f.close() …

利点・欠点

読みやすさより、書きやすさ優先ではあるが、Perlほど汚くはないと思う。利点 すごく拡張しやすい すごく書きやすい 速い 小さい 出来上がるコードサイズが小さい ライブラリのソースコード量が少ない GL との親和性が異常に高い GLUT エミュレーションまで…

スクロールビュー?

仮想サイズを持っていて、実際のウインドウサイズよりも仮想サイズの方が大きい場合はスクロールバーを出すというよくあるWidgetがない。MFC でいうところのhttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html…

resizable()の規則に戸惑う...

画像を使って説明すれば楽なのですが、はてなはじゃんじゃん画像を置けないので、文字で許してください。一般的な GUI ライブラリには、たいてい ALIGN_LEFT, ALIGN_RIGHT ... など、ウインドウが拡祝された際のアルゴリズムを指定できるようになっている。…

プロジェクション行列を作る際のハメ

プロジェクション行列は一定なので、起動時に一回作るだけで終わろうと思ったのですが、うまく行きませんでした。原因は、 std::auto_ptr window( new Fl_Gl_Window( 640, 480 ) ); window->show(argc,argv); glMatrixMode( GL_PROJECTION ); glLoadIdentity…

適当に60フレーム固定

Windows専用。 DWORD lastTime = timeGetTime(); while ( 1 ) { ... // 何かの処理 window->redraw(); Fl::check(); DWORD curTime = timeGetTime(); const DWORD frameTime = 1000 / 60; // 1フレームの長さ const DWORD strictWaitTime = 2; // 頻繁に Sl…

キーのポーリング

左キーを検出する場合は、こんな感じ。 if ( Fl::get_key( FL_Left ) ) { printf( "l" ); }

GLウインドウを作る

こんな感じ。 Fl_Gl_Window *window = new Fl_Gl_Window( 640, 480 );

初ウインドウ

fltk でダブルバッファリング & 線を引くってのをやってみました。 #include #include #include #include #include class TestWindow : public Fl_Double_Window { void draw() { fl_color( FL_WHITE ); fl_line( 0, 0, w(), h() ); } public: TestWindow( i…

インストール

fltk をいじり始めた。いきなり無謀にも RC1 というのがあったので、ダウンロード。 libpng zlib libjpeg をインストールして、コンパイル。なんかこれらのライブラリの基本事項なのかもしれませんが、libpng??.zip を png.zip に、libjpeng.lib を jpeg.lib…