らっぱ のバックアップソース(No.18)


[[FrontPage]]~
[[あれやこれ>#b37506f3]]~
[[作った/作っているもの>#ta5e6842]]~
[[更新履歴>#t1d3e97d]]~
[[直近TODO>#l9dc2a14]]~
[[こんなこといいな、できたらいいな>#n1b80235]]~
[[ふと思ったことをメモ>#nd12fe3d]]~
[[コメント>#s2cd96f2]]

*あれやこれ [#b37506f3]
- [[ひげぽんさんの日記で gpaint が紹介されたよ!:http://d.hatena.ne.jp/higepon/20050423/1114257960]]

*作った/作っているもの [#ta5e6842]
- gtimer(20050403)
-- 開発環境:MonaADK0.3.0a5
-- 指定秒数をカウントダウンするだけ。
-- BayGUI の練習で作成。
- gpaint(20050416)
-- 開発環境:MonaADK0.3.0a5
-- マウスでお絵かき

*更新履歴 [#t1d3e97d]
- gpaint
--20050424β(Nightly)
---子ウインドウの「閉じるボタン」を消したよ!
---イチオウ何回でも子ウインドウを開けるようになったよ!(根本的な部分はまだ間違ってる気がする)
---子ウインドウを開くとマウスカーソルが消えちゃうよ。。。(表示されなくなるだけで、操作はできる。)
---子ウインドウを開いて親をクリックすると親がunfocusedのまま前に表示されるよ。。。(ウインドウが重なった状態だと操作不能に陥る)
--20050423β(Nightly)
---色指定を子ウインドウにしたけど動きが変だよ!
---子ウインドウを開くとマウスカーソルが消えちゃうよ。。。
---2度目に子ウインドウを呼んだときにvisibleにならないよ。。。
--20050416(Release)
---スライダーがかっこよくなったよ!
---スライダーの端もマウスで指定しやすくなったよ!
---起動時に画像サイズを指定できるようになったよ!
#ref(20050416.jpg)
--20050410(Release)
---スライダー&テキストボックスを管理するContainerクラスを作ったよ!
---テキストボックスでも色を指定できるようになったよ!
---選択した色をプレビューできるようになったよ!
---スライダーの表示位置がちょっと変だったから直したよ!
--20050409_2(Release)
--- スライダーでRGBを指定できるようになったよ!
--- baysideさんに教えていただいたお陰で描画部分が別部品になったよ!
--- スライダーをドラッグできるようになったよ!
*直近TODO [#l9dc2a14]
- gpaint
-- 線幅変更
-- 子ウインドウを作成
--- 子ウインドウを開くとマウスカーソルが消える問題を要修正
--- 2度目以降に子ウインドウを開いたときに落ちる問題を要修正
--- 親ウインドウをクリックすると親が操作不能のまま前に出てくる問題を要修正
--- %%子ウインドウを閉じると親も道連れになる問題を要修正%%(済)
-- %%色指定を子ウインドウに移動%%(とりあえず済)
-- %%起動時に画像サイズ/背景色指定%%
-- %%スライダーをMacのUserIntarfaceに合わせる%%(済)
-- %%色指定用テキストボックスに色を直接入力できるようにする%%(済)
-- %%色のプレビューを表示%%(済)
-- %%スライダー&テキスト&テキストボックスを1まとめにしてクラス化する%%(済)
-- %%スライダ部分だけ背景色が浮いてるのをなんとかする。%%(済)
-- %%描画用バッファを分離(将来のファイル書き出しのため)%%(済)

*こんなこといいな、できたらいいな [#n1b80235]
- gpaint
-- ファイルからの画像読み込み
-- その他通常のペイント系ソフトの機能
-- フォトレタッチ系機能(gimpから移植した方が早い?)
-- ネット連携(!?)

*ふと思ったことをメモ [#nd12fe3d]
メモレベルなので、解決を期待しているわけでも、解決しようとしているわけでもないよ。
*** gpaint [#v492c9c6]
-QEMUで動かすと死ぬほど重い。
-スライダを動かす度に無意味な再描画が2回走っているような気がする。
-マウスでスライダの両端を指定しにくい。
--対応完
*** QEMU [#i9975940]
-重い。。。
*** BayGUI : 全般 [#bab8df40]
- Java のつもりで書いても違和感がほとんどない
-- Cの関数を混ぜて使えるので、個人的にはJavaより使いやすい
*** BayGUI : Container [#y3d5f639]
- Container がマウスドラッグのイベントを子Controlに渡してくれない
-- 今のところドラッグの必要なControlが存在しないからそういう仕様になっている?
-- 自分で親Windowでイベント拾って子供に渡すことで対処完了。
- Container を継承したクラス(A)をWindow(B)にaddした場合、AにaddしたControl(C)のonEventが呼ばれない
--AはControlとしてBにaddされているのでこの動作は正しい
--AのonEvent内でpostEventのような処理を行うことで対応
--他にもっとキレイに対応できる方法はないものか?
*** BayGUI : Control 系 [#haff95ac]
- ListBox の項目数が増えると ListBox 自体の高さを増やす必要がある
-- プルダウン or スクロールバー付きのタイプがあると画面がすっきりしそう。
--- すいません怠慢です。面倒なので放置中(爆) -- [[bayside]]
--- 私も自作しようとして後回しにしてしまいました。 -- らっぱ
- Window クラスの onEvent 関数が if 文の羅列になりがち
-- しょうがない、っていうか、アプリ側の実装次第かな。。。
--- Javaのリスナーモデルをそのまま移植すれば解決します。でもクラスがすごく増えてしまうので微妙・・ -- [[bayside]]
--- そうなんですよね。複雑になるとかなり詳細なドキュメント作らないと誰も使えなくなっちゃうし。 -- らっぱ
- 子ウインドウが欲しい
-- これも自作しようとして放置
-- 全部のツール/アイコンを1画面に収める(MS Office系)か、子ウインドウを並べる(Adobe系)かも意見の分かれるところかも。

**スライダーの代わりにスクロールバーを使用してみると -- bayside [#b0fa41f5]

#ref(20050410.jpg)

こんな感じになります。ドラッグができないのでちょっとだけ使いづらいですが、
見た目もそこそこだし、楽ですよ。

    // 色指定スライドバーを作成
    m_r = new Label("R");
    m_r->setRect(10,5,10,20);
    add(m_r);
    m_redSlider = new Scrollbar(Scrollbar::HORIZONTAL/*0,0,255*/);
    m_redSlider->setMaximum(255);
    m_redSlider->setRect(30,5,getWidth()-60-COLOR_WIDTH,20);
    add(m_redSlider);

    m_g = new Label("G");
    m_g->setRect(10,25,10,20);
    add(m_g);
    m_greenSlider = new Scrollbar(Scrollbar::HORIZONTAL/*0,0,255*/);
    m_greenSlider->setMaximum(255);
    m_greenSlider->setRect(30,25,getWidth()-60-COLOR_WIDTH,20);
    add(m_greenSlider);

    m_b = new Label("B");
    m_b->setRect(10,45,10,20);
    add(m_b);
    m_blueSlider = new Scrollbar(Scrollbar::HORIZONTAL/*0,0,255*/);
    m_blueSlider->setMaximum(255);
    m_blueSlider->setRect(30,45,getWidth()-60-COLOR_WIDTH,20);
    add(m_blueSlider);

** コメント [#s2cd96f2]
#comment(below)
-4/23版試してみました。ちょっと動作が思いですがこれからいろいろと機能が増えるのを期待しています。重いのはMonaかBayGUIが悪いのかもしれませんね。 -- [[ひげぽん]] &new{2005-04-23 (土) 21:29:57};
--4/23版は色々動きがおかしいですね。やっぱりサブウィンドウはちゃんと上位クラスの動きまで見直して作り直さないと駄目かも。 -- らっぱ
-qemuだと確かに重いですよね・・。部品内の部分更新をGUIサーバー側でサポートしたり、αブレンドを使わないときの描画最適化を考えないといけないようです・・。ちなみにbochsだともっっっっと死ねます(汗) -- [[bayside]] &new{2005-04-10 (日) 15:43:26};
--あ、スクロールバーになってる!スライダーはスクロールバーのソースを参考にして作ったんですが、やっぱりこのユーザーインターフェイスには勝てないなぁ。。。Macのスライダーってどんなんでしたっけ?
-スライダーかっこいい!! -- [[ひげぽん]] &new{2005-04-09 (土) 13:00:04};
--ありがとうございます。やったね、褒められたよっ! -- らっぱ
-Graphics *offg = new Graphics(new Image(320, 240)); とかでオフスクリーン作れますよ>らっぱさん あとは g->drawImage(image, x, y); に渡してやるだけです。 -- [[bayside]] &new{2005-04-03 (日) 23:28:21};
--はっ、、、いきなり解決してしまった。。。 -- らっぱ
--参考にして描画用Control作ってみました。 -- らっぱ
-0.3.0a5に合わせて修正しておきます。CVSって何かアカウント必要なんでしたっけ? -- [[らっぱ]] &new{2005-04-03 (日) 16:10:39};
-- sourceforge.jpのアカウント取得後私の方で設定をすればCVSにcommitできるようになります。Paintの今後のソースツリーへの追加はbaysideさんと調整してもらえると助かります。CVSアクセス権が必要なときはここに書いてもらえればすぐにでも対応させていただきます。 -- ひげぽん
-- 教えて君みたいなことしてすみませんでした。アカウント取りました。「rappa」です。今後ともよろしくです。 -- らっぱ
--いえいえ。追加してみたのでCVSアクセスできると思います。paintもある程度形になったとらっぱさんが判断した時点で私の日記で紹介出来ればと思います(もしいやでなければ)-- ひげぽん
--早い!CVSでアクセスできることを確認しました。ご紹介頂いても恥ずかしくないようなものを作れるように頑張りますです。(週末しか作業できないのでのんびりした開発になっちゃいますが。) -- らっぱ
--確認ありがとうございます。お互いのんびりマイペースで行きましょう!。-- ひげぽん
-およよ。恐縮です。ライセンスは何も主張する気はないので、BayGUIの一般的なアプリに合わせてください。 -- [[らっぱ]] &new{2005-04-03 (日) 16:06:06};
--gtimerをCVSに追加させていただきました。ライセンスは一般的なアプリにのっとり、BSDライセンスにさせていただきました。gpaintも完成度があがればぜひ掲載したいです。http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/mona/Mona/apps/baygui/gtimer/ -- bayside
--ありがとうございます!gpaintはまだまだこれからって感じですが、作ってるうちにAPIの方に欲しいI/Fなんかも出てきそうなので、フィードバックできるように整理して行ければと思ってます。 -- らっぱ
-MonaADK0.3.0a5をリリースしました。インターフェースがちょっと変わってしまったので数行手直しが必要になっちゃいますが、こちらで動くことを確認しました。よろしければMonaのCVSに入れようかと思いますが、ライセンスはどうすればよいでしょうか>らっぱさん -- [[bayside]] &new{2005-04-03 (日) 14:39:22};
-単色で線が引けるようになりました。えらいぞ自分。 -- [[らっぱ]] &new{2005-04-03 (日) 03:41:48};
-ペイント系はまだありませんね。ぜひ挑戦してみてください。 -- [[ひげぽん]] &new{2005-04-02 (土) 23:04:47};
-monapiの雰囲気は掴めてきました。ペイント系ソフトってどなたか作ってたりしますか?誰も作ってなかったら挑戦してみようかと思ってるんですが。 -- [[らっぱ]] &new{2005-04-02 (土) 23:02:35};
-ようこそ。タイマー作成ありがとうございます。 -- [[ひげぽん]] &new{2005-04-02 (土) 08:58:22};

トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.019 sec.