2009年03月31日

libjpegでSDL_SurfaceのSDL_Rectをセーブする。

jpegのセーブに関しては苦労してまでメモリに保存する需要はあまりない。
但しココログを考慮してexifをくっつけたいところではある。
そんなことを視野に入れつつ今回はとりあえず標準的なAPIでのセーブを行った。

先日のロードとは異なりSDL_Surface直接ではなく
1ラインずつを全SDL_Surfaceでなく任意の矩形を選択した。
メモリーの無駄は多分にあるが妥協できる線だ。
それでどうした!......
ラベル:SDL 画像 libjpeg
posted by Xo_ox at 23:59| Comment(0) | クロスプラットフォーム | このブログの読者になる | 更新情報をチェックする

2009年03月30日

libjpegでメモリー上のjpegファイルを読み込む

delphiのTjpegよりは内部を触れる感じのAPIを使えると思ったのだが
大間違いで妙にメンバーが多い割に基本的には提供された大雑把な関数しか使えない。
Tjpegはむしろよくまとめていたということになる。
最たるものは入出力でメモリーから呼び出すためにはソースのjpeg_stdio_destをベースに
メモリー用の関数を作って登録と面倒な手間をかけないといけない様だ。
但しこれはUNIX限定の話であってWindowsの場合はjpeg_stdio_destのままでかまわない。
なぜならWindowsの場合はFILEというのはリソースストリームの「handle」の種類に過ぎず
OSの手続きで作ったメモリーストリームハンドルが使えるからだ。

そしていまだに「windowsではijgを使うしかない」と勘違いしている人もいる様だが
Windowsの場合jpeg読み込みはOleLoadPictureというolepro32由来の関数が使えるので
小規模プログラムの場合ijgライブラリーをあえて使う理由は無い。

そんな事を考えながらも今回はjdatasrc.cをjmemsrc.cに変更して
メモリーないのjpegデータからsdlに展開してみた。
それでどうした!......
ラベル:libjpeg SDL 画像
posted by Xo_ox at 23:44| Comment(0) | クロスプラットフォーム | このブログの読者になる | 更新情報をチェックする

2009年03月29日

libjpegで画像を読み込む

djpegでいいと思うのだけれどlibjpegを使ってみた。
癖はいろんなソフトでも使っているのでわかりやすいが
使用法はクロスプラットフォームなソースのためわかりにくい。
今回は基本中の基本であるファイル読み込みをやってみた。
SDLサーフィスに直接読み込む手法は若干トリッキーかもしれない。
それでどうした!......
ラベル:画像 SDL
posted by Xo_ox at 01:18| Comment(0) | C | このブログの読者になる | 更新情報をチェックする

2009年03月27日

djpegでSDL_Surfaceにjpegを読み込む

imlib2やgdk_pixbuf等をみた後だと
SDLはクロスプラットフォームだし使用リソースは少ないし
画像の配列ポインタを渡してくれるので柔軟にものを作れそうだと感じた。
今回はpopenを使ってIJGライブラリーについてくるdjpegを使って
jpegを読み込んでみた。
それでどうした!......
ラベル:SDL popen 画像
posted by Xo_ox at 23:57| Comment(0) | クロスプラットフォーム | このブログの読者になる | 更新情報をチェックする

2009年03月26日

perlのバックスラッシュ感覚でpopenを使う。

パイプってやっかいなイメージがあったので
Win時代はやろうやろうと思ってついにやらなかったのだけれど
unix系の場合は随分と使いやすい様だ。cだとwinでもあるみたいだけど
pipeより使いやすいpopenを使ってみた。
これはいわばperlでいうところのsystem命令か
「``」バックスラッシュでシェル命令を囲んでいるようなものだろう。
それでどうした!......
ラベル:popen Stray
posted by Xo_ox at 23:24| Comment(0) | C | このブログの読者になる | 更新情報をチェックする

2009年03月25日

Curlでpercent-encodeしてみる。

日本語とかFlashのパラメータとかasciiで使えないところで使われるエスケープ処理
web-safe-base64のがいいと思うんだけれど
特にUTF-8だと無駄だらけだとは思うがよく使われている。
自前でくんでもよさそうだがざっと探したところ
汎用性のあるライブラリーでcurlで使えるようだ。
curlはクッキー処理やフォームのポストなども出来るライブラリーだが
グローバルな関数は案外と少ない。最近割とよく使われているライブラリーではないかと思う。
それでどうした!......
ラベル:Curl percent-encode
posted by Xo_ox at 21:59| Comment(0) | クロスプラットフォーム | このブログの読者になる | 更新情報をチェックする

