Java と jna を使用して、関数を呼び出します: trace(potrace_ bitmap_s)
struct potrace_bitmap_s {
int w, h;
int dy; /* scanline offset in words */
potrace_word *map; /* pixel data, dy*h words */
};
typedef struct potrace_bitmap_s potrace_bitmap_t;
w、h: ビットマップの幅と高さ
ライブラリのドキュメントでこれを見つけました
ここで、potrace_word は、potracelib.h で定義されている符号なし整数型です。これは通常、ネイティブ マシン ワード (つまり、32 ビット アーキテクチャでは 32 ビット) と同じです。以下の説明では、potrace_word 型が N ビットを保持すると仮定します。
次元 w*h のビットマップは、下から上に、h 個の水平走査線に分割されます。各スキャンラインは、左から右に N ピクセルのブロックに分割されます。このような N ピクセルの各ブロックは、単一の potrace_word として格納され、ブロックの左端のピクセルは単語の最上位ビットに対応し、ブロックの右端のピクセルは単語の最下位ビットに対応します。「オン」(または「黒」または「前景」) のピクセルは、ビット値 1 で表されます。「オフ」(「白」または「背景」) のピクセルは、ビット値 0 で表されます。スキャンラインのビットが N で割り切れない場合、スキャンラインの右端のワードの右側がゼロで埋められます。スキャンライン 0 (一番下のスキャンライン) のデータは map[0] から始まります。スキャンライン 1 のデータは map[dy] から始まります。スキャンライン 2 のデータは map[2*dy] から始まり、以下同様です。dy は、アプリケーションがイメージ データをメモリにどのように配置したいかによって、正または負のいずれかになることに注意してください。
しかし、Javaマップでどのように表現できるかわかりませんでした。
public class Potrace_bitmap_t extends Structure{
int w, h; /* width and height, in pixels */
int dy; /* scanline offset in words */
map ??; /* pixel data, dy*h words */
}