2009-03-01から1ヶ月間の記事一覧

Excel データから配列データへの変換

C#

例えば Excel のデータで hoge hogehoge mokemokke mokeke となってるデータをこんな風に整形して貼り付けたいわけです。 { hoge, hogehoge, }, { mokemokke, mokeke, },ツールを探せばいくらでもありそうですが、探すより書いたほうが早そうなのでこれを C#…

IShell クラスのラッパー

主に ISHELL_CreateInstance をラップするための存在だったりするのですが。 で、RVCT3.0 は例外が使える(らしい)ので ISHELL_CreateInstance に失敗したら例外を投げてやることにします。 また、BREW API 用の interusive なスマートポインタ(brew_ptr)…

AECHAR の入力

今のライブラリは文字列クラスなんてのは作ってないのだけれども、今のプロジェクトは幸いにして使う文字列が固定なので、事前にテクスチャにして(文字列をテクスチャ化する)おくことで何とかなってる。 でも、やっぱりその固定の文字列を作るために AECHA…

自前のストリームクラスに unzip ストリームを実装する

BREW には IUnzipAStream というのがあるのだけれども、これは IUNZIPASTREAM_SetStream() で IAStream を継承したクラスを渡す必要がある。 しかし、もし何らかの理由(C++ の継承関係を持っている同期的なストリームクラスが欲しい!)で自前のストリーム…

色クラス

色クラスがあると何かと便利なので作ってみた。 struct color { byte b; byte g; byte r; byte a; color() : b(0), g(0), r(0), a(0) { } color(byte r_, byte g_, byte b_, byte a_) : r(r_), g(g_), b(b_), a(a_) { } color(uint32 v) { // リトルエンディ…

文字列をテクスチャ化する

OpenGL ES は文字列が扱えないので、文字列をテクスチャ化するためのクラスを作ってみた。 class string_texture { context_ptr context_; brew_ptr<IDisplay> display_; brew_ptr<IDIB> dib_; // 文字描画用のテンポラリ public: string_texture(const context_ptr& c, IDis</idib></idisplay>…

N2800 - 20.8 Time utilities の翻訳

chrono について調べる必要が出てきたので、理解を深めるために該当箇所を翻訳してみました。 http://melt.sytes.net/pukiwiki147/index.php?Memo%2F%CB%DD%CC%F5%2FN2800%20-%2020.8%20Time%20utilities%28JP%29 duration クラス duration クラスは C# で言…

OpenGL ES のパレットテクスチャを作る

glGenTextures でテクスチャの番号をもらって、glBindTexture でアクティブにして、適当にパラメータを設定して、glCompressedTexImage2D で作るだけ。 GLint texture; GLenum format; int width; int height; void* buf; int bufsize; glGenTextures(1, &te…

string から特定のいくつかの文字を消去したい

C#

たとえばある文字列からスペース、タブ、改行を削除したい場合にはどうやって書くんだろう? Split + Join? string str2 = string.Join("", str.Split(' ', '\t', '\r', '\n')); 文字列の Replace? string str2 = str.Replace(" ", ""); str2 = str2.Repla…

2進桁数計算の便利さ

昔、わんくまブログで書いた [C++]二進桁数高速計算 [C++]二進桁数高速計算(2) この2進桁数を高速に求める関数 int binaryDigit(unsigned int val) { int digit = 0; digit += (((val >> 16) + 0xFFFF) & 0x10000) >> 12; digit += (((val >> digit) + 0xFF0…

固定小数点数クラス

OpenGL ES を使う上ですごく必要になってきたので作ってみた。 // 固定小数点数クラス(Q16) struct fixed { private: int32 v_; public: fixed() : v_(0) { } fixed(const fixed& f) : v_(f.v_) { } // implicit で大丈夫だよね?オーバーフローしないように…

NSTimer の止め方

m_timer = [[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@seletor(timerCallback:) userInfo:nil repeats:YES] retain];この NSTimer を削除する際に、 [m_timer release]: このように、単に release しただけでは削除されず、タイマ…

BREW API と intrusive_ptr の親和性

は最悪だと思うのです。 C での擬似的な継承関係は C++ の継承関係とは関係が無いので、型の変換が一切できないのです。 intrusive_ptr<IShell> shell; intrusive_ptr<IBase> base; shell = base; // 当然エラー base = shell; // エラー base = static_pointer_cast<IBase>(shell)</ibase></ibase></ishell>…

文字列をアルファ付きの画像として保持する

文字列をキャッシュしたい場合なんかに有効かも。 UIImage* CreateImageFromString(NSString* str) { // この辺は引数にするなり何なりで適当に。 UIFont* font = [UIFont systemFontOfSize:12]; float r, g, b, a; r = g = b = a = 1.0; CGSize size = [str…

NSObject と intrusive_ptr の親和性

は結構高いと思うのです。 void intrusive_ptr_add_ref(NSObject* obj) { [obj retain]; } void intrusive_ptr_release_ref(NSObject* obj) { [obj release]; } て書いて、あとは boost::intrusive_ptr とか boost::intrusive_ptr とかを使うだけ。 これは特…

Unicode のバッファから NSString を生成する

普段は自前の Unicode 文字列クラス(もしくは std::basic_string)で管理していたとしても、描画したり NS〜 の API を呼ぶ際には NSString を作る必要がある。 しかし出来る限り NSString の生成コストを減らしたいという場合、以下のように書くのが良さそ…