モブ沢工房

プログラミングとかLinux関連(特にOSSのグラフィックツール関連)とかレトロゲームとか3Dプリンタやら日曜大工等、色々。

2017-01-01から1年間の記事一覧

SWIGオブジェクトから生のポインタを取り出すには

最近SWIGづいていますが… PythonのSWIG(SWIGのPythonか…?)ラッパーオブジェクトからポインタを取り出すにはどうすればいいのか? それも、自作のクラスオブジェクトでございます。 なんでこんなことをする必要があるのかというと、SWIG化クラス「foo」があ…

Gdk(pygi)でマウスカーソルを任意位置に動かすには

感動のあまりカキコ! 改造版mypaintのsizechangemode.pyから一部抜粋〜 def drag_start_cb(self, tdw, event): self._ensure_overlay_for_tdw(tdw) self._queue_draw_brush() # Storing original cursor position and some needed objects. dev = event.get…

SWIG関数にctypesからアクセス

ついでにこれも思いついたシリーズ。 すなわち例えば、SWIG側の内部にstaticで構造体ポインタのリストを持っておき。 idx = register_hogehoge(void *ptr)でそのリストに登録。 その後はidxを使って(OpenGLのテクスチャの名前みたいな感じで)、例えば draw_…

PythonでSWIGのC++関数中でGdkPixbufにアクセスしてみた

Pythonで作ったGdkPixbufを、SWIGのC++関数に送り込んでC++の中で最速描画ということを考えつきました。 さらに、そのpixbufはcairoから作ると、なお痛快でしょう。 と前々から思っていたのですが、遂に重い腰を上げて作ってみました。 そんなわけでそのサン…

Xubuntu 16.04でCintiq 13HDを自動設定するの巻

ついつい、勢いでwacomの液タブCintiq 13HDを買ってしまいました(^^; 旧モデルなのは、安いだけでなくLinuxで使うには何も考えなくて良くて都合が良いというメリットもあるのです。 どーでもよいのですがこの絵、tegaki_dtで頑張って書いてたらボタンの誤爆…

SWIG & python でundefined_symbolが出る時

何か超久々ですがとりあえず… とりあえず以下、例として、 Flagtileというクラスがあるとします python用のtestlib2モジュールに組み込まれます。 SWIG, g++ともコンパイルは問題なく通る C++内では普通に使えている しかし、SWIGでPythonモジュールに組み込…

PyGObject(PyGi)で「デフォルトのフォントサイズ」を取得する

PyGObject…でいいのでしょうか。PyGiなのか。未だによくわかりません。 とにかく新しい方のGtkのpythonバインディングで、コンボボックスのカスタムレンダラーで使うデフォルトのフォントサイズを取得したくなりました。 これはMyPaintにOpenCVのgrabCut関数…

SWIGとnumpyについて(ImportErrorとセグメンテーションフォールト)

何か「ハリーポッターと魔法のナントカ」みたいなタイトル… それはともかくSWIGとnumpyでハマってしまったので備忘録的にメモ。 現象としては hppでNO_IMPORT_ARRAYを定義して#include <numpy/arrayobject.h>すると、.pyファイルでSWIGモジュールをインポートした時点でimporterro</numpy/arrayobject.h>…

cgdbを用いてpython拡張モジュール(てか、mypaint)をデバッグする方法

これまた備忘録的に… 当然ながらgccとかg++はデバッグオプション(-g -O0) でビルド mypaintの場合はsconsを使っているため、SConstructに書いてあるようにdebugオプションを使う つまり、scons debug=true デバッグビルドができたらcgdb pythonとする b 関…

Python+SWIGでがんばってみた for mypaint (備忘録的)

MyPaintに塗りつぶし拡大ルーチンを設置すべく、Python+SWIGで頑張ってみますた!(`・ω・´) 結果は… 何とか動くようになった!?!? それで悩んだところを備忘録的に書いておこうと思います。 手こずったところ まずPyDict_SetItem()。これがキツかった。 …