プログラミング

Tclのトークン分割機能をC/C++から直接呼び出してみるテスト

Tcl を C/C++ で活用する・・・というと、Tcl_Eval で Tcl の各種コマンドを呼び出す方法をまず思いつきますが、 Tcl_Eval を使う以外にも、文字列処理や、ファイル処理、参照カウンタ式のオブジェクト管理等、 色々便利そうな API が結構揃っていて、純粋に…

Ghostscriptを使ってPDFにしおりをつける

フリーソフトでPDFにしおりを付加する機能のあるものがなかなか見つからなかった のですが、実はGhostscriptを使えば結構簡単にできるということがわかりました。 しおりの文字列を日本語にしたい場合は、BOM付きのUTF16(BigEndian)を8進数表記にすれば よい…

VS2008でTclVFSをtcl.8.5.15に対応させる方法 (VS2012、tcl 8.6.8 追記)

不具合現象 Tcl 8.5 系の現在の最新版である Tcl 8.5.15 と TclVFS 20080503 を VS2008 Express Edition 32bitモードでビルドしようとしたところ、下記エラーが出てしまいました。 <Tcl 8.5.15 + TclVFS 20080503 32bit モードでのビルドエラー内容> =====…

std::lower_bound、std::upper_boundの関係をイラスト化してみた

ソート済配列に対して2分探索をしたり、昇順(または降順)の状態を維持したまま配列に要素を挿入したいといった場合、C++ではstd::lower_bound や std::upper_boundを活用すると便利ですが、それぞれが返すイテレータがどこを指すのか理解が曖昧だったので、…

Base16kエンコーダ/デコーダ

文字列にバイナリを埋め込む方法としてbase64が良く使われていますが、 バイナリを埋め込んだ文字列の 転送/格納にUTF16を使用する場合、 base64文字列をUTF16で扱うことになるため、上位8ビットが丸々0になり、 転送/格納効率が非常に悪くなります。 UTF16…

luaで、luaの関数を呼ぶC++の関数をluaから呼んでみた

引数2個、戻り値1個のlua関数を引数にとり、 実行されると与えられた引数の関数に5,15を入れて呼び出し、 得られた戻り値を2倍したものを返り値とするlua関数をC++で作成しました。 大変ややこしいですが、C++ => LUAの呼び出し、 LUA => C++ の呼び出しを …

BLTのgraphのmarkerでグラフにお絵かき

コピーレフトのないオープンソースで、何か図を書いた後emfファイルに書き出す、 この要件を満たすものを探したところ、以前少し触れたBLTが使えることがわかりましたので、 やり方をメモします。 BLTのgraphを使うと、グラフをtcltkのウィンドウ上に描画で…

TclTk + [Incr Tcl] + [Incr Tk] + [Incr Widgets] + TclVfs + Metakit をVisualC++を使ってソースから導入するメモ 続き

前のエントリの書ききれなかった続き * 7. Incr Widgetsのインストール -7.1. VisualStudio2008コマンドプロンプトでwork/iwidgets4.0.1/winにcdで移動 -7.2. nmake -f makefile.vc install INSTALLDIR=..\..\inst * 8. TclVfsのコンパイルとインストール -8…

TclTk + [Incr Tcl] + [Incr Tk] + [Incr Widgets] + TclVfs + Metakit をVisualC++を使ってソースから導入するメモ

* 1. ソースのダウンロード -1.1. TclとTkのソースをダウンロード URL: http://www.tcl.tk/software/tcltk/download.html -1.2. IncrTclのソースをダウンロード (3.4.1と3.2.1をダウンロード) URL: http://incrtcl.sourceforge.net/ -1.3. IncrWidgetsのソー…

WMFやEMFを上下2分割して2ページに印刷するサンプルプログラム

プレゼン資料を上下2分割して2ページに印刷したい用事があったので、やり方を色々探したんですが、なかなか見つからなかったので、自前でプログラムを作ってみました(1)。このプログラムはWMFやEMFを上下2分割して2ページに印刷することができますので、プレ…

xmlファイルの一部だけを編集できるhtaアプリ

xmlで書かれた設定ファイルの特定のattributeやinnerTextだけを変えたいとき、 その変えたい部分だけを表示・編集できるツールをhtaで作成してみました。 xmlNodeEditor.hta内のxpathesは、xmlファイルの編集対象箇所を表しています。 各行の1つめは編集対象…

