「psFile(API)」の版間の差分
提供: Eospedia
(→API) |
(→API) |
||
行199: | 行199: | ||
== API == | == API == | ||
− | ===初期化=== | + | === 初期化 === |
− | psファイル情報ps->info->prologInfoをメモリ確保して新規作成し、psファイルps->fptを新規作成します。 | + | psファイル情報ps->info->prologInfoをメモリ確保して新規作成し、psファイルps->fptを新規作成します。<br> |
+ | また、以降で使用するポストスクリプトもここで定義しています。 | ||
extern void psFileInit(psFile* ps, psParaTypeInteger mode); | extern void psFileInit(psFile* ps, psParaTypeInteger mode); | ||
− | === | + | === ヘッダ・フッタ・トレイラの書き込み === |
− | psファイルps-> | + | psファイルps->fptにヘッダを書き込みます。(ラベル: ps->info.label, ページNo.: ps->info.page) |
+ | mode=0の場合は左下部から各1cmずつ右上の位置を、そうでない場合は左下部の位置を原点とします。 | ||
extern void psFilePageStart(psFile* ps, psParaTypeInteger mode); | extern void psFilePageStart(psFile* ps, psParaTypeInteger mode); | ||
− | psファイルps-> | + | psファイルps->fptにフッタを書き込みます。 |
extern void psFilePageEnd(psFile* ps, psParaTypeInteger mode); | extern void psFilePageEnd(psFile* ps, psParaTypeInteger mode); | ||
− | |||
− | |||
psファイルps->fptにトレイラを追加します。 | psファイルps->fptにトレイラを追加します。 | ||
extern void psFileEnd(psFile* ps); | extern void psFileEnd(psFile* ps); | ||
− | === | + | === 描画 === |
+ | ==== 画像データ ==== | ||
+ | 画像データim.imageをpsファイルps->fptへ書き込みます。<br> | ||
+ | psFileImageSpaceSetを使用して、書き込むスケールと位置を設定します。<br> | ||
+ | フラグ(imのメンバ)によって画像の種類を設定できます。 | ||
extern void psFileImage (psFile* ps, psImageInfo im, psParaTypeInteger mode); | extern void psFileImage (psFile* ps, psImageInfo im, psParaTypeInteger mode); | ||
+ | <table border="1"> | ||
+ | <tr> | ||
+ | <th>imのフラグ</th> | ||
+ | <th>説明</th> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>flagRGBColor</td> | ||
+ | <td>RGB形式で書き込む</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>flagRGBGradientColor</td> | ||
+ | <td>RGB(グラデーション)形式で書き込む</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>flagHSBColor</td> | ||
+ | <td>HSB形式で書き込む(未対応)</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>flagHSBGradientColor</td> | ||
+ | <td>HSB(グラデーション)形式で書き込む(未対応)</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>それ以外</td> | ||
+ | <td>モノクロ256階調形式で書き込む</td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | 各フラグは上の方が優先され、重複はしない。<br> | ||
+ | <br> | ||
+ | |||
+ | ==== 円 ==== | ||
extern void psFileImageByCircles (psFile* ps, psImageInfo im, psParaTypeInteger mode); | extern void psFileImageByCircles (psFile* ps, psImageInfo im, psParaTypeInteger mode); | ||
+ | ファイルpsに中心(cx, cy)、半径rの円を描画します。modeにより円のタイプが選択できます。 | ||
+ | extern void psFileCircleCreate(psFile* ps, float cx, float cy, float r, long mode); | ||
+ | <table border="1"> | ||
+ | <tr> | ||
+ | <th>mode</th> | ||
+ | <th>値</th> | ||
+ | <th>説明</th> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td></td> | ||
+ | <td></td> | ||
+ | <td></td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | <br> | ||
+ | |||
extern void psFileImageCentre (psFile* ps, psImageInfo im, psParaTypeInteger mode); | extern void psFileImageCentre (psFile* ps, psImageInfo im, psParaTypeInteger mode); | ||
extern void psFileImageScale (psFile* ps, psImageInfo im, psParaTypeInteger mode); | extern void psFileImageScale (psFile* ps, psImageInfo im, psParaTypeInteger mode); | ||
+ | |||
+ | === スケール・原点・回転角度の設定 === | ||
+ | 文字及び点のスケールを(im.scaleX, im.scaleY)[pt]で、原点を(im.translateX, im.translateY)[inch]とします。 | ||
extern void psFileImageSpaceSet (psFile* ps, psImageInfo im, psParaTypeInteger mode); | extern void psFileImageSpaceSet (psFile* ps, psImageInfo im, psParaTypeInteger mode); | ||
+ | 文字及び点の回転角度im.angleを設定します。 | ||
extern void psFileImageSpaceRotateSet (psFile* ps, psImageInfo im, psParaTypeInteger mode); | extern void psFileImageSpaceRotateSet (psFile* ps, psImageInfo im, psParaTypeInteger mode); | ||
+ | 文字及び点のスケール、原点を元に戻します。(実際は最後に記録した設定まで戻す) | ||
extern void psFileImageSpaceRestore(psFile* ps, psImageInfo im, psParaTypeInteger mode); | extern void psFileImageSpaceRestore(psFile* ps, psImageInfo im, psParaTypeInteger mode); | ||
+ | 文字及び点の回転角度を元に戻します。(実際は最後に記録した設定まで戻す) | ||
extern void psFileImageSpaceRotateRestore(psFile* ps, psImageInfo im, psParaTypeInteger mode); | extern void psFileImageSpaceRotateRestore(psFile* ps, psImageInfo im, psParaTypeInteger mode); | ||
行235: | 行291: | ||
===psFileContour=== | ===psFileContour=== | ||
extern void psFileContour(psFile* ps, psImageInfo im, psParaTypeInteger mode); | extern void psFileContour(psFile* ps, psImageInfo im, psParaTypeInteger mode); | ||
− | |||
− | |||
− | |||
===psFileRead=== | ===psFileRead=== |
2014年10月8日 (水) 07:15時点における版
Objects/DataExpress/psFileはpsファイルを取り扱うためのAPI です。
目次
定数
#define MAX_STRING_LENGTH 256 #define PS_FILE_STATUS_ERROR (0) #define PS_FILE_STATUS_OK (1)
#define PROLOG_STRING_NUM (11)
#define PROLOG_VERSION (0) #define PROLOG_TITLE (1) #define PROLOG_CREATOR (2) #define PROLOG_CREATION_DATE (3) #define PROLOG_FOR (4) #define PROLOG_BOUND_BOX (5) #define PROLOG_PAGES (6) #define PROLOG_DOC_FONTS (7) #define PROLOG_END_DOC (8) #define PROLOG_END_PRO (9)
typedef enum psImageScaleMode { psImageScaleModeBottomLeft = 1, psImageScaleModeCenter = 2 } psImageScaleMode;
#define PS_IMAGE_CENTRE_LINE_WIDTH (0.1) #define PS_IMAGE_CENTRE_MARK_LENGTH (0.01)
#define PS_IMAGE_SCALE_LINE_WIDTH0 (0.2) #define PS_IMAGE_SCALE_LINE_WIDTH1 (0.1) #define PS_IMAGE_SCALE_LINE_LENGTH0 (10.0) #define PS_IMAGE_SCALE_LINE_LENGTH1 (5.0) #define PS_IMAGE_SCALE_LINE_LENGTH2 (3.0) #define PS_IMAGE_SCALE_LINE_LENGTH3 (2.0) #define PS_IMAGE_SCALE_LINE_LENGTH4 (1.0) #define PS_IMAGE_SCALE_LINE_LENGTH00 (-10.0) #define PS_IMAGE_SCALE_LINE_LENGTH10 (-5.0) #define PS_IMAGE_SCALE_LINE_LENGTH20 (-3.0) #define PS_IMAGE_SCALE_LINE_LENGTH30 (-2.0) #define PS_IMAGE_SCALE_LINE_LENGTH40 (-1.0)
#define psContourMode_DifferentLineWidthContour (0x01) #define psContourMode_SameLineWidthContour (0x02)
#define PS_PLOT_MODE_AXIS (0x000000ff) #define PS_PLOT_MODE_AXIS_X_AXIS_POS (0x00000001) /* 0: Down 1: Up */ #define PS_PLOT_MODE_AXIS_Y_AXIS_POS (0x00000002) /* 0: Left 1: Write */ #define PS_PLOT_MODE_AXIS (0x000000ff)
#define PS_LINE_CIRCLE_MODE (0) #define PS_FILL_WHITE_CIRCLE_MODE (1) #define PS_FILL_BLACK_CIRCLE_MODE (2)
#define PS_PLOT_SCALE_X_AXIS_Y_POSITION_DOWN ( -5.0) #define PS_PLOT_SCALE_X_AXIS_Y_POSITION_UP (105.0) #define PS_PLOT_SCALE_X_AXIS_LENGTH (1.0)
構造体
typedef long psParaTypeInteger; typedef double psParaTypeReal;
typedef struct psInfo { psParaTypeInteger prologInfoNum; char** prologInfo; char label[MAX_STRING_LENGTH]; psParaTypeInteger page; psParaTypeInteger status; } psInfo;
typedef struct psPageInfo psPageInfo;
struct psPageInfo { psParaTypeInteger page; psParaTypeInteger byte; long start; long end; psPageInfo* next; };
typedef struct psFile { FILE* fpt; psInfo info; long headEnd; psPageInfo* current; psPageInfo* top; psPageInfo* end; long byte; } psFile;
typedef struct psImageInfo { /* For Image Space */ psParaTypeReal scaleX; psParaTypeReal scaleY; psParaTypeReal translateX; psParaTypeReal translateY; psParaTypeReal angle; /* Image Size */ psParaTypeInteger width; psParaTypeInteger height; psParaTypeInteger section; /* For Contour */ psParaTypeInteger bps; psParaTypeInteger nContour; psParaTypeReal* contourLevel; /* For Density Image */ unsigned char* image; /* For Contour */ float* floatImage; psParaTypeReal contourLineColorChange; psParaTypeReal contourLineWidthStart; psParaTypeReal contourLineWidthStep; /* For 3D Contour */ psParaTypeReal eyeX; /* Eye Position */ psParaTypeReal eyeY; psParaTypeReal eyeZ; psParaTypeReal pointX; /* Projection Surface Position */ psParaTypeReal pointY; /* Surface Normal: (position - eye) */ psParaTypeReal pointZ; /* For Colour */ psParaTypeInteger flagRGBColor; psParaTypeInteger flagRGBGradientColor; psParaTypeReal Red; psParaTypeReal Green; psParaTypeReal Blue; psParaTypeReal RedFirst; psParaTypeReal GreenFirst; psParaTypeReal BlueFirst; psParaTypeReal RedLast; psParaTypeReal GreenLast; psParaTypeReal BlueLast; psParaTypeInteger flagHSBColor; psParaTypeInteger flagHSBGradientColor; psParaTypeReal Hue; psParaTypeReal Saturation; psParaTypeReal Brightness; psParaTypeReal HueFirst; psParaTypeReal SaturationFirst; psParaTypeReal BrightnessFirst; psParaTypeReal HueLast; psParaTypeReal SaturationLast; psParaTypeReal BrightnessLast; /* For Line Colour */ psParaTypeInteger flagLineRGBColor; psParaTypeInteger flagLineRGBGradientColor; psParaTypeReal LineRed; psParaTypeReal LineGreen; psParaTypeReal LineBlue; psParaTypeReal LineRedFirst; psParaTypeReal LineGreenFirst; psParaTypeReal LineBlueFirst; psParaTypeReal LineRedLast; psParaTypeReal LineGreenLast; psParaTypeReal LineBlueLast; psParaTypeInteger flagLineHSBColor; psParaTypeInteger flagLineHSBGradientColor; psParaTypeReal LineHue; psParaTypeReal LineSaturation; psParaTypeReal LineBrightness; psParaTypeReal LineHueFirst; psParaTypeReal LineSaturationFirst; psParaTypeReal LineBrightnessFirst; psParaTypeReal LineHueLast; psParaTypeReal LineSaturationLast; psParaTypeReal LineBrightnessLast; /* For Circle */ psParaTypeReal CircleRadius; long dummy; } psImageInfo;
typedef struct psPlotInfo { psParaTypeReal scaleX; psParaTypeReal scaleY; psParaTypeReal translateX; psParaTypeReal translateY; psParaTypeReal dX; psParaTypeReal dXValue; psParaTypeReal minX; psParaTypeReal centreX; psParaTypeReal maxX; char* labelX; psParaTypeReal dY; psParaTypeReal dYValue; psParaTypeReal minY; psParaTypeReal centreY; psParaTypeReal maxY; char* labelY; psParaTypeInteger nData; psParaTypeReal *data; } psPlotInfo;
API
初期化
psファイル情報ps->info->prologInfoをメモリ確保して新規作成し、psファイルps->fptを新規作成します。
また、以降で使用するポストスクリプトもここで定義しています。
extern void psFileInit(psFile* ps, psParaTypeInteger mode);
ヘッダ・フッタ・トレイラの書き込み
psファイルps->fptにヘッダを書き込みます。(ラベル: ps->info.label, ページNo.: ps->info.page) mode=0の場合は左下部から各1cmずつ右上の位置を、そうでない場合は左下部の位置を原点とします。
extern void psFilePageStart(psFile* ps, psParaTypeInteger mode);
psファイルps->fptにフッタを書き込みます。
extern void psFilePageEnd(psFile* ps, psParaTypeInteger mode);
psファイルps->fptにトレイラを追加します。
extern void psFileEnd(psFile* ps);
描画
画像データ
画像データim.imageをpsファイルps->fptへ書き込みます。
psFileImageSpaceSetを使用して、書き込むスケールと位置を設定します。
フラグ(imのメンバ)によって画像の種類を設定できます。
extern void psFileImage (psFile* ps, psImageInfo im, psParaTypeInteger mode);
imのフラグ | 説明 |
---|---|
flagRGBColor | RGB形式で書き込む |
flagRGBGradientColor | RGB(グラデーション)形式で書き込む |
flagHSBColor | HSB形式で書き込む(未対応) |
flagHSBGradientColor | HSB(グラデーション)形式で書き込む(未対応) |
それ以外 | モノクロ256階調形式で書き込む |
各フラグは上の方が優先され、重複はしない。
円
extern void psFileImageByCircles (psFile* ps, psImageInfo im, psParaTypeInteger mode);
ファイルpsに中心(cx, cy)、半径rの円を描画します。modeにより円のタイプが選択できます。
extern void psFileCircleCreate(psFile* ps, float cx, float cy, float r, long mode);
mode | 値 | 説明 |
---|---|---|
extern void psFileImageCentre (psFile* ps, psImageInfo im, psParaTypeInteger mode); extern void psFileImageScale (psFile* ps, psImageInfo im, psParaTypeInteger mode);
スケール・原点・回転角度の設定
文字及び点のスケールを(im.scaleX, im.scaleY)[pt]で、原点を(im.translateX, im.translateY)[inch]とします。
extern void psFileImageSpaceSet (psFile* ps, psImageInfo im, psParaTypeInteger mode);
文字及び点の回転角度im.angleを設定します。
extern void psFileImageSpaceRotateSet (psFile* ps, psImageInfo im, psParaTypeInteger mode);
文字及び点のスケール、原点を元に戻します。(実際は最後に記録した設定まで戻す)
extern void psFileImageSpaceRestore(psFile* ps, psImageInfo im, psParaTypeInteger mode);
文字及び点の回転角度を元に戻します。(実際は最後に記録した設定まで戻す)
extern void psFileImageSpaceRotateRestore(psFile* ps, psImageInfo im, psParaTypeInteger mode);
psFileLine
extern void psFileLineWidthSet (psFile* ps, float lineWidth); extern void psFileLineDraw(psFile* ps, float x1,float y1,float x2,float y2); extern void psFileDendgramLineDraw(psFile* ps, float width,float height1, float height2, float x, float y);
psFileString
extern void psFileStringStatusSet(psFile* ps, char* fontname, double fontsize); extern void psFileStringDefaultStatusSet(psFile* ps); extern void psFileString (psFile* ps, char* message, double x, double y, psParaTypeInteger mode);
psFileContour
extern void psFileContour(psFile* ps, psImageInfo im, psParaTypeInteger mode);
psFileRead
extern void psFileRead(psFile* ps, FILE* fpt, long mode);
psFileUtil
extern long psFileIsStartPage(psFile* ps, char* s); extern long psFileIsEndPage(psFile* ps, char* s);