2009年03月24日

imlib2に期待して失望

ImageMagickのMagickWandは必要充分な機能を持っているものの速度が遅い。
代替となる妥当なライブラリーを探していて
「imlibの開発者が作り直した」というimlib2というのをみつけた。
サンプルとしてはbin内にいれるアプリのソースが適切だった。
とっつきはよくxlibでの文字描画などなかなか良さそうと思ったのだが
決められた使い方しか出来ない。
画像ローダーとして見た場合メモリーともパイプともつなげずファイルオンリーである点が痛すぎる。
いろいろやったのだがすっきりと手を引くことにした。それでどうした!......
ラベル:imlib2
posted by Xo_ox at 22:30| Comment(0) | 借り物ビルド | このブログの読者になる | 更新情報をチェックする

2009年03月23日

CのMagickWandでPerlMagickに惨敗

毎朝写真を撮ってココログにアップしているのだが
デジカメからの最初の処理をPerlMagickでやっていた。
しかししょっぱなの起動コストが低いものの作業コストは
PerlMagickと変わらないかやや劣るという結果になった。
惨敗である。
ただし今回はmain関数内にfind_Lに渡すselect関数を置き
main関数内のローカル変数を使用するということをやってみた。
グローバル関数にローカル関数を渡して関数外の変数を使うことが出来た。
それでどうした!......
posted by Xo_ox at 11:57| Comment(0) | C | このブログの読者になる | 更新情報をチェックする

2009年03月21日

File::Find風味にftsを使ってみる。

File::Find風味のftwと比べるとftsは前後処理が結構面倒くさいのだが
関数型変数などを使って使いやすくしてみた。
今回は多少ライブラリー関数臭い物も使っているが原則libcオンリーだと思う。
typedefなどの理解も若干深まった。
今回はsortは時間と名前固定でselect関数を自分で設定する形の
ディレクトリ一括処理としてjpegファイルをリストするものを作った。
それでどうした!......
ラベル:ディレクトリ FTS
posted by Xo_ox at 19:52| Comment(0) | C | このブログの読者になる | 更新情報をチェックする

2009年03月20日

glibに頼ってざっくりと文字処理ライブラリを充実させる。

PerlとかFlashにあるような関数名での文字処理ルーチンはないものの
libCかglibの関数を組み合わせればなんとかなりそうだと分かった。
自作しても良さそうなものばかりだがとりあえず一通り集まったのであせることもないだろう。
特に関数化すること無くutf8のsubstringやsplit,join等が揃った。
あまりmallocをたくさん使いたくはないのだがstringlistなどの動的な構築については
個別の文字列もリストもmalloc依存になりそうだ。
それでどうした!......
ラベル:文字列 GLib
posted by Xo_ox at 18:36| Comment(0) | FreeBSDアプリ | このブログの読者になる | 更新情報をチェックする

2009年03月19日

拡張子の取得と文字処理への道筋

いろいろな足固めを視野に入れつつファイルアクセス関連をやっているのだが
「拡張子の取得」を効率的にやる事について考えてみた。
WindowsであればPathFindExtensionあたりを使えばいい話なのだがない。
regexかpcreを使う正規表現での切り出しがUNIXユーザーなら好きそうだろうけれど
どう考えたってコスト高だ。取り敢えずCの標準関数を中心に検討してみた。
それでどうした!......
ラベル:拡張子
posted by Xo_ox at 23:11| Comment(0) | C | このブログの読者になる | 更新情報をチェックする

2009年03月18日

ftwを一応使えるようにしておく

ftwはperlのFind::Fileと似た関数で使いやすくコード的には非常に短く済む。
選択様のコールバックが指定できる点でscandirに似ているが
scandirの様に配列が残るわけでもなくftsやreaddirのようにステップ処理をするわけではないので
sortをする場合はグローバル変数をつかわないとどうにもならない。
つまり短い使いっ切りのコマンドユーティリティを作る場合に有効な関数といえる。
今回は使ってみただけだが多分もう使わないだろう。
それでどうした!......
posted by Xo_ox at 13:28| Comment(0) | プログラム更新 | このブログの読者になる | 更新情報をチェックする

2009年03月17日

ftsでファイル階層を取得する。

危うくreaddirで本実装を開始してしまいそうだったが
めげずにライブラリ探索してfts系の関数にいきついた。lsやrmも普通にこれを使っているようだ。
ftsは内部でデータ構造を構築しsortを指定できるがsortは階層ごとに行われるようだ。
工夫しないと単一レベルだけで止めることはできない。
一方ftwという関数はsortはできないものの階層の深さを指定できselectをコールバックで呼び出せる。
どちらもscandirやreaddirと比べて一長一短だが最初からstatをもっているので扱いやすい。
今回は取り合えずftsを扱った。
それでどうした!......
posted by Xo_ox at 23:24| Comment(0) | FreeBSDアプリ | このブログの読者になる | 更新情報をチェックする