dlib C++ ライブラリでAntTweakBarを使う

OpenGL機能を追加したdlib C++ライブラリでAntTweakBarを使うことができました。 サンプルのソースと実行ファイルは↓にあります。 http://www.tok2.com/home/mocchi2008/samples/dlib_anttweakbar/dlib_anttweakbar.htm 関連 - dlib C++ Library 目次 - dlib…

font_rendererバージョンアップ

font_rendererをバージョンアップしました。 バージョン 1.10 => 1.20 更新内容 ・同じ条件で何回もレンダリングする際のパフォーマンスの向上(createメソッド) ・ascender,descenderも取得できるようにした ・バグ修正 createメソッドは,前回のレンダリン…

System.Drawing.Bitmap画像を使った高速な画像処理プログラミング その2

System.Drawing.Bitmap画像を使った高速な画像処理プログラミングについての続きです。 .Net Framework のベンチマークの公開にはややこしいルールがあるようなので、 ベンチマーク結果を公開する代わりにベンチマークを取れるプログラムを公開します。 こう…

System.Drawing.Bitmap画像を使った高速な画像処理プログラミングについて

はじめに .Net Framework の System.Drawing.Bitmapを使うと、jpegやpngなどの画像データを簡単に扱うことができます。しかし、このクラスに用意されている、各画素にアクセスするメソッド SetPixel はあまり高速ではありません。 閾値処理、エッジ検出など…

前回作ったライブラリを実際に使ってみた

前回作った、ネイティブAPIを使ってテキストを画像データにするライブラリとOpenGLを使って、 簡単なサンプルを作ってみました。 ↓ライブラリ紹介エントリ http://blogs.yahoo.co.jp/mocchi_2003/38911375.html OpenGLのためのウィンドウ周りのライブラリと…

LRU コンテナ

一定のサイズを保ち、新たに要素が加えられたときに LRU (Least Recently Used) な要素を削除する、キャッシュのような働きをする C++のコンテナを作ってみました。 内部で list と set を保持していて、要素の追加の他に、begin、end、rbegin、rendを 持っ…

メンバ関数ポインタ同士の比較

二つのメンバ関数ポインタ型変数が等しいかどうかを比較する処理を作ってたんですが、g++ と Visual C++ で一部違った処理になることを発見しました。 下に書いたプログラムを実行すると… #include <cstdio> class Test{ public: void aaa(void){ printf("a");} void</cstdio>…

C++版デリゲート作ってみました

C#などではおなじみのデリゲートと同じようなことができるC++のクラスを作ってみました。 boost:function と同じような機能ですが、boostはサイズが結構大きくて、デリゲートが欲しい だけのためにboost一式をインストールするにはちょっと抵抗があったので…

libsava 範囲クエリのベンチとか

さっきの続きです。 begin, endがどんな感じで動くのか試してみました。 ベンチをとるために、mistライブラリの中にあった、mist::timer を使ってみました。 libsava にも時間測定用のクラスがあるようですが、unix用っぽいので、そっちは使ってません。 つ…

libsavaのKDTree コンパイルが通らない・・・orz

VisualStudio C++ 2005 Express Edition と MinGW g++ 3.3.1 のどちらでもダメでしたorz // テストコードここから #include <libsava/spatial/KDTree.h> using namespace sava::spatial; int main(){ typedef Point3D<double> point_type; KDTree<point_type, int, 3> kdt; // ← この行でエラーがでます kdt.insert(</point_type,></double></libsava/spatial/kdtree.h>…

libsavaのKDTree

libsava の KDTree に何が実装されているのかもう少し詳しく見てみた KDTree コンテナクラスのpublicメンバ関数 挿入 insert 点 (このパッケージが用意しているPoint型、またはその派生型) と値のペアをコンテナに加える。std::map のinsertと仕様をあわせた…

C++でオープンソースで何らかのアルゴリズムを実装しているライブラリ

いくつか見つけたのでメモっておきます -MIST http://mist.suenaga.cse.nagoya-u.ac.jp/trac/ 画像処理、音声処理に関するライブラリ STLライク (ソースは全て.h) 修正 BSD ライセンス -libsava http://www.savarese.com/software/ いろいろなデータ構造やア…