#ifndef __JBXL_CPP_JPEG_TOOl_H_ #define __JBXL_CPP_JPEG_TOOl_H_ /** JPEGグラフィックデータ定義用ヘッダ */ #include "common++.h" #include "buffer.h" #include "xtools.h" #include "gheader.h" #include "Gdata.h" #include "Vector.h" #include "ClassBox.h" #include // namespace jbxl { //////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////// class JPEGImage { public: int xs; int ys; int col; int state; JSAMPLE* gp; JSAMPARRAY img; public: JPEGImage(void) { init();} ~JPEGImage(void) {} void init(void); // グラフィックデータは解放しない bool isNull(void); // グラフィックデータを持っていないか? void clear(void); // 全空間を画素値 0 にする void fill(JSAMPLE v=(JSAMPLE)0); // 全空間を画素値 v にする void free(void); // グラフィックデータを開放する JSAMPLE& point(int x, int y, int c) { return img[y][x*col + c];} void getm(int x, int y, int c); void set (int x, int y, int c); }; JPEGImage readJPEGFile (char* fname); JPEGImage readJPEGData (FILE* fp); int writeJPEGFile(char* fname, JPEGImage jp, int qulty); int writeJPEGData(FILE* fp, JPEGImage jp, int qulty); int isJPEGHeader(Buffer buf); CmnHead JPEGImage2CmnHead(JPEGImage jp); JPEGImage CmnHead2JPEGImage(CmnHead hd); /* template MSGraph JPEGImage2MSGraph(JPEGImage jp) template JPEGImage MSGraph2JPEGImage(MSGraph vp) */ //////////////////////////////////////////////////////////////////////////////////////////// /** template MSGraph JPEGImage2MSGraph(JPEGImage jp) 引数: エラー:state ERROR_GRAPH_NODATA: データ無し ERROR_GRAPH_MEMORY: メモリ確保エラー */ template MSGraph JPEGImage2MSGraph(JPEGImage jp) { MSGraph vp; int i, j, k, yp, zp; vp.init(); // vp.color = GRAPH_COLOR_MONO; if (jp.col==3) vp.color = GRAPH_COLOR_RGB; if (jp.isNull()) { vp.state = ERROR_GRAPH_NODATA; return vp; } vp.set(jp.xs, jp.ys, jp.col); if (vp.isNull()) return vp; for (k=0; k JPEGImage MSGraph2JPEGImage(MSGraph vp) 引数: エラー:state ERROR_GRAPH_NODATA: データ無し ERROR_GRAPH_MEMORY: メモリ確保エラー */ template JPEGImage MSGraph2JPEGImage(MSGraph vp) { JPEGImage jp; int i, j, k, yp, zp; jp.init(); if (vp.isNull()) { jp.state = ERROR_GRAPH_NODATA; return jp; } jp.set(vp.xs, vp.ys, vp.zs); if (jp.isNull()) return jp; for (k=0; k