2009年03月16日

readdir_rでls -l風味ができる情報配列を構築する。

opendirとreaddirでscandir風味の配列を構築してみた。
但しデータとしてはstatで得られた値も含む。
まず第一段として一回readdirでスキャンして必要領域を計算して
2パス目にメモリーを確保してからコピーする形にしてみた。
delphiでfindfirstとかやる気が起きなくてコンポーネントだよりだったのに
FreeBSDではあっさりとできた事には感慨を覚える。
それでどうした!......
posted by Xo_ox at 19:54| Comment(0) | FreeBSDアプリ | このブログの読者になる | 更新情報をチェックする

2009年03月14日

scandirでqsortとbsearchを学ぶ

stream関連とメモリー実装について悩んでいるわけだ。これはdelphiでもそうだった。
XMLやFlashを取り扱う事を考えて連結リストなどは必須だとは思うが
scandirで得られたポインタ配列はいい例なのでこの結果をいろいろ操作して
解を得たいと思った。
今回はとりあえずbsearchの使用とディレクトリーとファイルを分離した名前順ソートあたりまでやった。
それでどうした!......
posted by Xo_ox at 20:03| Comment(0) | FreeBSDアプリ | このブログの読者になる | 更新情報をチェックする

2009年03月13日

scandirかopendirか悩んでみた。

opendirでディレクトリー一覧を取得すると順番がばらばらなのでソートしないといけない。
またストリームとして扱いたくてもtelldirは役立たず、seekは無能であり
探索しても使われている様子が無いことからバグ以前にこの関数は存在しない扱いにしないといけないと理解した。
そこでdirent.hをみたのだが「scandir」なる関数があった。
今回はscandirを使いjpg拡張子だけ選んでみたり
scandirのソートを直接qsortで置き換えるところまでやってみた。
それでどうした!......
posted by Xo_ox at 19:50| Comment(0) | FreeBSDアプリ | このブログの読者になる | 更新情報をチェックする

2009年03月12日

ファイル操作 その2?

昨日時間関連の取得と変更をしたのでパーミッションやら削除やらの確認をした。
system関数を使っても同じだろうが一応同じような関数で同じことができる。
Windowsでそうコーディングしていたせいか絶対パスを渡していたのだが
なんのことはないパス名を除いたファイル名でもちゃんと動作した。
それでどうした!......
posted by Xo_ox at 18:23| Comment(0) | FreeBSDアプリ | このブログの読者になる | 更新情報をチェックする

2009年03月11日

ファイル操作 その1?

ファイルの一覧を取得できたので次は個別のファイルについてみることにした。
使える関数を増やすのもいいけれど基本的に必然的な要因から詰めることにした。
今回はCの基本とも言えるopen,read,writeによるファイルコピーとaccess
OSよりのstat、utimesを扱った。
ファイルコピー部分はそもそもC言語の基本を知らなかったので理解のために使っただけで
ファイラーとか作らない限りはImageMagickなどで直接読み書きをすれば
使わないかもしれない。しかし今回一通り抑えたことで一般的なファイルストリームは
扱えるようになった事は大きい。なぜならUNIXはファイルとデバイスの区別が少ないからだ。
それでどうした!......
posted by Xo_ox at 23:25| Comment(0) | FreeBSDアプリ | このブログの読者になる | 更新情報をチェックする

2009年03月10日

fileの一覧を取得する。

glibにはファイル一覧を取得する関数もあり簡単に使えるのだが
glibを使わない場合どんなものなのか試してみた。
system命令で"ls"を呼ぶ手もあるが今回は関数のみを使用する。
要するにperlのFile::Findを置き換えられるようにする。
それでどうした!......
ラベル:ディレクトリ
posted by Xo_ox at 23:58| Comment(0) | FreeBSDアプリ | このブログの読者になる | 更新情報をチェックする

2009年03月09日

PRIMARYとCLIPBOARD

XのクリップボードにはPRIMARYとSECONDARYとCLIPBOARDがあることは知っていたのだが
使えるようにするには単に先日のコードのXA_PRIMARYを変えてやればいいだけだった。
しかしwindows的クリップボードはカットバッファと呼ばれるものでGTK系のアプリでは使っていない。
それでどうした!......
posted by Xo_ox at 22:50| Comment(0) | FreeBSDアプリ | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。