「psFile(API)」の版間の差分

提供: Eospedia
移動: 案内検索
(定数)
(樹形図)
 
(同じ利用者による、間の12版が非表示)
行1: 行1:
Objects/DataExpress/'''psFile'''は[[PostScript]]ファイルを取り扱うためのAPI です。
+
Objects/DataExpress/'''psFile'''は[[PostScript]]ファイルを取り扱うための[[API]] です。
  
 
== 定数 ==
 
== 定数 ==
 +
=== psファイルでの定義 ===
 
  #define MAX_STRING_LENGTH 256
 
  #define MAX_STRING_LENGTH 256
 
                              
 
                              
行46: 行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_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)
 
  
 
=== 円の描画 ===
 
=== 円の描画 ===
行59: 行56:
 
  #define PS_FILL_WHITE_CIRCLE_MODE (1)
 
  #define PS_FILL_WHITE_CIRCLE_MODE (1)
 
  #define PS_FILL_BLACK_CIRCLE_MODE (2)
 
  #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_DOWN ( -5.0)
行65: 行68:
  
 
== 構造体 ==
 
== 構造体 ==
typedef long  psParaTypeInteger;
+
=== 管理データ ===
typedef double psParaTypeReal;
+
リスト構造により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 psFile {
 
  typedef struct psFile {
 
  FILE* fpt;
 
  FILE* fpt;
行96: 行80:
 
  } psFile;
 
  } psFile;
  
 +
typedef long  psParaTypeInteger;
 +
typedef double psParaTypeReal;
 +
 +
=== 描画設定用の構造体 ===
 
  typedef struct psImageInfo {
 
  typedef struct psImageInfo {
 
  /* For Image Space */
 
  /* For Image Space */
行181: 行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;
行208: 行217:
 
=== 初期化 ===
 
=== 初期化 ===
 
psファイル情報ps->info->prologInfoをメモリ確保して新規作成し、psファイルps->fptを新規作成します。<br>
 
psファイル情報ps->info->prologInfoをメモリ確保して新規作成し、psファイルps->fptを新規作成します。<br>
また、以降で使用するPostScriptの略記コマンドもここで定義しています。
+
また、以降で使用する[[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);
  
 
=== ヘッダ・フッタ・トレイラの書き込み ===
 
=== ヘッダ・フッタ・トレイラの書き込み ===
行219: 行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]]はim.width, im.heightにて描画サイズを設定し、
+
基本的にこれらの[[API]]は引数psImageInfoや([[#描画設定]])を使用した設定で描画します。<br>
psFileImageSpaceSetによりスケール及び位置を設定して描画します。<br>
+
 
<br>
 
<br>
  
行261: 行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により円のタイプが選択できます。
+
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">
行287: 行305:
 
<br>
 
<br>
  
ファイルpsに中心マーカを描画します。
+
==== 線 ====
 +
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);
 
  extern void psFileImageCentre      (psFile* ps, psImageInfo im, psParaTypeInteger mode);
ファイルpsにスケールを描画します。mode=psImageScaleModeBottomLeftの場合は左下部に、mode=psImageScaleModeCenterの場合は左中部に描画します。
+
 
 +
==== スケール ====
 +
psにスケールを描画します。mode=psImageScaleModeBottomLeftの場合は左下部に、mode=psImageScaleModeCenterの場合は左中部に描画します。
 
  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]とします。
 
文字及び点のスケールを(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);
行320: 行364:
 
この例で、(設定1)の有効範囲は(処理1) ~ (処理5)、(角度設定1)の有効範囲は(処理2) ~ (処理4)、(設定2)の有効範囲は(処理3)となっています。但し、(処理3)のスケール・原点については(設定2)の方が(設定1)よりも後に設定されているので、こちらが反映されます。<br>
 
この例で、(設定1)の有効範囲は(処理1) ~ (処理5)、(角度設定1)の有効範囲は(処理2) ~ (処理4)、(設定2)の有効範囲は(処理3)となっています。但し、(処理3)のスケール・原点については(設定2)の方が(設定1)よりも後に設定されているので、こちらが反映されます。<br>
 
<br>
 
<br>
 
===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);
 

2014年10月9日 (木) 05:07時点における最新版

Objects/DataExpress/psFilePostScriptファイルを取り扱うための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)よりも後に設定されているので、こちらが反映されます。