- 1 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 14:26:32 ]
- BREW(Binary Runtime Environment for Wireless)についてのスレ
■テンプレ brew.s214.xrea.com/pukiwiki/ kintubo.kakiko.com/brew/ ■前スレ 09 pc11.2ch.net/test/read.cgi/tech/1166675852 ■過去スレ 08 pc8.2ch.net/test/read.cgi/tech/1147832791/ 07 pc8.2ch.net/test/read.cgi/tech/1137502541/ 06 pc8.2ch.net/test/read.cgi/tech/1126846736/ 05 pc8.2ch.net/test/read.cgi/tech/1119056460/ 04 pc8.2ch.net/test/read.cgi/tech/1111028365/ 03 pc5.2ch.net/test/read.cgi/tech/1096006023/ 02 pc5.2ch.net/test/read.cgi/tech/1076511398/ 01 pc2.2ch.net/test/read.cgi/tech/1011078904/ 関連情報 >>2-10
- 3 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 14:28:30 ]
- SDKダウンロードについて
IE5.5SP2以降推奨、NNでも動くかも知れないけどOperaとかMozillaとかは確実に無理。 JavaScript+ActiveX。 あと、会社名とかをちゃんと登録しないとダウンロードできません。 2Channel Inc. みたいな正式な名前。登録内容は全部英語。 Q. gccでコンパイルしたいのですが ttp://kintubo.kakiko.com/brew/gcc.html A. こちらを参考にどうぞ. Q. BREWアプリを自作して自分の携帯に入れたいのですが? A. 素人は作ることは可能ですが端末に転送することはできません あきらめるかCPなどのプロになりましょう Q. DLLにコンパイルしたものを端末に転送したのですが実行できません A. ARMの形式でコンパイルする必要があります あきらめるかARMにコンパイルできるようがんばりましょう Q. BREWて正直うんこなんですが… A. そうかもしれません しかし手段・道具によらず目的を達成するのがプロというものです がんばりましょう Q. _| ̄|○ …… A. (つДT)つ旦
- 4 名前:デフォルトの名無しさん [2007/11/19(月) 23:57:09 ]
-
/\___/ヽ / :::::::\ .| .::::| | '''''' '''''' .:::| ついに糞塚消滅まで4ヶ月となった… .|(●), 、(●)、::::| でも統合先のあうは相当糞だというし… \ ,,ノ(、_, )ヽ、,,.:::::/ /``ーニ=-'"一´\ _/((┃))_____i |_ キュッキュッ .. / /ヽ,,⌒) ̄ ̄ ̄ ̄ (,,ノ \ / /_________ヽ.. \ . ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ /\___/ヽ /'''''' '''''':::::::\ . |(●), 、(●)、.:| + | ,,ノ(、_, )ヽ、,, .::::| . | `-=ニ=- ' .:::::::| + \ `ニニ´ .:::::/ + /ヽ、ニ__ ーーノ゙\_ .| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄.| トン _(,,) あうヲタ氏ね!!(,,)_ .. /. |.. | \ / .|_________| \
- 5 名前:デフォルトの名無しさん [2007/11/20(火) 00:05:41 ]
- で、例外はどうなった?
ライブラリの初期化をしなきゃいけないかもってのはそうかもしれんな。 この辺読んで ttp://www.arm.com/products/DevTools/ABI.html 特にこの辺か "Exception Handling ABI for the ARM Architecture" ttp://www.arm.com/pdfs/ehabi.pdf
- 6 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 11:11:51 ]
- えいごよみたくなーいヽ(`Д´)ノ
- 7 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 12:57:48 ]
- 例外を有効にした時のサイズ増加は、まぁ我慢できる範囲だったので、
あとは使う方法さえ見つかれば…ですね。 RVCT3.0のコンパイラ/ライブラリガイドにCライブラリを使用しないアプリ の作成方法は書かれてるけど、C++になると複雑すぎて…
- 8 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 14:22:55 ]
- __cxa_allocate_exceptionと__cxa_free_exceptionを自分で実装してみたけど、駄目ぽ。
他の関数も実装しなきゃいけないのか、実装の仕方が間違ってるのか…
- 9 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 14:43:55 ]
- キター--(・∀・)---!!
例外動いたよ! 例外処理機構の中でメモリ確保するときに、標準だとmalloc/freeが呼ばれるのが 原因っぽかったので、上では__cxa〜を再実装したんだが、それ以外でも呼ばれてる らしく落ちてた。 そこで、malloc/freeを自分で実装してMALLOC/FREEに置き換えてみたら、あっさり 動きやがりました。 StackUnwindはきちんと行われてる模様。デストラクタについては未確認。 あとintをthrowしか試してないので、クラスをthrowした時にどうなるかも未確認。 でもBREWのエラー処理ならエラーコードさえ投げられれば問題ない気もする。
- 10 名前:10 mailto:sage [2007/11/20(火) 14:47:05 ]
- >>5氏の探してくれたドキュメントがヒントになりました。
有難うございます(*´ω`)
- 11 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 15:16:03 ]
- 乙
興奮し杉www
- 12 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 15:27:12 ]
- (´・ω・`)10じゃなくて9ですね、落ち着きます
- 13 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 15:36:07 ]
- 例外ですが、デストラクタ(派生クラス含む)はちゃんと呼ばれてるようです。
見つかった問題点 ・ヒープを消費する intをthrowすると(throw〜catchまでの階層数によらず)32+124バイトのメモリをmallocしようとする。 ・メモリリークが発生している 上記のうち32バイトの方が、アプリを終了しても解放されない。 124バイトの方は、恐らくcatchした時点で解放。 ヒープ消費については、起動時に余裕をもってメモリチェックするか、固定領域を返すように 実装すれば回避できるかもしれません。 メモリリークも、固定領域を使うようにすれば回避できますが… 正確に、どういうタイミングで、どういう計算方法によてメモリ要求サイズが決まるのか分かって いないので、固定領域化するのはちょっと落ち着きません。
- 14 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 16:55:54 ]
- throw時の消費メモリは、
32バイト(固定)、最初にthrowした時に1度だけ確保 120 + sizeof(投げるオブジェクトのサイズ)、throwする度に確保 かな? >>5のドキュメントに、投げられたオブジェクトを確保するような記述もあるし、 あとは型情報やら何やらで120バイト、なのだろうか。
- 15 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 00:16:24 ]
- 例外投げられるようになるといろいろ( ゚Д゚)ウマー
>>9 とその周り乙! うちにも RVCT3.0 が来たら試してみよう。 まあ、あと2年ぐらいは来そうにないが。
- 16 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 00:48:02 ]
- うちも・・・無理だろうなあ。
- 17 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 10:33:03 ]
- 例外を使ってエラー処理が簡略化できるってことは、開発コストが下がるってことで…
ADS1.2を持ってるなら1年15万だから…頑張れば元取れるかも?w
- 18 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 11:05:20 ]
- しかし例外取れなくてもpostする仕組みが既に出来上がっている罠('A`)
- 19 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 11:39:58 ]
- 気になってADS3.0でc++のソースコンパイルしてみたら
templateクラスが通らねぇorz 1.2ならテンプレのmakefileまま動いたのにーヽ(`Д´)ノ
- 20 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 11:53:44 ]
- >>18
問題があるとすると、そこですね(´・ω・`) 例外に対応させるとなると、今までの資産(自前ライブラリとか)の殆どを作り直すことに。 >>19 具体的にどんなコードが、どういうエラーになります? うちでは特に問題ないのですが…(元々あまりテンプレート使ってないせいもありますが)。
- 21 名前:19 mailto:sage [2007/11/21(水) 13:36:29 ]
- 追っかけてみたらこういうことらしい。
template < class T > class test { public: test(){} }; ↓↓↓RVCT3.0でコンパイルエラー template < class T > class test2 : public test<T> { public: test2() : test(){} }; ↓↓↓RVCT3.0でコンパイルOK template < class T > class test2 : public test<T> { public: test2() : test<T>(){} }; VC、RVCT1.2はどちらもコンパイルOKなんで、気づかなかった。
- 22 名前:19 mailto:sage [2007/11/21(水) 14:24:00 ]
- 更に…
template <class T> class test { public: int m_t; test() { m_t = 1; } void func(){ m_t=2; } }; template <class T> class test2 : public test<T> { test2(){ m_t = 1; // ←コンパイルエラー this->m_t = 1; // ←通る func(); // ←コンパイルエラー this->func(); // ←通る } }; templateクラスだけこんな現象が。 まだまだありそう(´・ω・`)
- 23 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 14:31:38 ]
- >>21,22
(´・ω・`)テンプレート基底クラスの扱いが面倒なのね…
- 24 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 14:39:15 ]
- とりあえず、
--implicit_typename --no_parse_templates を指定すれば、>>21,22のコードはコンパイルできそう。 どういう弊害が出るかは知りませんが(´-ω-`)
- 25 名前:19 mailto:sage [2007/11/21(水) 15:07:05 ]
- >>24
サンクス。 templateな引数持つ関数にconstな定数を与えるとエラーになったけど それ以外は通った。 上のエラーは日向君の強引なキャストで乗り切った。 借りモンの携帯10台壊すつもりで実機テストしてみる。
- 26 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 17:16:09 ]
- なんかわからんが君かっこいいぞ
- 27 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 21:56:37 ]
- 俺のほうがかっこいいよ
- 28 名前:デフォルトの名無しさん [2007/11/21(水) 22:39:23 ]
- (e)
- 29 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 23:25:50 ]
- 9 よくやった!!
焼肉ごちそうしてやる。
- 30 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 08:38:43 ]
- >>25
> 借りモンの携帯10台壊すつもりで実機テストしてみる。 10台壊したらクラッシャー19ってコテ名乗ってもいいんだからねっ!
- 31 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 09:57:58 ]
- 例外発生時の32バイトメモリリークですが、catchブロックを抜けた後に新たな例外が
発生しないことが保障されていれば、解放しても大丈夫なようです。 static void *exceptionMemory = NULL; void *malloc(size_t size) { void *p = MALLOC(size); if (exceptionMemory == NULL) exceptionMemory = p; return p; } // freeは略 EVT_APP_STOP: if (exceptionMemory != NULL) FREE(exceptionMemory); break; といった方法でメモリリーク解消&正常動作可能でした。 exceptionMemoryを解放した後にthrowしてしまうと、多分落ちます。 あとは、120+αバイトとはいえthrowするたびに確保されるメモリがヒープの断片化に どの程度の影響を与えるか…
- 32 名前:デフォルトの名無しさん [2007/11/25(日) 09:38:23 ]
- とにかく、
ドコモ以外は糞だと(ry
- 33 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 16:41:33 ]
- 糞であろうとなかろうと実際に仕事はあるんだよ
そしてそれに追われる奴もいるんだよ それが現実なんだよ Googleのプラットフォームも気になるな あれどうなるんだ
- 34 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 17:11:59 ]
- そんなの関係ねえ!
- 35 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:19:21 ]
- DoJaも大概に糞だけど、まぁそれは置いといて…
例外使えるようになると、今度は例外安全に気を使うようになる上、 下手なプログラマが書くと逆に深刻なバグを仕込みかねない諸刃の剣だな。
- 36 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:48:15 ]
- 例外は既存のソフトウェアを変更なしで組み込めるって所がうれしいんじゃないかな。
- 37 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 20:51:41 ]
- 携帯の中の人達も大変なんだろうなあ…('A`)ハァ
- 38 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:25:33 ]
- >>37
うちらは携帯の中と外の間、くらいじゃないかなw 本当の意味での中の人(ファームウェアとか作ってる人)はもっと大変らしい。
- 39 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:39:14 ]
- 中と外の板挟みで苦しんでる中間管理職です
- 40 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 21:44:13 ]
- 良いことを思いついた
お前、俺の尻で事前検証試験しろ という夢を見ました もうだめかもしれんねorz
- 41 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 22:08:53 ]
- >>40
精神科紹介仕様化?
- 42 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 22:57:35 ]
- >>41
おまいさんも病んでるなw
- 43 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:17:26 ]
- >>40
探偵ナイトスクープで、携帯電話のアンテナを尻の穴に入れると 電波が遮断されるとあったけどそれで事前検証する気か?w
- 44 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 01:53:11 ]
- BREWで使えるXMLパーサってありますか?
- 45 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 04:37:20 ]
- 1.Boost.Spirit のようなパーサを使って XML の EBNF を読みながらパーサを自作
2.正規表現検索が出来るクラスをどっか(Boost とか ATL とか)から持ってきて正規表現でパース 3.全部独自でパース 4.そもそも XML 使わない 5.そもそも BREW やらない 6.五寸釘を打ち付ける
- 46 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 04:42:38 ]
- Xerces はさすがに規模がでかすぎるか?
必要な部分だけ抜き出せるといいんだが……。
- 47 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 08:05:29 ]
- XMLのどの部分まで必要なのかにもよるけどなぁ。
- 48 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 11:10:31 ]
- ソフィアクレイドルのパーサ使ってる人はいないかな?
- 49 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 14:00:23 ]
- 本日のトリビア。
W41SH/W51SH は サブスクライバIDの取得で第三引数に40より小さい値を入れると たとえサブスクライバIDが指定サイズ内に収まったとしても 戻り値がSUCCESSで値は空文字列になる。 char sid[40] = {0}; // 39文字で普通収まるんだが int len=sizeof(sid)-1; // 39文字を指定して if( ISHELL_GetDeviceInfoEx( pMe->a.m_pIShell, KDDI_SUBSCRIBER_ID, (void**)&sid, &len ) != SUCCESS ) { // ココには来ないが } if( STRLEN( sid ) == 0 ) { // ココに来る }
- 50 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 14:27:06 ]
- >49
トリビアでも何でもない。やり方と戻り値の意味を間違えてる。 ISHELL_GetDeviceInfoEx()の戻り値は項目の値をサポートしてるかどうかによる。 KDDI_SUBSCRIBER_IDはサポートしている項目名(定義済みの値)なのでSUCCESSが返る。 その項目名が示す具体的な値を取得するには、char[]型の場合、 まず第3引数にNULLをセットして、格納するのに必要なサイズを第4引数で受け取る。 その上で再度ISHELL_GetDeviceInfoEx()によって目的の値を取得する。 「39文字で普通収まるんだが」というやり方をするなとガイドに書いてある。 実機側が指定する正確なサイズでないと値が取得できないという機種が依存情報にも出てる。
- 51 名前:デフォルトの名無しさん [2007/12/05(水) 21:52:12 ]
- >>49
>>50 とりあえずここでするにはかなりぎりぎりな内容なわけだが。 49はくだらない間違いをしていることと、ここにそのねたを書いていることと、 二重でだめだめではないかと。
- 52 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 00:17:18 ]
- トリビアって久しぶりに聞いた
- 53 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 00:22:21 ]
- トリビアなら先週特番でやったよ。
バズーカ対防弾ガラスとか面白かった。
- 54 名前:19 mailto:sage [2007/12/06(木) 13:29:10 ]
- さすがゴッグ(E03CA)だ。なんともないぜ!!
今更ながらウチでも例外動作確認。 元々makefileが1.2のVSAddin生成物の流用だったのが問題で 従来のc++のアプリが動かなくなったんで、 ここと同等になるようmakefile大改修。 ttp://brewforums.qualcomm.com/ja/showthread.php?t=1127 加えて、コンパイルオプションに--exceptions --rw_base 0x208000 追加、 malloc/free/mainの3つを再定義で動いた。 #--rw_base 0x208000 はクラス配列を扱う場合にもあった方が無難 ちなみに>21に関してはコンパイルエラーが正しいらしいので直した。 >22はやっぱりヘンなので --implicit_typename --no_parse_templates を適用。 無事動作した。
- 55 名前:ntroot mailto:sage [2007/12/06(木) 17:54:59 ]
- >>54
乙〜 例外、そちらでも使えたんですね。 これでQのフォーラムあわせて実動報告3件、かな? makefileに関しては、RVCT3.0の場合PATHを設定してくれるから、 ARMCCとかフルパスで記述しなくてもarmccだけで動いたりw rw_base=のアドレスは、とりあえずro_baseと被りそうにないアドレスを 適当に選んでますが、ro_baseとの差が2MB分なので今後アプリサイズの 上限が上がってきたりすると、ぶつかるかもしれません。
- 56 名前:ntroot mailto:sage [2007/12/06(木) 20:10:53 ]
- RVCT3.0の最適化がよく分からん…
リンカに--feedback指定して未使用関数チェックすると、ちゃんとマークされてる関数(a)が mapファイル見ると残ってる罠。当然、その関数しか呼び出してない関数(b)まで芋づる式に リンクされてる。 しかしIIMAGE_Notifyを外すと、関数(a)がリンクされなくなり、それに伴って関数(b)も消える。 (´・ω・`)どーなってんの
- 57 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 21:50:10 ]
- >>56
つまり、糞
- 58 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 00:48:50 ]
- もはやBREW上でJava動かせるやつ買ったほうが早くね?
既存のやつは勝手アプリ用だから商用アプリで使わせてくれないけど、某社が売ってるJavaVMなら問題ないでしょ 例外とかも全部できるし
- 59 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 01:22:30 ]
- Brewレベルでしかいじれないハード絡みを除けばそうかもしれない
- 60 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 03:47:36 ]
- 何本かこなして、フレームワークなり何なり整ってりゃ
大して開発期間かわらんと思うんだが。 そりゃ、やる前は時間かかるとは思ってたが。 いざやってみりゃ大して変わらない。
- 61 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 09:57:46 ]
- java変換だとtcpも使えないしな
まぁアプリによっては変換したほうが楽ではある。
- 62 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 00:35:41 ]
- >>61
某社のJavaVMにはTCP用のクラスも用意されてるわけだが
- 63 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 22:50:10 ]
- すべてのにあればな
- 64 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 16:26:57 ]
- まだ勉強し始めなので初歩的な質問で申し訳ありませんが、
ITRANSFORM_TransformBltComplex を使ってクリッピング描画をしたい時は、 引数の転送元の幅や高さを計算して 描画するしか方法がないんでしょうか? 例えば、とあるグラフィック素材をITRANSFORMを使って 拡縮回転描画する時に、決められた短径領域範囲内のみ 描画領域とし、それ以外は描画したくない時に、 どのようにすれば良いのかが分かりかねています。
- 65 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:19:45 ]
- >64
変形は変形、描画は描画 ITRANSFORM_TransformBltComplex()は変形操作のための関数 描画のクリッピング指定はIDISPLAY_SetClipRect()で ていう質問でいいんだよな
- 66 名前:64 mailto:sage [2007/12/12(水) 18:20:44 ]
- ITRANSFORM_TransformBltComplexで変形した素材を
IDISPLAY_SetClipRectを用いてクリップ出来るようにするには どのような手順で描画すれば良いのかと言う事なんですが、例えば ttp://plusd.itmedia.co.jp/mobile/0312/05/transformcomplex.html のような描画をしたとして、IDISPLAY_SetClipRectを使えるようにするには どのような手順が必要なんでしょうか?
- 67 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 19:34:14 ]
- 俺も質問の意味がよく分からないんだけど
クリップ領域を変形したいって意味か? 例えば、斜めの長方形領域をクリップしたいとか。 マスク画像用意するくらいしか思いつかないけど他にも方法あるのかな。
- 68 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 20:10:18 ]
- ITransform使ったことないから分からんけど
IBITMAP_QueryInterfaceの第一引数に デバイスビットマップ以外のIBitmap*を指定して そのIBitmap*をIDISPLAY_BitBltとかで描画してやれば とりあえず普通のクリッピングはできるんでね?
- 69 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 20:14:48 ]
- >66
どのような手順も何も…変形して、クリッピング指定して、描く、だけ 例えば、長方形の画像を平行四辺形に変形して、 その画像内の一部分である正方形領域を画面に出したいとすると… 1.まず長方形の画像をITRANSFORM_TransformBltComplex()で平行四辺形に変形する 2.IDISPLAY_SetClipRect()で目的の描画位置に正方形領域を指定する 3.1で変形した画像(平行四辺形)を画面に描画する 4.画像は平行四辺形ではなく、正方形領域で切り取ったかのように描画される 画像の変形のさせ方は>66のリンク先の例を見ればわかるね IDISPLAY_SetClipRect()の使い方はAPIリファレンスに書いてある 画像の描画自体はIDISPLAY_BitBlt()とIDISPLAY_Update()だよね じゃぁできたじゃん
- 70 名前:66 [2007/12/12(水) 21:26:09 ]
- >>67
クリップ領域を変形させたいのではなく、 変形させた画像を短径クリップ領域内だけに描画させたいと言うことです。 >>68 なるほど、第一引数に デバイスビットマップ以外のIBitmap*を 指定できれば、IDISPLAY_BitBltでクリップが使用できますね。 >>69 それぞれ単体での使用方法は分かるのですが、具体的に 組み合わせる時にどのように組み合わせるかが分からないのです。 ITRANSFORM_TransformBltComplex変形とありますが、 指定したリンク先のサンプルではITRANSFORM_TransformBltComplexの時点で 指定したデバイスビットマップへ転送(描画)してしまうと思いますが、 この転送先を>>68でおっしゃってるように、IBitmapへ変えて 変形後の転送先で指定したIBitmapを IDISPLAY_BitBltで描画すると言うことでしょうか?
- 71 名前:66 mailto:sage [2007/12/13(木) 09:57:06 ]
- >>68さんのヒントからひとまず実装する事が出来ました。
ただクリップする為だけにビットマップを用意し そこへ変形描画をしてから、さらに変形描画された ビットマップを描画すると言うステップを考えると、 何か他の手を考えた方が良い気もしました。 いずれにしましても、皆さまありがとうございました。
- 72 名前:デフォルトの名無しさん [2007/12/13(木) 20:14:38 ]
- どのBREWアプリも終了ダイアログ同じなんだけど、なんかAPIでも
あるんですか?
- 73 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 22:32:54 ]
- >>72
CPならドキュメントしっかりよめ。書いてある。 (正確にはなんだったかのreturn値だったか引数だったか...
- 74 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 23:26:29 ]
- 全然読んでねえじゃんw
- 75 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 12:28:46 ]
- >>72
良いことを思い付いた お前、俺のケツで事前検証試験しろ
- 76 名前:デフォルトの名無しさん [2007/12/14(金) 14:45:53 ]
- まさかこれのこといってる?
(1)ISHELL_CreateDialog()関数をコールしてダイアログを作成します。 (2)YourApp_HandleEvent()関数で、次のイベントを処理するか、またはイベントに対してTRUE を返しま す。 case EVT_DIALOG_START: return TRUE; case EVT_DIALOG_INIT: return TRUE; case EVT_DIALOG_END: return TRUE; ダイアログの作り方じゃなくて、端末に入ってるアプリの 終了画面が同じだからなにあるののかきいてるんだけど^^;
- 77 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 14:59:37 ]
- だからドキュメント読めと
- 78 名前:デフォルトの名無しさん [2007/12/14(金) 15:53:07 ]
- 見てるのですが見つかりません。。
どの辺のこといってますでしょうか? 教えてください><
- 79 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 16:03:18 ]
- ドキュメントの中身はKDDI CONFIDENTIALなので、ここには書けん。
18ページ付近。
- 80 名前:デフォルトの名無しさん [2007/12/14(金) 16:27:24 ]
- まじか・・・
みつからん。。 ページ数が違うのか俺の見てるところが違うのか。。 内容いわなくていいからなんのドキュメントみてます?><
- 81 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 16:47:38 ]
- プログラミングかサービスじゃね?常考
- 82 名前:デフォルトの名無しさん [2007/12/14(金) 17:05:47 ]
- プログラミングばっかみてました^^;
サービスにありましたw ありがとうございます^^
- 83 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 19:31:33 ]
- >^^;
>w >^^; 貴君はもう少し落ち着いた方が良かろう
- 84 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 11:28:55 ]
- 某端末だけIFONT_DrawText()で直接ビットマップに描画できない(;´Д`)
- 85 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 11:33:43 ]
- そんな糞は捨てちまえよ!!
と言いたいが、処理に差し支えなければ、透明PNGでIImage_Draw()を IFONT_DrawText()の後に実行してみてくれ もしかしたら、その現象の場合も回避できるかもしれん
- 86 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 11:51:54 ]
- つまりInvalidateすればいいんじゃね
- 87 名前:デフォルトの名無しさん [2007/12/17(月) 11:56:13 ]
- みなさまはSMSからアプリ起動方法のテストはどのようにやってますでしょうか?
エミュレータじゃなくて実機でのやり方わかるひといませんか?><
- 88 名前:84 mailto:sage [2007/12/17(月) 13:23:28 ]
- >>86
(´・ω・`)IBITMAP_Invalidate()じゃ駄目でした。 >>85 移植なこともあり新規リソースを持たせるのは難しいので、 透明PNGの描画は無理そうです 諦めてIDISPLAY_SetFont() -> IDISPLAY_DrawText()します・・・
- 89 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 15:36:55 ]
- >87
SMS送信用のアプリ作って別端末から送ってる
- 90 名前:87 mailto:sage [2007/12/17(月) 17:39:24 ]
- >89
やっぱりそのやりかたしかないんですね・・・・ もうちょっと楽なやりかたなんてないですよね?^^;
- 91 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 18:52:07 ]
- >>88
DDBに描画してる?
- 92 名前:84 mailto:sage [2007/12/17(月) 20:19:11 ]
- >>91
DDBですね。 IDISPLAY_GetDeviceBitmap()に対してIBITMAP_CreateCompatibleBitmap()で生成したものです。 Javaからの移植で、オフスクリーンに描画ってやりたかったんですが… (´・ω・`)既にIDISPLAY_SetFont()/IDISPLAY_DrawText()に書き換えてしまいました。
- 93 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 12:08:49 ]
- 前Javaやって、今BREWの開発をやっているけど、なんだか面倒くさいねぇ。
面倒くさいのは分かっていたことなんで単なる愚痴です。 とりあえずgnudeでコンパイルして実機動作を確認しました。 gnudeでコンパイルする時、漢字の2byte目が\はエラーや文字化けするけど、 batで実機用のフォルダにソースをコピーし、\を\\に置換するプログラムでソースを書き換え、 makeする。って一般的な手法ではないんかな? リソースを使うのが妥当なんだろけど、 JAVAからの移植なんでソースの修正を最小限に抑えたかったんで、そうしたです。 検証を通すプログラムにするにはまだまだ先は長い・・
- 94 名前:ntroot mailto:sage [2007/12/18(火) 13:22:31 ]
- 色々面倒ですよ。
Sigの期限切れやEVT_APP_STARTでFALSEを返した時以外は 端末は何のエラー画面も持ってないから、アプリで実装しなきゃ ならないとか。 例外に関してはRVCT3.0で使えるようになったので、エラー処理 そのものはかなり楽になりましたけどね。 一時期gnudeも色々議論されてましたが、結局みんなADS1.2や RVCT3.0に移ったのかな?最近はあまりgnude関連の話題は出 ませんねぇ。
- 95 名前:93 mailto:sage [2007/12/18(火) 14:43:25 ]
- 最初はEVT_APP_STARTでメモリー確保や画像/音の読み込みをやれば
良いかと思ったのだけど、リソースからの画像読み込みに結構時間がかかるんだね。 結局、ヒープの空きチェックで不足の時だけfalseを返すようにしたです。 その後はTimerで画像を数個単位に分割して読み込んでいるんだけど、 何個に分割するかはどうやって計算するのかなぁ。やはり時間計って1秒 超えそうなら終了する処理を組み込むべきだろか。 timer間隔を最短にし1個ずつ読み込むのもアリだろけど何となく嫌なんだよね。 最大の難関はレジュームだなぁ。まだ未実装でどうするか検討中だけども、 どこまで解放すべきなのかが考えどころ。 使用ヒープ(約1.3M)のほとんどを画像が占めているけど、 画像を解放してしまうと再開する時に数秒かかってしまうし。 あとはbrew2.1に対応するかかな。brew APIの互換性はありそうだから アプリ1本でいけると思ってたけど、拡張モジュールに互換性がないとは・・。 しかも各SDKでコンパイルし直さないといけないとは・・。 実機テストのしづらも辛いところだなぁ。他社のようにSIMカード差し替えで サクッとテストできればいいのだけどね。 いやぁ愚痴った愚痴った。仕事しよう
- 96 名前:ntroot mailto:sage [2007/12/18(火) 15:15:54 ]
- 本来PNG(gzip)の展開は重いものです。
Javaの場合、マルチスレッドなのでそれが気にならなかっただけ じゃないでしょうか。 ISHELL_Resume()で登録したコールバックの優先度が低かった はずなので、そっち使えばCPUが空いてる時(というよりAEEが 暇な時?)に呼んでくれると思います。 サスペンドは、うちではKDDIから解放必須に指定されているものを 除いては解放してないです。再読み込みに時間かかるし、最近の 端末は搭載メモリも豊富なので多少リソース握ったままでも支障 なく動いたりしますし。 Brew3.1の場合他アプリが大量のメモリを要求した場合、サスペンド 状態のアプリは勝手に終了させられたりもするので、あんまり難しく 考えなくても大丈夫じゃないでしょうか。 Brew2.1は、対応にかけるコストに見合わない気が… IMEDIA_Release()の挙動とか、3.1と挙動の違う部分が結構あったり。
- 97 名前:ntroot mailto:sage [2007/12/18(火) 18:41:29 ]
- 例外を使うためにmain()を再定義すると、その分実行ファイルサイズが
増えますが、リンカオプションとして--startup AEEMod_Loadを指定する ことでmain()がリンク時に削除されるようになる模様。 約800byteの節約(`・ω・´)
- 98 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 20:44:11 ]
- >>93
> batで実機用のフォルダにソースをコピーし、\を\\に置換するプログラムでソースを書き換え、 > makeする。って一般的な手法ではないんかな? 10年くらい前のCの解説書では常識だった。
- 99 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 21:18:41 ]
- どうせ発生する箇所はわかってるんで、どうしてもそういった文字入れたければ
AEE_SIMULATORの定義でプリプロセッサわけしてる。 画面に表示するようなやつは、あらかじめAECHAR変換しておくけど。
- 100 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 21:32:38 ]
- >>96
なるほど、画像などは解放してないんですね。 それでいこう! 2.1は切ろう・・かなぁ
- 101 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 22:41:27 ]
- 2.1はサウンドよりは画面デザインかなぁ。
フォントサイズがでかいから面倒くせぇ。
- 102 名前:ntroot mailto:sage [2007/12/18(火) 23:00:48 ]
- >>101
ソレダ。何か忘れてると思ったら、2.1の時はフォントサイズが機種によって 微妙に違うんだった。同じスモールフォント(ClassID)指定しても、違うサイズ。 結局一番大きいフォントに合わせてレイアウトして、他端末では行間スカスカ って実装に落ち着いたり。
- 103 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 11:10:14 ]
- >>101
フォントサイズが違うのは痛いなぁ。 12ドットに決め打ちして作ってるデザインがあるし。 13ドットまでなら何とかなるけど、14以上だと作り直しかな。 2.1を切る理由にしよう
|

|