Java
docomo でアフィン変換を掛けて描画するためのクラスを作ってみた。 com.nttdocomo.opt.ui.Graphics2 に対応してることが前提で作ってる。 対応してない場合はアルファとか加算合成とか使うのは無理だけど、DoJa-3.5 以降ならアフィン変換掛けて描画するのは…
環境は DoJa-5.0。リソースのダウンロードと書き込みを別々でやってたら無駄じゃね?とか思ってやってみた。 ちょっといじればいろいろなことに使えるはず。もう少し汎用化できるなら再利用できるクラスにしてもいいような気はする。 各スレッドでのデータの…
public final class FiniteBufferQueue { int first; int size; final byte[][] bufs; public FiniteBufferQueue(int size) { bufs = new byte[size][]; } public synchronized void push(byte[] buf) throws InterruptedException { push(buf, 0, buf.lengt…
インターフェースは C++0x で追加されるものを参考にして、実装は Future パターンまんまです。 public final class FutureException extends Exception { private Exception inner; FutureException(Exception inner) { this.inner = inner; } FutureExcept…
以前に BREW で Boost.Coroutine を使えるようにした関係で、それを Java に移植するのが難しくなってしまったので、Java で Coroutine っぽく使えるようなクラスを作ってみました。 当然スタック切り替えなんてできるわけが無いので、内部的にはスレッドを…
昔書いた、携帯用の Math クラスが出てきたので貼り付け。 ProGuard もかけてやると、生成される class ファイルは 2 キロバイト弱になるようだ。 コサインテーブルを静的に持ったりなんかするとすごく容量を取るので、昔はこういうクラスは重宝したんだけど…
BREW で Java 風のクラスを作る BREW で Java 風のクラスを作る(2) Java っぽく作るためには、メモリがどこからも参照されなくなったら自動的に解放されるようにする必要があります。 方法としては、 GC を実装する。 AddRef(), Release() を使用する。 スマ…
BREW で Java 風のクラスを作る 前回のプログラムの問題点は、キャストするたびに QueryInterface() を呼び出さなければならず、Java の文法とはかけ離れた処理を行わないといけなかったことです。 これを自然な書き方にするためには、内部で QueryInterface…
424 :デフォルトの名無しさん :2007/05/07(月) 22:37:54 Javaのインターフェースのような振る舞いをさせたい場合はどうしたらいいんだろう? クロスキャストで質問なんだが。。。 Javaからの移植を今やってる。で以下の継承ツリーを持つクラスがある。 Obj…
最近知ったんだけど、Java の場合、描画速度は描画面積に(大体)比例するんじゃなくて、描画面積と描画枚数に(大体)比例するらしい。 だから、100枚の画像で使って 240x240ドットの画面を描画するよりは、240x240 の画像1枚を貼り付けた方が、描画面…
id:melpon:051231#p2のやりかただと、メモリの解放に問題があるので不可。 結局ポインタにするしかないのかなぁとか思ってたんですが、どうやら Graphics getGraphics(); このままでいけるみたいです。 今までは、 // Graphics.h #include "Image.h" class G…
id:melpon:20051121で、ポインタを取ってたけど、それよりは、 Graphics& getGraphics(); こうするべきか。 追記: これだとテンポラリの参照を返すからNG(;´Д`) newで生成してもdeleteが出来ない……。
… …… ………
転送ルーチンの実装です。
そういえばJava互換って書いてますが、この辺って互換と何の関係もないですよね(;´Д`) 昨日の
yaneSDK3rdの転送ルーチンを実装している部分は、大きく分けて2種類のクラスに分けられると思います。
virtualの問題も解決したところで、転送ルーチンの実装について考えていきたいと思います。 id:melpon:20051120でも書きましたが、多くの画像形式に対応しようとすると、そのルーチン数は半端ない数になります。 なので、えんらさん(id:enra)の言うとおり、…
Imageクラスをvirtualに出来ないと言うことは、インターフェースクラスを作るのは無理なのでしょうか?
JavaのImageクラスは、基本的にインターフェースクラスで、下位のクラスで実装をしています。 インターフェースクラス(virtual)をC++で実装することは出来るのでしょうか?
// Graphics.h class Graphics{ void drawImage( Image img , int x , int y ); }; // Image.h class Image{ Graphics getGraphics(); }; どうしろと(;´Д`) 追記: 一応、 Graphics* getGraphics(); ってすれば大丈夫みたいですけど……なんか気持ち悪いな…
auの場合は、 com.kddi.system.PhoneSystem.getID(); で取得出来ます。 auは「メーカーコード2ケタ + 機種コード2ケタ」という形式になってます。 この文字列は、以下のページで調べられます。 http://developer.openwave.com/dvl/resources/supported_phone…
Vodafoneの場合は、 System.getProperty( "Platform" ); で取得出来ます。 この文字列もDoCoMoと同じで、プラットフォームの名称が返ってきます。 ただ、J-06Tが、"J-06T_a"とか返ってくることもあるみたいで、ちょっと信用出来ないかも……(;´Д`)
DoCoMoの場合は、 System.getProperty( "microedition.platform" ); これで取得出来ます。 この文字列は、DoJa2.0以降は、D505iなら"D505i"、F901iSなら"F901iS"といった、プラットフォームの名称になります。 DoJa1.0の値については、んぱか工房の、 http:/…
id:melpon:20000103 Java用のMathクラスを作ってみました。 携帯でリアルタイムにsinやcosの計算をする人はいないと思いますけど、だからと言ってテーブルデータを作ってしまうと、それはそれで容量を取ります。 なので、テーブルを手動で計算することによっ…
http://www.netgene.co.jp/java/documents.html まじすげー。これさえ見ればclassファイルを一から生成できそう。 出来れば仕様書を読みたいんだけど、英語だからねぇ……(;´Д`)
前回(id:melpon:20050917)に紹介したJoGaの圧縮効率を調べてみました。 p → ProGuard j → jarg z → 7zip b → JavaBlender jo→ JoGa クラスA クラスB クラスC jarファイル 無圧縮 476 9,189 21,403 31,448 p 414 7,720 19,967 28,455 j 463 9,002 20,379 30,2…
てっきり自分の日記に書いてると思ったら書いてなかった(;´Д`) javap -c -classpath [classpath] [class file]>[output file]
private void test(){ int a = { 3 , 4 }; int b = new int[ 2 ]; b[ 0 ] = 3; b[ 1 ] = 4; } このプログラムのaとbって、何か違うところあるのかな? と聞かれたので、さっそく検証
PNGのパレット変換は、PLTEチャンクが固定された位置にないので検索しなければならないのと、CRCの計算をしなくてはならないので、ちょっと複雑になります。
GIFは、グローバルカラーテーブルが存在するという前提ならば、簡単にパレット変換ができます。 /** * @brief GIF 画像のパレット変更を行います。 * * @param buf GIF 画像のデータが入ったバッファ * @param pal パレット画像のデータが入ったバッファ * …