Java

docomo 用の 2 次元描画クラス

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…

非同期でやりとりを行うための Future クラスを作ってみた

インターフェースは C++0x で追加されるものを参考にして、実装は Future パターンまんまです。 public final class FutureException extends Exception { private Exception inner; FutureException(Exception inner) { this.inner = inner; } FutureExcept…

Java で Boost.Coroutine 的なクラスを作ってみた

以前に BREW で Boost.Coroutine を使えるようにした関係で、それを Java に移植するのが難しくなってしまったので、Java で Coroutine っぽく使えるようなクラスを作ってみました。 当然スタック切り替えなんてできるわけが無いので、内部的にはスレッドを…

FastMath

昔書いた、携帯用の Math クラスが出てきたので貼り付け。 ProGuard もかけてやると、生成される class ファイルは 2 キロバイト弱になるようだ。 コサインテーブルを静的に持ったりなんかするとすごく容量を取るので、昔はこういうクラスは重宝したんだけど…

BREW で Java 風のクラスを作る(3)

BREW で Java 風のクラスを作る BREW で Java 風のクラスを作る(2) Java っぽく作るためには、メモリがどこからも参照されなくなったら自動的に解放されるようにする必要があります。 方法としては、 GC を実装する。 AddRef(), Release() を使用する。 スマ…

BREW で Java 風のクラスを作る(2)

BREW で Java 風のクラスを作る 前回のプログラムの問題点は、キャストするたびに QueryInterface() を呼び出さなければならず、Java の文法とはかけ離れた処理を行わないといけなかったことです。 これを自然な書き方にするためには、内部で QueryInterface…

BREW で Java 風のクラスを作る

424 :デフォルトの名無しさん :2007/05/07(月) 22:37:54 Javaのインターフェースのような振る舞いをさせたい場合はどうしたらいいんだろう? クロスキャストで質問なんだが。。。 Javaからの移植を今やってる。で以下の継承ツリーを持つクラスがある。 Obj…

Java の描画速度

最近知ったんだけど、Java の場合、描画速度は描画面積に(大体)比例するんじゃなくて、描画面積と描画枚数に(大体)比例するらしい。 だから、100枚の画像で使って 240x240ドットの画面を描画するよりは、240x240 の画像1枚を貼り付けた方が、描画面…

Java互換ライブラリ(10)

id:melpon:051231#p2のやりかただと、メモリの解放に問題があるので不可。 結局ポインタにするしかないのかなぁとか思ってたんですが、どうやら Graphics getGraphics(); このままでいけるみたいです。 今までは、 // Graphics.h #include "Image.h" class G…

Java互換ライブラリ(9)

id:melpon:20051121で、ポインタを取ってたけど、それよりは、 Graphics& getGraphics(); こうするべきか。 追記: これだとテンポラリの参照を返すからNG(;´Д`) newで生成してもdeleteが出来ない……。

Java互換ライブラリ(8)

… …… ………

Java互換ライブラリ(7)

転送ルーチンの実装です。

Java互換ライブラリ(6)

そういえばJava互換って書いてますが、この辺って互換と何の関係もないですよね(;´Д`) 昨日の

Java互換ライブラリ(5)

yaneSDK3rdの転送ルーチンを実装している部分は、大きく分けて2種類のクラスに分けられると思います。

Java互換ライブラリ(4)

virtualの問題も解決したところで、転送ルーチンの実装について考えていきたいと思います。 id:melpon:20051120でも書きましたが、多くの画像形式に対応しようとすると、そのルーチン数は半端ない数になります。 なので、えんらさん(id:enra)の言うとおり、…

Java互換ライブラリ(3)

Imageクラスをvirtualに出来ないと言うことは、インターフェースクラスを作るのは無理なのでしょうか?

Java互換ライブラリ(2)

JavaのImageクラスは、基本的にインターフェースクラスで、下位のクラスで実装をしています。 インターフェースクラス(virtual)をC++で実装することは出来るのでしょうか?

Java互換ライブラリ

// Graphics.h class Graphics{ void drawImage( Image img , int x , int y ); }; // Image.h class Image{ Graphics getGraphics(); }; どうしろと(;´Д`) 追記: 一応、 Graphics* getGraphics(); ってすれば大丈夫みたいですけど……なんか気持ち悪いな…

プラットフォーム毎の固有名称(3)

auの場合は、 com.kddi.system.PhoneSystem.getID(); で取得出来ます。 auは「メーカーコード2ケタ + 機種コード2ケタ」という形式になってます。 この文字列は、以下のページで調べられます。 http://developer.openwave.com/dvl/resources/supported_phone…

プラットフォーム毎の固有名称(2)

Vodafoneの場合は、 System.getProperty( "Platform" ); で取得出来ます。 この文字列もDoCoMoと同じで、プラットフォームの名称が返ってきます。 ただ、J-06Tが、"J-06T_a"とか返ってくることもあるみたいで、ちょっと信用出来ないかも……(;´Д`)

プラットフォーム毎の固有名称

DoCoMoの場合は、 System.getProperty( "microedition.platform" ); これで取得出来ます。 この文字列は、DoJa2.0以降は、D505iなら"D505i"、F901iSなら"F901iS"といった、プラットフォームの名称になります。 DoJa1.0の値については、んぱか工房の、 http:/…

携帯用Mathクラス

id:melpon:20000103 Java用のMathクラスを作ってみました。 携帯でリアルタイムにsinやcosの計算をする人はいないと思いますけど、だからと言ってテーブルデータを作ってしまうと、それはそれで容量を取ります。 なので、テーブルを手動で計算することによっ…

Java仮想マシン入門Returns

http://www.netgene.co.jp/java/documents.html まじすげー。これさえ見ればclassファイルを一から生成できそう。 出来れば仕様書を読みたいんだけど、英語だからねぇ……(;´Д`)

JoGa(2)

前回(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…

Javaの逆アセ

てっきり自分の日記に書いてると思ったら書いてなかった(;´Д`) javap -c -classpath [classpath] [class file]>[output file]

Javaの配列

private void test(){ int a = { 3 , 4 }; int b = new int[ 2 ]; b[ 0 ] = 3; b[ 1 ] = 4; } このプログラムのaとbって、何か違うところあるのかな? と聞かれたので、さっそく検証

PNGのパレット変換

PNGのパレット変換は、PLTEチャンクが固定された位置にないので検索しなければならないのと、CRCの計算をしなくてはならないので、ちょっと複雑になります。

GIFのパレット変換

GIFは、グローバルカラーテーブルが存在するという前提ならば、簡単にパレット変換ができます。 /** * @brief GIF 画像のパレット変更を行います。 * * @param buf GIF 画像のデータが入ったバッファ * @param pal パレット画像のデータが入ったバッファ * …