「psFile(API)」の版間の差分
(→樹形図) |
|||
(同じ利用者による、間の16版が非表示) | |||
行1: | 行1: | ||
− | Objects/DataExpress/'''psFile'''は[[PostScript]] | + | Objects/DataExpress/'''psFile'''は[[PostScript]]ファイルを取り扱うための[[API]] です。 |
== 定数 == | == 定数 == | ||
+ | === psファイルでの定義 === | ||
#define MAX_STRING_LENGTH 256 | #define MAX_STRING_LENGTH 256 | ||
行20: | 行21: | ||
#define PROLOG_END_PRO (9) | #define PROLOG_END_PRO (9) | ||
+ | === 中心マーカの描画 === | ||
+ | サイズ | ||
+ | #define PS_IMAGE_CENTRE_LINE_WIDTH (0.1) | ||
+ | #define PS_IMAGE_CENTRE_MARK_LENGTH (0.01) | ||
+ | |||
+ | === スケールの描画 === | ||
+ | 位置 | ||
typedef enum psImageScaleMode { | typedef enum psImageScaleMode { | ||
psImageScaleModeBottomLeft = 1, | psImageScaleModeBottomLeft = 1, | ||
行25: | 行33: | ||
} psImageScaleMode; | } psImageScaleMode; | ||
− | + | サイズ | |
− | + | ||
− | + | ||
− | + | ||
#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) | ||
行42: | 行47: | ||
#define PS_IMAGE_SCALE_LINE_LENGTH40 (-1.0) | #define PS_IMAGE_SCALE_LINE_LENGTH40 (-1.0) | ||
+ | === 境界線の描画モード === | ||
#define psContourMode_DifferentLineWidthContour (0x01) | #define psContourMode_DifferentLineWidthContour (0x01) | ||
#define psContourMode_SameLineWidthContour (0x02) | #define psContourMode_SameLineWidthContour (0x02) | ||
+ | === 円の描画 === | ||
+ | タイプ | ||
+ | #define PS_LINE_CIRCLE_MODE (0) | ||
+ | #define PS_FILL_WHITE_CIRCLE_MODE (1) | ||
+ | #define PS_FILL_BLACK_CIRCLE_MODE (2) | ||
+ | |||
+ | === プロット === | ||
#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) | ||
行60: | 行68: | ||
== 構造体 == | == 構造体 == | ||
− | + | === 管理データ === | |
− | + | リスト構造によりpsファイルのデータを管理します。 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
typedef struct psFile { | typedef struct psFile { | ||
FILE* fpt; | FILE* fpt; | ||
行91: | 行80: | ||
} psFile; | } psFile; | ||
+ | typedef long psParaTypeInteger; | ||
+ | typedef double psParaTypeReal; | ||
+ | |||
+ | === 描画設定用の構造体 === | ||
typedef struct psImageInfo { | typedef struct psImageInfo { | ||
/* For Image Space */ | /* For Image Space */ | ||
行176: | 行169: | ||
} psImageInfo; | } psImageInfo; | ||
+ | === psファイル情報 === | ||
+ | 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 psPlotInfo { | typedef struct psPlotInfo { | ||
psParaTypeReal scaleX; | psParaTypeReal scaleX; | ||
行203: | 行217: | ||
=== 初期化 === | === 初期化 === | ||
psファイル情報ps->info->prologInfoをメモリ確保して新規作成し、psファイルps->fptを新規作成します。<br> | psファイル情報ps->info->prologInfoをメモリ確保して新規作成し、psファイルps->fptを新規作成します。<br> | ||
− | + | また、以降で使用する[[PostScript]]の略記コマンドもここで定義しています。 | |
extern void psFileInit(psFile* ps, psParaTypeInteger mode); | extern void psFileInit(psFile* ps, psParaTypeInteger mode); | ||
+ | |||
+ | === ファイル読み出し === | ||
+ | ファイルfptを読み出し、psへ格納します。 | ||
+ | extern void psFileRead(psFile* ps, FILE* fpt, long mode); | ||
=== ヘッダ・フッタ・トレイラの書き込み === | === ヘッダ・フッタ・トレイラの書き込み === | ||
行214: | 行232: | ||
psファイルps->fptにトレイラを追加します。 | psファイルps->fptにトレイラを追加します。 | ||
extern void psFileEnd(psFile* ps); | extern void psFileEnd(psFile* ps); | ||
+ | |||
+ | === データ判定 === | ||
+ | 文字列sがヘッダの場合は1を、そうでない場合は0を返します。 | ||
+ | extern long psFileIsStartPage(psFile* ps, char* s); | ||
+ | 文字列sがフッタの場合は1を、そうでない場合は0を返します。 | ||
+ | extern long psFileIsEndPage(psFile* ps, char* s); | ||
=== 描画 === | === 描画 === | ||
− | 基本的にこれらの[[API]] | + | 基本的にこれらの[[API]]は引数psImageInfoや([[#描画設定]])を使用した設定で描画します。<br> |
− | + | ||
<br> | <br> | ||
行256: | 行279: | ||
im.image内の正のデータを半径[pt]とした円を座標(im.width, imheight)[pt]まで描画します。 | im.image内の正のデータを半径[pt]とした円を座標(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 psFileCircleCreate(psFile* ps, float cx, float cy, float r, long mode); | ||
<table border="1"> | <table border="1"> | ||
行282: | 行305: | ||
<br> | <br> | ||
− | + | ==== 線 ==== | |
− | + | psに描画する線の幅lineWidthを設定します。 | |
− | + | ||
− | + | ||
− | === | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
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点間の距離(幅), 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を設定します。 | ||
extern void psFileStringStatusSet(psFile* ps, char* fontname, double fontsize); | extern void psFileStringStatusSet(psFile* ps, char* fontname, double fontsize); | ||
+ | psに表示する文字列のフォント・サイズをデフォルト設定します。 | ||
extern void psFileStringDefaultStatusSet(psFile* ps); | extern void psFileStringDefaultStatusSet(psFile* ps); | ||
+ | psに文字列messageを座標(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 | + | psにスケールを描画します。mode=psImageScaleModeBottomLeftの場合は左下部に、mode=psImageScaleModeCenterの場合は左中部に描画します。 |
− | extern | + | 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 psFileImageSpaceRestore(psFile* ps, psImageInfo im, psParaTypeInteger mode); | ||
+ | 文字及び点の回転角度im.angleを設定します。 | ||
+ | extern void psFileImageSpaceRotateSet (psFile* ps, psImageInfo im, psParaTypeInteger mode); | ||
+ | 文字及び点の回転角度を元に戻します。 | ||
+ | extern void psFileImageSpaceRotateRestore(psFile* ps, psImageInfo im, psParaTypeInteger mode); | ||
+ | <br> | ||
+ | これらの[[API]]は基本的に同じ~Setと~Restoreで処理を挟んで使用します。このとき、挟まれた処理にのみ~Setでの設定が反映されます。<br> | ||
+ | <br> | ||
+ | 使用例 | ||
+ | <pre> | ||
+ | psFileImageSpaceSet( 設定1 ) | ||
+ | (処理1) | ||
+ | psFileImageSpaceRotateSet( 角度設定1 ) | ||
+ | (処理2) | ||
+ | psFileImageSpaceSet( 設定2 ) | ||
+ | (処理3) | ||
+ | psFileImageSpaceRestore( ... ) | ||
+ | (処理4) | ||
+ | psFileImageSpaceRotateRestore( ... ) | ||
+ | (処理5) | ||
+ | psFileImageSpaceRestore( ... ) | ||
+ | </pre> | ||
+ | この例で、(設定1)の有効範囲は(処理1) ~ (処理5)、(角度設定1)の有効範囲は(処理2) ~ (処理4)、(設定2)の有効範囲は(処理3)となっています。但し、(処理3)のスケール・原点については(設定2)の方が(設定1)よりも後に設定されているので、こちらが反映されます。<br> | ||
+ | <br> |
2014年10月9日 (木) 05:07時点における最新版
Objects/DataExpress/psFileはPostScriptファイルを取り扱うためのAPI です。
目次
定数
psファイルでの定義
#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)
中心マーカの描画
サイズ
#define PS_IMAGE_CENTRE_LINE_WIDTH (0.1) #define PS_IMAGE_CENTRE_MARK_LENGTH (0.01)
スケールの描画
位置
typedef enum psImageScaleMode { psImageScaleModeBottomLeft = 1, psImageScaleModeCenter = 2 } psImageScaleMode;
サイズ
#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_LINE_CIRCLE_MODE (0) #define PS_FILL_WHITE_CIRCLE_MODE (1) #define PS_FILL_BLACK_CIRCLE_MODE (2)
プロット
#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)
構造体
管理データ
リスト構造によりpsファイルのデータを管理します。
typedef struct psFile { FILE* fpt; psInfo info; long headEnd; psPageInfo* current; psPageInfo* top; psPageInfo* end; long byte; } psFile;
typedef long psParaTypeInteger; typedef double psParaTypeReal;
描画設定用の構造体
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ファイル情報
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 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を新規作成します。
また、以降で使用するPostScriptの略記コマンドもここで定義しています。
extern void psFileInit(psFile* ps, psParaTypeInteger mode);
ファイル読み出し
ファイルfptを読み出し、psへ格納します。
extern void psFileRead(psFile* ps, FILE* fpt, long 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);
データ判定
文字列sがヘッダの場合は1を、そうでない場合は0を返します。
extern long psFileIsStartPage(psFile* ps, char* s);
文字列sがフッタの場合は1を、そうでない場合は0を返します。
extern long psFileIsEndPage(psFile* ps, char* s);
描画
基本的にこれらのAPIは引数psImageInfoや(#描画設定)を使用した設定で描画します。
画像データ
画像データim.imageをpsファイルps->fptへ書き込みます。
フラグ(imのメンバ)によって画像の種類を設定できます。
extern void psFileImage (psFile* ps, psImageInfo im, psParaTypeInteger mode);
imのフラグ | 説明 |
---|---|
flagRGBColor | RGB形式で書き込む |
flagRGBGradientColor | RGB(グラデーション)形式で書き込む |
flagHSBColor | HSB形式で書き込む(未対応) |
flagHSBGradientColor | HSB(グラデーション)形式で書き込む(未対応) |
それ以外 | モノクロ256階調形式で書き込む |
各フラグは上の方が優先され、重複はしない。
円
im.image内の正のデータを半径[pt]とした円を座標(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に描画する線の幅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);
樹形図
psに2つの点をつなぐ樹形図を描画します。 width: 2点間の距離(幅), 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を設定します。
extern void psFileStringStatusSet(psFile* ps, char* fontname, double fontsize);
psに表示する文字列のフォント・サイズをデフォルト設定します。
extern void psFileStringDefaultStatusSet(psFile* ps);
psに文字列messageを座標(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);
描画設定
文字及び点のスケールを(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を設定します。
extern void psFileImageSpaceRotateSet (psFile* ps, psImageInfo im, psParaTypeInteger mode);
文字及び点の回転角度を元に戻します。
extern void psFileImageSpaceRotateRestore(psFile* ps, psImageInfo im, psParaTypeInteger mode);
これらのAPIは基本的に同じ~Setと~Restoreで処理を挟んで使用します。このとき、挟まれた処理にのみ~Setでの設定が反映されます。
使用例
psFileImageSpaceSet( 設定1 ) (処理1) psFileImageSpaceRotateSet( 角度設定1 ) (処理2) psFileImageSpaceSet( 設定2 ) (処理3) psFileImageSpaceRestore( ... ) (処理4) psFileImageSpaceRotateRestore( ... ) (処理5) psFileImageSpaceRestore( ... )
この例で、(設定1)の有効範囲は(処理1) ~ (処理5)、(角度設定1)の有効範囲は(処理2) ~ (処理4)、(設定2)の有効範囲は(処理3)となっています。但し、(処理3)のスケール・原点については(設定2)の方が(設定1)よりも後に設定されているので、こちらが反映されます。