Difference between revisions of "psFile(API)"
(Created page with "Objects/DataExpress/'''psFile''' is API for ps file. == constant == #define MAX_STRING_LENGTH 256 #define PS_FILE_STATUS_ERROR (0) #d...") |
|||
| Line 1: | Line 1: | ||
| − | Objects/DataExpress/'''psFile''' is API for [[ | + | Objects/DataExpress/'''psFile''' is [[API]] for [[PostScript]] file. |
== constant == | == constant == | ||
| + | === Define of ps file === | ||
#define MAX_STRING_LENGTH 256 | #define MAX_STRING_LENGTH 256 | ||
| Line 20: | Line 21: | ||
#define PROLOG_END_PRO (9) | #define PROLOG_END_PRO (9) | ||
| + | === Draw Center marker === | ||
| + | Size | ||
| + | #define PS_IMAGE_CENTRE_LINE_WIDTH (0.1) | ||
| + | #define PS_IMAGE_CENTRE_MARK_LENGTH (0.01) | ||
| + | |||
| + | === Draw Scale === | ||
| + | Position | ||
typedef enum psImageScaleMode { | typedef enum psImageScaleMode { | ||
psImageScaleModeBottomLeft = 1, | psImageScaleModeBottomLeft = 1, | ||
| Line 25: | Line 33: | ||
} psImageScaleMode; | } psImageScaleMode; | ||
| − | + | Size | |
| − | + | ||
| − | + | ||
#define PS_IMAGE_SCALE_LINE_WIDTH0 (0.2) | #define PS_IMAGE_SCALE_LINE_WIDTH0 (0.2) | ||
#define PS_IMAGE_SCALE_LINE_WIDTH1 (0.1) | #define PS_IMAGE_SCALE_LINE_WIDTH1 (0.1) | ||
| Line 41: | Line 47: | ||
#define PS_IMAGE_SCALE_LINE_LENGTH40 (-1.0) | #define PS_IMAGE_SCALE_LINE_LENGTH40 (-1.0) | ||
| + | === Draw Contour Mode === | ||
#define psContourMode_DifferentLineWidthContour (0x01) | #define psContourMode_DifferentLineWidthContour (0x01) | ||
#define psContourMode_SameLineWidthContour (0x02) | #define psContourMode_SameLineWidthContour (0x02) | ||
| + | === Draw Circle === | ||
| + | Type | ||
| + | #define PS_LINE_CIRCLE_MODE (0) | ||
| + | #define PS_FILL_WHITE_CIRCLE_MODE (1) | ||
| + | #define PS_FILL_BLACK_CIRCLE_MODE (2) | ||
| + | |||
| + | === Plot === | ||
#define PS_PLOT_MODE_AXIS (0x000000ff) | #define PS_PLOT_MODE_AXIS (0x000000ff) | ||
#define PS_PLOT_MODE_AXIS_X_AXIS_POS (0x00000001) /* 0: Down 1: Up */ | #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_Y_AXIS_POS (0x00000002) /* 0: Left 1: Write */ | ||
#define PS_PLOT_MODE_AXIS (0x000000ff) | #define PS_PLOT_MODE_AXIS (0x000000ff) | ||
| − | |||
| − | |||
| − | |||
| − | |||
#define PS_PLOT_SCALE_X_AXIS_Y_POSITION_DOWN ( -5.0) | #define PS_PLOT_SCALE_X_AXIS_Y_POSITION_DOWN ( -5.0) | ||
| Line 58: | Line 68: | ||
== struct == | == struct == | ||
| − | + | === Management data === | |
| − | + | Manage ps file data by using list. | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
typedef struct psFile { | typedef struct psFile { | ||
FILE* fpt; | FILE* fpt; | ||
| Line 89: | Line 80: | ||
} psFile; | } psFile; | ||
| + | typedef long psParaTypeInteger; | ||
| + | typedef double psParaTypeReal; | ||
| + | |||
| + | === struct of Drawing Setting === | ||
typedef struct psImageInfo { | typedef struct psImageInfo { | ||
/* For Image Space */ | /* For Image Space */ | ||
| Line 174: | Line 169: | ||
} psImageInfo; | } psImageInfo; | ||
| + | === ps file Information === | ||
| + | typedef struct psInfo { | ||
| + | psParaTypeInteger prologInfoNum; | ||
| + | char** prologInfo; | ||
| + | char label[MAX_STRING_LENGTH]; | ||
| + | psParaTypeInteger page; | ||
| + | psParaTypeInteger status; | ||
| + | } psInfo; | ||
| + | |||
| + | === Page Information === | ||
| + | typedef struct psPageInfo psPageInfo; | ||
| + | |||
| + | struct psPageInfo { | ||
| + | psParaTypeInteger page; | ||
| + | psParaTypeInteger byte; | ||
| + | long start; | ||
| + | long end; | ||
| + | psPageInfo* next; | ||
| + | }; | ||
| + | |||
| + | === Plot === | ||
typedef struct psPlotInfo { | typedef struct psPlotInfo { | ||
psParaTypeReal scaleX; | psParaTypeReal scaleX; | ||
| Line 199: | Line 215: | ||
== API == | == API == | ||
| − | === | + | === Initialize === |
| + | psfileInformationps->info->prologInfoをメモリ確保して新規Createし,psfileps->fptを新規Createします.<br> | ||
| + | また,以降で使用するPostScriptの略記Commandもここで定義しています. | ||
extern void psFileInit(psFile* ps, psParaTypeInteger mode); | extern void psFileInit(psFile* ps, psParaTypeInteger mode); | ||
| − | === | + | === file読み出し === |
| + | filefptを読み出し,psへ格納します. | ||
| + | extern void psFileRead(psFile* ps, FILE* fpt, long mode); | ||
| + | |||
| + | === Header・フッタ・トレイラのWrite === | ||
| + | psfileps->fptにHeaderをWriteます.(ラベル: ps->info.label, ページNo.: ps->info.page) | ||
| + | mode=0の場合は左下部から各1cmずつ右上の位置を,そうでない場合は左下部の位置を原点とします. | ||
extern void psFilePageStart(psFile* ps, psParaTypeInteger mode); | extern void psFilePageStart(psFile* ps, psParaTypeInteger mode); | ||
| + | psfileps->fptにフッタをWriteます. | ||
extern void psFilePageEnd(psFile* ps, psParaTypeInteger mode); | extern void psFilePageEnd(psFile* ps, psParaTypeInteger mode); | ||
| − | + | psfileps->fptにトレイラを追加します. | |
| − | + | ||
extern void psFileEnd(psFile* ps); | extern void psFileEnd(psFile* ps); | ||
| − | === | + | === data判定 === |
| + | 文字列sがHeaderの場合は1を,そうでない場合は0を返します. | ||
| + | extern long psFileIsStartPage(psFile* ps, char* s); | ||
| + | 文字列sがフッタの場合は1を,そうでない場合は0を返します. | ||
| + | extern long psFileIsEndPage(psFile* ps, char* s); | ||
| + | |||
| + | === 描画 === | ||
| + | 基本的にこれらの[[API]]は引数psImageInfoの([[#描画Setting]])を使用したSettingで描画します.<br> | ||
| + | <br> | ||
| + | |||
| + | ==== 画像data ==== | ||
| + | 画像dataim.imageをpsfileps->fptへWriteます.<br> | ||
| + | フラグ(imのメンバ)によって画像の種類をSettingできます. | ||
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>Description</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>Otherwise</td> | ||
| + | <td>モノクロ256階調形式で書き込む</td> | ||
| + | </tr> | ||
| + | </table> | ||
| + | 各フラグは上の方が優先され,重複はしない.<br> | ||
| + | <br> | ||
| + | |||
| + | ==== 円 ==== | ||
| + | im.image内の正のdataを半径[pt]とした円をcoordinates(im.width, imheight)[pt]まで描画します. | ||
extern void psFileImageByCircles (psFile* ps, psImageInfo im, psParaTypeInteger mode); | extern void psFileImageByCircles (psFile* ps, psImageInfo im, psParaTypeInteger mode); | ||
| − | + | psに中心(cx, cy)[pt],半径r[pt]の円を描画します.modeにより円のタイプが選択できます. | |
| − | + | extern void psFileCircleCreate(psFile* ps, float cx, float cy, float r, long mode); | |
| − | extern void | + | <table border="1"> |
| − | + | <tr> | |
| − | + | <th>mode</th> | |
| − | + | <th>値</th> | |
| + | <th>円のタイプ</th> | ||
| + | </tr> | ||
| + | <tr> | ||
| + | <td>PS_LINE_CIRCLE_MODE</td> | ||
| + | <td>0</td> | ||
| + | <td>塗りつぶしなし</td> | ||
| + | </tr> | ||
| + | <tr> | ||
| + | <td>PS_FILL_WHITE_CIRCLE_MODE</td> | ||
| + | <td>1</td> | ||
| + | <td>白で塗りつぶす</td> | ||
| + | </tr> | ||
| + | <tr> | ||
| + | <td>PS_FILL_BLACK_CIRCLE_MODE</td> | ||
| + | <td>2</td> | ||
| + | <td>黒で塗りつぶす</td> | ||
| + | </tr> | ||
| + | </table> | ||
| + | <br> | ||
| − | === | + | ==== 線 ==== |
| + | psに描画する線のWidthlineWidthをSettingします. | ||
extern void psFileLineWidthSet (psFile* ps, float lineWidth); | extern void psFileLineWidthSet (psFile* ps, float lineWidth); | ||
| + | psに線(x1, y1) -> (x2, y2)を描画します. | ||
extern void psFileLineDraw(psFile* ps, float x1,float y1,float x2,float y2); | extern void psFileLineDraw(psFile* ps, float x1,float y1,float x2,float y2); | ||
| + | |||
| + | ==== 樹形図 ==== | ||
| + | psに2つの点をつなぐ樹形図を描画します. | ||
| + | width: 2点間の距離(Width), heightN: 要素Nに引く線の長さ(高さ)(N=1, 2), (x, y): 上段に引く線の中点 | ||
extern void psFileDendgramLineDraw(psFile* ps, float width,float height1, float height2, float x, float y); | extern void psFileDendgramLineDraw(psFile* ps, float width,float height1, float height2, float x, float y); | ||
| − | === | + | ==== 文字列 ==== |
| + | psに表示する文字列のフォントfontname,サイズfontsizeをSettingします. | ||
extern void psFileStringStatusSet(psFile* ps, char* fontname, double fontsize); | extern void psFileStringStatusSet(psFile* ps, char* fontname, double fontsize); | ||
| + | psに表示する文字列のフォント・サイズをデフォルトSettingします. | ||
extern void psFileStringDefaultStatusSet(psFile* ps); | extern void psFileStringDefaultStatusSet(psFile* ps); | ||
| + | psに文字列messageをcoordinates(x, y)[pt]に表示します. | ||
extern void psFileString (psFile* ps, char* message, double x, double y, psParaTypeInteger mode); | extern void psFileString (psFile* ps, char* message, double x, double y, psParaTypeInteger mode); | ||
| − | === | + | ==== 境界線 ==== |
| + | psに画像im.floatimageの境界線を描画します. | ||
extern void psFileContour(psFile* ps, psImageInfo im, psParaTypeInteger mode); | extern void psFileContour(psFile* ps, psImageInfo im, psParaTypeInteger mode); | ||
| − | === | + | ==== 中心マーカ ==== |
| − | extern void | + | psに中心マーカを描画します. |
| + | extern void psFileImageCentre (psFile* ps, psImageInfo im, psParaTypeInteger mode); | ||
| − | === | + | ==== スケール ==== |
| − | extern void | + | psにスケールを描画します.mode=psImageScaleModeBottomLeftの場合は左下部に,mode=psImageScaleModeCenterの場合は左中部に描画します. |
| + | extern void psFileImageScale (psFile* ps, psImageInfo im, psParaTypeInteger mode); | ||
| − | === | + | ==== 描画Setting ==== |
| − | extern | + | 文字及び点のスケールを(im.scaleX, im.scaleY)[pt]で,原点を(im.translateX, im.translateY)[inch]とします. |
| − | extern | + | extern void psFileImageSpaceSet (psFile* ps, psImageInfo im, psParaTypeInteger mode); |
| + | 文字及び点のスケール,原点を元に戻します. | ||
| + | extern void psFileImageSpaceRestore(psFile* ps, psImageInfo im, psParaTypeInteger mode); | ||
| + | 文字及び点の回転角度im.angleをSettingします. | ||
| + | extern void psFileImageSpaceRotateSet (psFile* ps, psImageInfo im, psParaTypeInteger mode); | ||
| + | 文字及び点の回転角度を元に戻します. | ||
| + | extern void psFileImageSpaceRotateRestore(psFile* ps, psImageInfo im, psParaTypeInteger mode); | ||
| + | <br> | ||
| + | これらの[[API]]は基本的に同じ~Setと~Restoreで処理を挟んで使用します.このとき,挟まれた処理にのみ~SetでのSettingが反映されます.<br> | ||
| + | <br> | ||
| + | 使用Example | ||
| + | <pre> | ||
| + | psFileImageSpaceSet( Setting1 ) | ||
| + | (処理1) | ||
| + | psFileImageSpaceRotateSet( 角度Setting1 ) | ||
| + | (処理2) | ||
| + | psFileImageSpaceSet( Setting2 ) | ||
| + | (処理3) | ||
| + | psFileImageSpaceRestore( ... ) | ||
| + | (処理4) | ||
| + | psFileImageSpaceRotateRestore( ... ) | ||
| + | (処理5) | ||
| + | psFileImageSpaceRestore( ... ) | ||
| + | </pre> | ||
| + | このExampleで,(Setting1)の有効範囲は(処理1) ~ (処理5),(角度Setting1)の有効範囲は(処理2) ~ (処理4),(Setting2)の有効範囲は(処理3)となっています.但し,(処理3)のスケール・原点については(Setting2)の方が(Setting1)よりも後にSettingされているので,こちらが反映されます.<br> | ||
| + | <br> | ||
Revision as of 04:09, 9 October 2014
Objects/DataExpress/psFile is API for PostScript file.
Contents
constant
Define of ps file
#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)
Draw Center marker
Size
#define PS_IMAGE_CENTRE_LINE_WIDTH (0.1) #define PS_IMAGE_CENTRE_MARK_LENGTH (0.01)
Draw Scale
Position
typedef enum psImageScaleMode {
psImageScaleModeBottomLeft = 1,
psImageScaleModeCenter = 2
} psImageScaleMode;
Size
#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)
Draw Contour Mode
#define psContourMode_DifferentLineWidthContour (0x01) #define psContourMode_SameLineWidthContour (0x02)
Draw Circle
Type
#define PS_LINE_CIRCLE_MODE (0) #define PS_FILL_WHITE_CIRCLE_MODE (1) #define PS_FILL_BLACK_CIRCLE_MODE (2)
Plot
#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_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)
struct
Management data
Manage ps file data by using list.
typedef struct psFile {
FILE* fpt;
psInfo info;
long headEnd;
psPageInfo* current;
psPageInfo* top;
psPageInfo* end;
long byte;
} psFile;
typedef long psParaTypeInteger; typedef double psParaTypeReal;
struct of Drawing Setting
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;
ps file Information
typedef struct psInfo {
psParaTypeInteger prologInfoNum;
char** prologInfo;
char label[MAX_STRING_LENGTH];
psParaTypeInteger page;
psParaTypeInteger status;
} psInfo;
Page Information
typedef struct psPageInfo psPageInfo;
struct psPageInfo {
psParaTypeInteger page;
psParaTypeInteger byte;
long start;
long end;
psPageInfo* next;
};
Plot
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
Initialize
psfileInformationps->info->prologInfoをメモリ確保して新規Createし,psfileps->fptを新規Createします.
また,以降で使用するPostScriptの略記Commandもここで定義しています.
extern void psFileInit(psFile* ps, psParaTypeInteger mode);
file読み出し
filefptを読み出し,psへ格納します.
extern void psFileRead(psFile* ps, FILE* fpt, long mode);
Header・フッタ・トレイラのWrite
psfileps->fptにHeaderをWriteます.(ラベル: ps->info.label, ページNo.: ps->info.page) mode=0の場合は左下部から各1cmずつ右上の位置を,そうでない場合は左下部の位置を原点とします.
extern void psFilePageStart(psFile* ps, psParaTypeInteger mode);
psfileps->fptにフッタをWriteます.
extern void psFilePageEnd(psFile* ps, psParaTypeInteger mode);
psfileps->fptにトレイラを追加します.
extern void psFileEnd(psFile* ps);
data判定
文字列sがHeaderの場合は1を,そうでない場合は0を返します.
extern long psFileIsStartPage(psFile* ps, char* s);
文字列sがフッタの場合は1を,そうでない場合は0を返します.
extern long psFileIsEndPage(psFile* ps, char* s);
描画
基本的にこれらのAPIは引数psImageInfoの(#描画Setting)を使用したSettingで描画します.
画像data
画像dataim.imageをpsfileps->fptへWriteます.
フラグ(imのメンバ)によって画像の種類をSettingできます.
extern void psFileImage (psFile* ps, psImageInfo im, psParaTypeInteger mode);
| imのフラグ | Description |
|---|---|
| flagRGBColor | RGB形式で書き込む |
| flagRGBGradientColor | RGB(グラデーション)形式で書き込む |
| flagHSBColor | HSB形式で書き込む(未対応) |
| flagHSBGradientColor | HSB(グラデーション)形式で書き込む(未対応) |
| Otherwise | モノクロ256階調形式で書き込む |
各フラグは上の方が優先され,重複はしない.
円
im.image内の正のdataを半径[pt]とした円をcoordinates(im.width, imheight)[pt]まで描画します.
extern void psFileImageByCircles (psFile* ps, psImageInfo im, psParaTypeInteger mode);
psに中心(cx, cy)[pt],半径r[pt]の円を描画します.modeにより円のタイプが選択できます.
extern void psFileCircleCreate(psFile* ps, float cx, float cy, float r, long mode);
| mode | 値 | 円のタイプ |
|---|---|---|
| PS_LINE_CIRCLE_MODE | 0 | 塗りつぶしなし |
| PS_FILL_WHITE_CIRCLE_MODE | 1 | 白で塗りつぶす |
| PS_FILL_BLACK_CIRCLE_MODE | 2 | 黒で塗りつぶす |
線
psに描画する線のWidthlineWidthをSettingします.
extern void psFileLineWidthSet (psFile* ps, float lineWidth);
psに線(x1, y1) -> (x2, y2)を描画します.
extern void psFileLineDraw(psFile* ps, float x1,float y1,float x2,float y2);
樹形図
psに2つの点をつなぐ樹形図を描画します. width: 2点間の距離(Width), heightN: 要素Nに引く線の長さ(高さ)(N=1, 2), (x, y): 上段に引く線の中点
extern void psFileDendgramLineDraw(psFile* ps, float width,float height1, float height2, float x, float y);
文字列
psに表示する文字列のフォントfontname,サイズfontsizeをSettingします.
extern void psFileStringStatusSet(psFile* ps, char* fontname, double fontsize);
psに表示する文字列のフォント・サイズをデフォルトSettingします.
extern void psFileStringDefaultStatusSet(psFile* ps);
psに文字列messageをcoordinates(x, y)[pt]に表示します.
extern void psFileString (psFile* ps, char* message, double x, double y, psParaTypeInteger mode);
境界線
psに画像im.floatimageの境界線を描画します.
extern void psFileContour(psFile* ps, psImageInfo im, psParaTypeInteger mode);
中心マーカ
psに中心マーカを描画します.
extern void psFileImageCentre (psFile* ps, psImageInfo im, psParaTypeInteger mode);
スケール
psにスケールを描画します.mode=psImageScaleModeBottomLeftの場合は左下部に,mode=psImageScaleModeCenterの場合は左中部に描画します.
extern void psFileImageScale (psFile* ps, psImageInfo im, psParaTypeInteger mode);
描画Setting
文字及び点のスケールを(im.scaleX, im.scaleY)[pt]で,原点を(im.translateX, im.translateY)[inch]とします.
extern void psFileImageSpaceSet (psFile* ps, psImageInfo im, psParaTypeInteger mode);
文字及び点のスケール,原点を元に戻します.
extern void psFileImageSpaceRestore(psFile* ps, psImageInfo im, psParaTypeInteger mode);
文字及び点の回転角度im.angleをSettingします.
extern void psFileImageSpaceRotateSet (psFile* ps, psImageInfo im, psParaTypeInteger mode);
文字及び点の回転角度を元に戻します.
extern void psFileImageSpaceRotateRestore(psFile* ps, psImageInfo im, psParaTypeInteger mode);
これらのAPIは基本的に同じ~Setと~Restoreで処理を挟んで使用します.このとき,挟まれた処理にのみ~SetでのSettingが反映されます.
使用Example
psFileImageSpaceSet( Setting1 ) (処理1) psFileImageSpaceRotateSet( 角度Setting1 ) (処理2) psFileImageSpaceSet( Setting2 ) (処理3) psFileImageSpaceRestore( ... ) (処理4) psFileImageSpaceRotateRestore( ... ) (処理5) psFileImageSpaceRestore( ... )
このExampleで,(Setting1)の有効範囲は(処理1) ~ (処理5),(角度Setting1)の有効範囲は(処理2) ~ (処理4),(Setting2)の有効範囲は(処理3)となっています.但し,(処理3)のスケール・原点については(Setting2)の方が(Setting1)よりも後にSettingされているので,こちらが反映されます.