📄 xgdatamacros.h
字号:
/*********************************************************************//* Change #define's in the following header file to build XGrafix *//* with the type desired: SCALAR = float or double */#include "xgscalar.h"#define LINE_PLOT 1#define SCATTER_PLOT 2#define VECTOR_PLOT 3#define SURFACE_PLOT 4#define SCATTER3D 5#define IRREGULAR3D 6/*****************//* For 2D graphs */#define CurveX(data,index) ((data)->x[(index)*(data)->xArraySize+(data)->xArrayOffset])#define CurveY(data,index) ((data)->y[(index)*(data)->yArraySize+(data)->yArrayOffset])/*********************//* For Vector graphs */#define VectorX(data,index) ((data)->x[(index)*(data)->xArraySize+(data)->xArrayOffset])#define VectorY(data,index) ((data)->y[(index)*(data)->yArraySize+(data)->yArrayOffset])#define VectorW(data,index1,index2) ((data)->w[(index1)][(index2)*(data)->wArraySize+(data)->wArrayOffset])#define VectorZ(data,index1,index2) ((data)->z[(index1)][(index2)*(data)->zArraySize+(data)->zArrayOffset])/*************************//* For 3D surface graphs */#define SurfaceX(data,index) ((data)->x[(index)*(data)->xArraySize+(data)->xArrayOffset])#define SurfaceY(data,index) ((data)->y[(index)*(data)->yArraySize+(data)->yArrayOffset])#define SurfaceZ(data,index1,index2) ((data)->z[(index1)][(index2)*(data)->zArraySize+(data)->zArrayOffset])/***************************//* For 3D irregular graphs */#define IrregularX(data,index1,index2) ((data)->x_irr[(index1)][(index2)*(data)->xArraySize+(data)->xArrayOffset])#define IrregularY(data,index1,index2) ((data)->y_irr[(index1)][(index2)*(data)->yArraySize+(data)->yArrayOffset])#define IrregularZ(data,index1,index2) ((data)->z[(index1)][(index2)*(data)->zArraySize+(data)->zArrayOffset])/*************************//* For 3D scatter graphs */#define ScatterX(data,index) ((data)->x[(index)*(data)->xArraySize+(data)->xArrayOffset])#define ScatterY(data,index) ((data)->y[(index)*(data)->yArraySize+(data)->yArrayOffset])#define ScatterZ(data,index) ((data)->zscat[(index)*(data)->zArraySize+(data)->zArrayOffset])typedef struct data *DataType;struct data { SCALAR** w; SCALAR** z; SCALAR* zscat; SCALAR* y; SCALAR** y_irr; SCALAR* x; SCALAR** x_irr; SCALAR xCoord; SCALAR yCoord; int *mpoints; int *npoints; int color; int state; DataType next; int wArraySize; int xArraySize; int yArraySize; int zArraySize; int wArrayOffset; int xArrayOffset; int yArrayOffset; int zArrayOffset;};typedef struct label *LabelType;struct label { double Z_Scale; double Z_Min; double Z_Max; char *Z_Label; int Z_Auto_Rescale; double Y_Scale; double Y_Offset; double Y_Min; double Y_Max; char *Y_Label; int Y_Auto_Rescale; double X_Scale; double X_Offset; double X_Min; double X_Max; char *X_Label; int X_Auto_Rescale;};typedef enum { FILLED, HOLLOW } STRUCT_FILL;typedef struct struct_object { int numberPoints; STRUCT_FILL fillFlag; int lineColor; int fillColor; double *x; double *y; struct struct_object *next;} StructType;typedef enum { LITTLE, BIG } ENDIAN;extern ENDIAN theEndian;/***************************************************//* Defining macros used in XGRAFIX macros */#define Is_Zeroth_Set(x) (((x)& 1) == 1)#define Is_First_Set(x) (((x)& 2) == 2)#define Is_Second_Set(x) (((x)& 4) == 4)#define Is_Third_Set(x) (((x)& 8) == 8)#define Is_Fourth_Set(x) (((x)& 16) == 16)#define Is_Fifth_Set(x) (((x)& 32) == 32)#define Is_Sixth_Set(x) (((x)& 64) == 64)#define Is_Seventh_Set(x) (((x)&128) == 128)#define Is_Eighth_Set(x) (((x)&256) == 256)#define Is_Ninth_Set(x) (((x)&512) == 512)#define Is_Tenth_Set(x) (((x)&1024) == 1024)#define Is_Eleventh_Set(x) (((x)&2048) == 2048)#define Is_Twelveth_Set(x) (((x)&4096) == 4096)#define Is_Thirteenth_Set(x) (((x)&8192) == 8192)#define Is_Fourteenth_Set(x) (((x)&16384)==16384)#define Is_Fifteenth_Set(x) (((x)&32768)==32768)#define Is_Sixteenth_Set(x) (((x)&65536)==65536)#define Turn_On(x, flag) ((x) |= (flag))#define Turn_Off(x, flag) ((x) &= ~(flag))/*************************************************//* XGRAFIX macros. */#define Is_Open(object) Is_Zeroth_Set((object)->state)#define Was_Open_Before(object) Is_First_Set((object)->state)#define Is_Trace_On(object) Is_Second_Set((object)->state)#define Is_Z_Log(object) Is_Fifteenth_Set((object)->state)#define Is_Y_Log(object) Is_Third_Set((object)->state)#define Is_X_Log(object) Is_Fourth_Set((object)->state)#define Is_Y_AutoRescale(object) Is_Fifth_Set((object)->state)#define Is_X_AutoRescale(object) Is_Sixth_Set((object)->state)#define Is_Y_AutoRescale_Before(object) Is_Seventh_Set((object)->state)#define Is_X_AutoRescale_Before(object) Is_Eighth_Set((object)->state)#define Is_Crosshair_On(object) Is_Ninth_Set((object)->state)#define Is_Z_AutoRescale(object) Is_Tenth_Set((object)->state)#define Is_Shading_On(object) Is_Eleventh_Set((object)->state)#define Is_ColorCode_On(object) Is_Twelveth_Set((object)->state)#define Is_Grid_On(object) Is_Thirteenth_Set((object)->state)#define Is_ThreeD(object) Is_Fourteenth_Set((object)->state)#define Open(object) Turn_On((object)->state, OPEN)#define Iconify(object) Turn_Off((object)->state, OPEN)#define Open_Before(object) Turn_On((object)->state, OPEN_BEFORE)#define Iconic_Before(object) Turn_Off((object)->state, OPEN_BEFORE)#define Trace_On(object) Turn_On((object)->state, TRACE)#define Trace_Off(object) Turn_Off((object)->state, TRACE)#define Set_Z_Log(object) Turn_On((object)->state, Z_LOG)#define Set_Y_Log(object) Turn_On((object)->state, Y_LOG)#define Set_X_Log(object) Turn_On((object)->state, X_LOG)#define Set_Z_Lin(object) Turn_Off((object)->state, Z_LOG)#define Set_Y_Lin(object) Turn_Off((object)->state, Y_LOG)#define Set_X_Lin(object) Turn_Off((object)->state, X_LOG)#define Y_AutoRescale(object) Turn_On((object)->state, Y_AUTORESCALE)#define X_AutoRescale(object) Turn_On((object)->state, X_AUTORESCALE)#define Y_AutoRescale_Before(object) Turn_On((object)->state, Y_AUTORESCALE_BEFORE)#define X_AutoRescale_Before(object) Turn_On((object)->state, X_AUTORESCALE_BEFORE)#define Y_AutoRescale_Off(object) Turn_Off((object)->state, Y_AUTORESCALE)#define X_AutoRescale_Off(object) Turn_Off((object)->state, X_AUTORESCALE)#define Y_AutoRescale_Off_Before(object) Turn_Off((object)->state, Y_AUTORESCALE_BEFORE)#define X_AutoRescale_Off_Before(object) Turn_Off((object)->state, X_AUTORESCALE_BEFORE)#define Z_AutoRescale(object) Turn_On((object)->state, Z_AUTORESCALE)#define Z_AutoRescale_Off(object) Turn_Off((object)->state, Z_AUTORESCALE)#define Crosshair_On(object) Turn_On((object)->state, CROSSHAIR)#define Crosshair_Off(object) Turn_Off((object)->state,CROSSHAIR)#define Shading_On(object) Turn_On((object)->state, SHADING)#define Shading_Off(object) Turn_Off((object)->state, SHADING)#define ColorCode_On(object) Turn_On((object)->state, COLORCODE)#define ColorCode_Off(object) Turn_Off((object)->state, COLORCODE)#define Grid_On(object) Turn_On((object)->state, GRID)#define Grid_Off(object) Turn_Off((object)->state, GRID)#define Set_ThreeD(object) Turn_On((object)->state, THREED)#define Is_Scatter(object) Is_Zeroth_Set((object)->state)#define Set_Scatter(object) Turn_On((object)->state, SCATTER)#define Set_Vector(object) Turn_On((object)->state, VECTOR)#define Is_Vector(object) Is_Sixteenth_Set((object)->state)#define Is_Irr_Surf(object) Is_First_Set((object)->state)#define Set_Irr_Surf(object) Turn_On((object)->state, IRR_SURFACE)#ifndef max#define max(x, y) (((x) > (y)) ? (x) : (y))#endif#ifndef min#define min(x, y) (((x) < (y)) ? (x) : (y))#endifvoid XGWrite(void *, int, int, FILE *,char *);void XGWriteLabel(LabelType theLabel, FILE *fp);void XGWriteStructures(StructType *s, char *filename);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -