昨夜弊社でイベント(飲み会?)を開催したのですが、
お越しいただいた皆様ありがとうございました。
イベントでやりましたVJ的なアレについては
また機会をみてレポートできたらと思います。
こんにちはジョーとも呼ばれたりするムーチョです。
OPENGLというかCinderでdrawしたラインを印刷したい!
そのためにEPS形式にできないものかと
あれこれやってみて、とりあえずこれでいいんじゃないか?
というところにたどり着いたのでそのご紹介です。

これをEPSにしたい!
EPS保存ですが、いくつか方法がありました。
このライブラリは結局今回使わなかったのですが
王道っぽいのでメモ。
GL2PS: an OpenGL to PostScript printing library
http://geuz.org/gl2ps/
今回紹介するのは、Cinderのライブラリに入ってるCairoで書き出す方法です。
02 | vector<vector<Vec2f> > shapePoints; |
05 | void saveEPS(string path) |
07 | cairo::Context ctx( cairo::SurfaceEps( path + ".eps" , getWindowWidth(), getWindowHeight() ) ); |
08 | drawVectorLine( ctx ); |
12 | void drawVectorLine(cairo::Context &amp;ctx) |
14 | ctx.setLineWidth( 0.1f ); |
15 | ctx.setSourceRgb( 0, 0, 0 ); |
18 | for (i = 0; i < shapePoints.size(); i++){ |
20 | for (j = 0; j < shapePoints[i].size(); j++){ |
22 | p0 = shapePoints[i][ shapePoints[i].size()-1]; |
24 | p0 = shapePoints[i][j-1]; |
26 | p1 = shapePoints[i][j]; |
32 | for (i = 0; i < pSteps; i++){ |
33 | for (j = 0; j < addedPoints[i].size(); j++){ |
35 | for (k = 0; k < addedPoints[i][j].size(); k++){ |
37 | p0 = addedPoints[i][j][ addedPoints[i][j].size()-1]; |
39 | p0 = addedPoints[i][j][k-1]; |
41 | p1 = addedPoints[i][j][k]; |
Cairoは元々ベクターデータ用の描画エンジンで
画面上に描画もできるのですが、画面に描画しなくても
上記のような書き方でEPS書き出ししてくれました。
保存されたファイルをillustratorで開いてみると…

激重ベクターデータの出来上がり!!
これでOpenCVから印刷データなんかも作れそうでムフフです。