⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rlplot.h

📁 Linux/windows 环境下跨平台开发程序
💻 H
📖 第 1 页 / 共 5 页
字号:
//RLPlot.h, Copyright (c) 2000, 2001, 2002, 2003, 2004, 2005 R.Lackner////    This file is part of RLPlot.////    RLPlot is free software; you can redistribute it and/or modify//    it under the terms of the GNU General Public License as published by//    the Free Software Foundation; either version 2 of the License, or//    (at your option) any later version.////    RLPlot is distributed in the hope that it will be useful,//    but WITHOUT ANY WARRANTY; without even the implied warranty of//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the//    GNU General Public License for more details.////    You should have received a copy of the GNU General Public License//    along with RLPlot; if not, write to the Free Software//    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA//#define NUM_UNITS  3#define TMP_TXT_SIZE 4096#include <stdio.h>#include "Version.h"#define Swap(a,b) {a^=b;b^=a;a^=b;}inline int iround(double a) {return a < 0.0 ?(int)(a-0.499) : (int)(a+0.499);}inline int WriteFloatToBuff(char *buff, double val) {return sprintf(buff, " %g", val);}

#define _PI		3.1415926535897932384626433832795028841971693993751
#define _SQRT2	1.4142135623730950488016887242096980785696718753769
#ifdef _WINDOWS#include <windows.h>
#define w_char unsigned short#define _SBINC	1				//scrollbox extra space/line
#define _TXH	4.0				//graph text default size in mm
#else#define DWORD unsigned long
#define w_char unsigned short#define _SBINC	8				//scrollbox extra space/line
#define _TXH	3.0				//graph text default size in mm
typedef struct tagPOINT { // pt     long x;     long y; } POINT; typedef struct _RECT {    // rc     long left;     long top;     long right;     long bottom; } RECT; #endif	//_WINDOWSenum {SIZE_MINE, SIZE_SYMBOL, SIZE_SYM_LINE, SIZE_DATA_LINE, SIZE_TEXT,	SIZE_GRECT_TOP, SIZE_GRECT_BOTTOM, SIZE_GRECT_LEFT, SIZE_GRECT_RIGHT,	SIZE_DRECT_LEFT, SIZE_DRECT_RIGHT, SIZE_DRECT_TOP, SIZE_DRECT_BOTTOM,	SIZE_DATA_LINE_PAT, SIZE_XPOS, SIZE_XPOS_LAST = SIZE_XPOS+200, 	SIZE_YPOS, SIZE_YPOS_LAST = SIZE_YPOS+200, SIZE_ZPOS, 	SIZE_ZPOS_LAST = SIZE_ZPOS+200, SIZE_BOUNDS_XMIN,	SIZE_BOUNDS_XMAX, SIZE_BOUNDS_YMIN, SIZE_BOUNDS_YMAX, SIZE_BOUNDS_ZMIN,	SIZE_BOUNDS_ZMAX, SIZE_BOUNDS_LEFT, SIZE_BAR_BASE,	SIZE_BOUNDS_RIGHT, SIZE_BOUNDS_TOP, SIZE_BOUNDS_BOTTOM, SIZE_XAXISY,	SIZE_YAXISX, SIZE_AXIS_LINE, SIZE_PATLENGTH, SIZE_BAR_DEPTH,	SIZE_AXIS_TICKS, SIZE_TICK_LABELS, SIZE_ERRBAR, SIZE_ERRBAR_LINE, 	SIZE_BAR_LINE, SIZE_BAR, SIZE_XBASE, SIZE_YBASE, SIZE_ZBASE, SIZE_BUBBLE_LINE,	SIZE_BUBBLE_HATCH_LINE, SIZE_BARMINX, SIZE_BARMINY, SIZE_ARROW_LINE,	SIZE_ARROW_CAPWIDTH, SIZE_ARROW_CAPLENGTH, SIZE_HAIRLINE, SIZE_WHISKER,	SIZE_WHISKER_LINE, SIZE_BOX_LINE, SIZE_BOXMINX, SIZE_BOXMINY, SIZE_BOX,	SIZE_RADIUS1, SIZE_RADIUS2, SIZE_SEGLINE, SIZE_LB_XPOS, SIZE_LB_YPOS,	SIZE_LB_XDIST, SIZE_LB_YDIST, SIZE_TLB_XDIST, SIZE_TLB_YDIST, SIZE_ANGLE1,	SIZE_ANGLE2, SIZE_XCENTER, SIZE_YCENTER, SIZE_ZCENTER, SIZE_CELLWIDTH, SIZE_CELLTEXT,	SIZE_A, SIZE_B, SIZE_MX, SIZE_MY, SIZE_MIN_Z, SIZE_MAX_Z, SIZE_MIN_X, SIZE_MAX_X,	SIZE_MIN_Y, SIZE_MAX_Y, SIZE_TICK_ANGLE, SIZE_RRECT_RAD, SIZE_XCENT, SIZE_YCENT,	SIZE_ZCENT, SIZE_DRADIUS, SIZE_CURSORPOS, SIZE_CURSOR_XMIN, SIZE_CURSOR_YMIN,	SIZE_CURSOR_XMAX, SIZE_CURSOR_YMAX, SIZE_XSTEP, SIZE_LSPC};enum {COL_SYM_LINE, COL_SYM_FILL, COL_DATA_LINE, COL_TEXT, COL_BG,	COL_AXIS, COL_BAR_LINE, COL_BAR_FILL, COL_ERROR_LINE, COL_BUBBLE_LINE, 	COL_BUBBLE_FILLLINE, COL_BUBBLE_FILL, COL_ARROW, COL_WHISKER, COL_BOX_LINE,	COL_DRECT, COL_GRECT, COL_GRECTLINE, COL_POLYLINE, COL_POLYGON};enum {MRK_NONE, MRK_INVERT, MRK_GODRAW, MRK_SSB_DRAW};enum {CMD_NONE, CMD_ADDCHAR, CMD_SETFOCUS, CMD_KILLFOCUS, CMD_DELETE,	CMD_BACKSP, CMD_CURRLEFT, CMD_CURRIGHT, CMD_CURRUP, CMD_CURRDOWN,	CMD_SHIFTLEFT, CMD_SHIFTRIGHT, CMD_SHIFTUP, CMD_SHIFTDOWN,	CMD_NEWGRAPH, CMD_DELGRAPH, CMD_DELOBJ, CMD_DROP_PLOT, CMD_DROP_GRAPH, CMD_OPEN,	CMD_SAVEDATAAS, CMD_ADDROWCOL, CMD_MOUSE_EVENT, CMD_REDRAW, CMD_DOPLOT,	CMD_LBUP, CMD_ENDDIALOG, CMD_RADIOBUTT, CMD_ADDCHILD, CMD_BAR_TYPE,	CMD_BAR_FILL, CMD_SET_AXDEF, CMD_SET_DATAOBJ, CMD_SETTEXT, CMD_GETTEXT,	CMD_SETTEXTDEF, CMD_GETTEXTDEF, CMD_ADDPLOT, CMD_SYM_TYPE, CMD_SYMTEXT, 	CMD_SYMTEXTDEF, CMD_RANGETEXT, CMD_SYM_RANGETEXT, CMD_FOCTXT, CMD_CONTINUE,	CMD_ERR_TYPE, CMD_ARROW_ORG, CMD_ARROW_TYPE, CMD_FLUSH, CMD_BOX_FILL,	CMD_TABDLG, CMD_NOTABDLG, CMD_TAB, CMD_SHTAB, CMD_BOX_TYPE, CMD_BUBBLE_TYPE,	CMD_BUBBLE_ATTRIB, CMD_BUBBLE_FILL, CMD_BUBBLE_LINE, CMD_DL_LINE, 	CMD_DL_TYPE, CMD_SEG_FILL, CMD_SEG_LINE, CMD_SELECT, CMD_MOVE, CMD_CUT,	CMD_SETSCROLL, CMD_SETHPOS, CMD_SETVPOS, CMD_PG_FILL, CMD_BOUNDS,	CMD_SHIFT_OUT, CMD_CAN_DELETE, CMD_CAN_CLOSE, CMD_RESET_LINE, CMD_SET_TICKSTYLE,	CMD_GET_GRIDLINE, CMD_SET_GRIDLINE, CMD_SET_GRIDTYPE, CMD_TLB_TXTDEF,	CMD_DROP_LABEL, CMD_DROP_OBJECT, CMD_PAGEUP, CMD_PAGEDOWN, CMD_AUTOSCALE,	CMD_MRK_DIRTY, CMD_SETNAME, CMD_TOOLMODE, CMD_DROPFILE, CMD_AXIS, CMD_INIT,	CMD_GET_CELLDIMS, CMD_SET_CELLDIMS, CMD_TEXTSIZE, CMD_PASTE_TSV, CMD_PASTE_XML,	CMD_PASTE_SSV, CMD_PASTE_CSV, CMD_COPY_TSV, CMD_COPY_XML, CMD_COPY_SYLK, CMD_QUERY_COPY,	CMD_MOUSECURSOR, CMD_NEWPAGE, CMD_MINRC, CMD_MAXRC,CMD_SETCHILD, CMD_SYM_FILL,	CMD_LINEUP, CMD_LINEDOWN, CMD_CONFIG, CMD_FINDTEXT, CMD_MOVE_TOP, CMD_MOVE_UP,	CMD_MOVE_DOWN, CMD_MOVE_BOTTOM, CMD_UPDATE, CMD_CURRPOS, CMD_POS_FIRST, CMD_POS_LAST,	CMD_ADDAXIS, CMD_REG_AXISPLOT, CMD_USEAXIS, CMD_SET_GO3D, CMD_UNDO, CMD_DELOBJ_CONT,	CMD_RMU, CMD_REPL_GO, CMD_UNDO_MOVE, CMD_SAVEPOS, CMD_WHISKER_STYLE, CMD_TICK_TYPE,	CMD_ZOOM, CMD_CLIP, CMD_STARTLINE, CMD_ADDTOLINE, CMD_REQ_POINT, CMD_DRAW_LATER,
	CMD_SEG_MOVEABLE, CMD_ARROW_ORG3D, CMD_MUTATE, CMD_PRINT, CMD_UPDHISTORY, CMD_ALLTEXT,
	CMD_SET_LINE, CMD_SAVE_SYMBOLS, CMD_SAVE_TICKS, CMD_SAVE_BARS, CMD_SAVE_BARS_CONT,
	CMD_SAVE_ERRS, CMD_SAVE_ARROWS, CMD_SAVE_DROPLINES, CMD_SAVE_LABELS, CMD_UNLOCK, CMD_SYMTEXT_UNDO,
	CMD_FILLRANGE, CMD_BUSY, CMD_ERROR, CMD_CLEAR_ERROR, CMD_SETPARAM, CMD_SETFUNC,
	CMD_HIDE_MARK, CMD_LEGEND, CMD_FILENAME, CMD_LAYERS, CMD_OBJTREE, CMD_TEXTDEF,
	CMD_HASSTACK, CMD_WRITE_GRAPHS, CMD_SETFONT, CMD_SETSTYLE, CMD_COPY, CMD_PASTE,
	CMD_INSROW, CMD_INSCOL, CMD_DELROW, CMD_DELCOL, CMD_ADDTXT, CMD_ETRACC, CMD_SHPGUP, CMD_SHPGDOWN};enum {SYM_CIRCLE, SYM_CIRCLEF, SYM_RECT, SYM_RECTF, SYM_TRIAU, SYM_TRIAUF,	SYM_TRIAD, SYM_TRIADF, SYM_DIAMOND, SYM_DIAMONDF, SYM_PLUS, SYM_CROSS,	SYM_STAR, SYM_HLINE, SYM_VLINE, SYM_TEXT, SYM_POS_PARENT = 0x1000};//types of graphic objects: stored in Id and used for proper destruction of objects//  and retrieving information.enum {GO_UNKNOWN, GO_AXIS, GO_TICK, GO_GRIDLINE, GO_SYMBOL, GO_BUBBLE, GO_BAR, 	GO_ERRBAR, GO_ARROW, GO_BOX, GO_LABEL, GO_MLABEL, GO_WHISKER, GO_DROPLINE, 	GO_DATALINE, GO_DATAPOLYGON, GO_REGLINE, GO_SDELLIPSE, GO_SEGMENT, 	GO_POLYLINE, GO_POLYGON, GO_RECTANGLE, GO_ELLIPSE, GO_ROUNDREC,	GO_DRAGHANDLE, GO_DRAGRECT, GO_DRAG3D, GO_FRAMERECT, GO_SPHERE, GO_SVGOPTIONS,	GO_PLANE, GO_BRICK, GO_LINESEG, GO_LINE3D, GO_GRIDLINE3D, GO_GRIDRADIAL,	GO_SPHSCANL, GO_DROPL3D, GO_ARROW3D, GO_PLANE3D, GO_LEGITEM, GO_LEGEND,
	GO_OBJTREE,	GO_PLOT = 0x100, GO_PLOTSCATT, GO_REGRESSION, GO_BARCHART, GO_BUBBLEPLOT, 	GO_BOXPLOT, GO_DENSDISP, GO_STACKBAR, GO_STACKPG, GO_WATERFALL, GO_POLARPLOT,	GO_PIECHART, GO_RINGCHART, GO_GROUP, GO_STARCHART, GO_SCATT3D, GO_PLOT3D,	GO_RIBBON, GO_LIMITS, GO_FUNCTION, GO_FITFUNC, GO_FREQDIST, GO_GRID3D, GO_FUNC3D,
	GO_XYSTAT,	GO_GRAPH = 0x200, GO_PAGE, GO_SPREADDATA = 0x300, GO_DEFRW};enum {FILL_NONE, FILL_HLINES, FILL_VLINES, FILL_HVCROSS, FILL_DLINEU, FILL_DLINED,	FILL_DCROSS, FILL_STIPPLE1, FILL_STIPPLE2, FILL_STIPPLE3, FILL_STIPPLE4, 	FILL_STIPPLE5, FILL_ZIGZAG, FILL_COMBS, FILL_BRICKH, FILL_BRICKV, FILL_BRICKDU, 	FILL_BRICKDD, FILL_TEXTURE1, FILL_TEXTURE2, FILL_WAVES1, FILL_SCALES, FILL_SHINGLES, 	FILL_WAVES2, FILL_HERRING, FILL_CIRCLES, FILL_GRASS, FILL_FOAM, FILL_RECS,	NUM_FILLS, FILL_LIGHT3D = 0x100};enum {ERRBAR_VSYM, ERRBAR_VUP, ERRBAR_VDOWN, ERRBAR_HSYM, ERRBAR_HLEFT,	ERRBAR_HRIGHT};enum {BAR_NONE, BAR_VERTB, BAR_VERTT, BAR_VERTU, BAR_HORL, BAR_HORR, BAR_HORU, 	BAR_RELWIDTH = 0x100, BAR_CENTERED = 0x200, BAR_WIDTHDATA = 0x400};enum {TM_STANDARD, TM_DRAW, TM_POLYLINE, TM_POLYGON, TM_RECTANGLE, TM_ELLIPSE,	TM_ROUNDREC, TM_ARROW, TM_TEXT, TM_MARK, TM_ZOOMIN, TM_MOVE = 0x100};enum {MC_LAST, MC_ARROW, MC_CROSS, MC_TEXT, MC_WAIT, MC_MOVE, MC_NORTH,	MC_NE, MC_EAST, MC_SE, MC_SALL, MC_ZOOM};enum {FILE_ERROR, FILE_READ, FILE_WRITE, INIT_VARS, SAVE_VARS};enum {ARROW_NOCAP, ARROW_LINE, ARROW_TRIANGLE, ARROW_UNITS = 0x100};enum {MENU_NONE, MENU_SPREAD, MENU_GRAPH, MENU_PAGE};enum {GT_UNKNOWN, GT_STANDARD, GT_CIRCCHART, GT_POLARPLOT, GT_3D};enum {ICO_NONE, ICO_INFO, ICO_ERROR, ICO_RLPLOT, ICO_QT};enum {FF_UNKNOWN, FF_CSV, FF_TSV, FF_XML, FF_SYLK, FF_RLP, FF_SVG, FF_EPS,	FF_WMF, FF_RLW, FF_SSV};enum {LB_X_DATA = 0x01, LB_X_PARENT = 0x02, LB_Y_DATA = 0x10, LB_Y_PARENT = 0x20};enum {BUBBLE_CIRCLE = 0x000, BUBBLE_SQUARE = 0x001, BUBBLE_UPTRIA = 0x002,	BUBBLE_DOWNTRIA = 0x003, BUBBLE_UNITS = 0x000, BUBBLE_XAXIS = 0x010,	BUBBLE_YAXIS = 0x020, BUBBLE_DIAMET = 0x000, BUBBLE_CIRCUM = 0x100,	BUBBLE_AREA = 0x200};enum {DH_UNKNOWN, DH_12, DH_22, DH_19, DH_29, DH_39, DH_49, DH_59, DH_69, DH_79,	DH_89, DH_99, DH_18, DH_28, DH_38, DH_48, DH_58, DH_68, DH_78, DH_88, DH_DATA};enum {FE_NONE = 0x1000, FE_PARENT, FE_PLOT, FE_FLUSH, FE_DELOBJ, FE_REPLGO, FE_MUTATE};
//drop line styles#define DL_LEFT          0x001#define DL_RIGHT         0x002#define DL_YAXIS         0x004#define DL_TOP           0x010#define DL_BOTTOM        0x020#define DL_XAXIS         0x040#define DL_CIRCULAR      0x100typedef struct {	int num;	char* display;	float convert;			//multiply to get mm	}tag_Units;typedef struct {	int x, y, z;	}POINT3D;typedef struct {	double Xmin;	double Ymax;	double Xmax;	double Ymin;	}fRECT;typedef struct {	double fx;	double fy;	double fz;	}fPOINT3D;typedef struct {	double fx;	double fy;	}lfPOINT;typedef struct {	double finc, fp;	}RunLinePat;				//used for line patternstypedef struct {	double width, patlength;	DWORD color, pattern;	}LineDEF;typedef struct {	int type;					//pattern	DWORD color;	double scale;	LineDEF *hatch;	DWORD color2;	}FillDEF;typedef struct {	lfPOINT org;				//zoom origin	double scale;				//zoom factor	}ZoomDEF;// Axis definitions are stored in the following structure// not to be confused with the Axis class grapic object// bits stored in flags havethe following meaning#define AXIS_NOTICKS      0x0			// no ticks at all#define AXIS_POSTICKS     0x1			// positive direction of ticks#define AXIS_NEGTICKS     0x2			// negative direction #define AXIS_SYMTICKS     0x3			// ticks are symmetrical#define AXIS_GRIDLINE     0x4			// ticks control a gridline#define AXIS_MINORTICK    0x8			// its a small tick only#define AXIS_USER         0x00			// axis placement by user#define AXIS_LEFT         0x10			// left of plot#define AXIS_RIGHT        0x20			// right  -"-#define AXIS_TOP          0x30			// top    -"-#define AXIS_BOTTOM       0x40			// bottom -"-#define AXIS_AUTOSCALE    0x80			// rescale upon editing#define AXIS_INVERT       0x100			// axis top->bottom, right to left#define AXIS_AUTOTICK     0x200			// select tick s automatically#define AXIS_DEFRECT      0x400			// use axis to define drawing rectangle#define AXIS_LINEAR       0x0000		// transforms ...#define AXIS_LOG          0x1000#define AXIS_RECI         0x2000#define AXIS_SQR          0x3000#define AXIS_X_DATA       0x10000		// loc.x is data coordinates#define AXIS_Y_DATA       0x20000       // loc.y is data coordinates#define AXIS_Z_DATA       0x40000       // loc.z is data coordinates#define AXIS_ANGULAR      0x100000      // angular (circular) axis#define AXIS_RADIAL       0x200000		// radial axis#define AXIS_3D           0x400000		// three dimensional axistypedef struct {	void *owner;				//owners are usually graph, output or axis classes	DWORD flags;	double min, max;	fPOINT3D loc[2];			//placement of axis coordinates	double Start, Step;			//used for linear axis	lfPOINT Center;				//of polar plot	double Radius;				//   -"-	int nBreaks;				//axis break ...	lfPOINT *breaks;	}AxisDEF;//Attributes for text properties//Text fontsenum {FONT_HELVETICA, FONT_TIMES, FONT_COURIER, FONT_GREEK};//Text styles#define TXA_VTOP        0#define TXA_VCENTER     4#define TXA_VBOTTOM     8#define TXA_HLEFT       0#define TXA_HCENTER     1#define TXA_HRIGHT      2#define TXM_OPAQUE      0#define TXM_TRANSPARENT 1#define TXS_NORMAL      0#define TXS_ITALIC      1#define TXS_BOLD        2#define TXS_UNDERLINE   4
#define TXS_SUPER       8
#define TXS_SUB			16typedef struct {	DWORD ColTxt, ColBg;				//colors ..	double fSize;						//Text size in units	double RotBL, RotCHAR;				//Rotation in degrees	int iSize;							//Text size is given in iSize as pix	int Align, Mode, Style;				//Text Alignement 0   1   2										//                4   5   6										//                8   9  10										//Mode 0 = opaque, 1 = transparent	int Font;	char *text;	}TextDEF;// Store mouse events in the following structure// Action defines the type of event:enum {MOUSE_LBDOWN, MOUSE_LBUP, MOUSE_LBDOUBLECLICK, MOUSE_MBDOWN, MOUSE_MBUP, 	MOUSE_MBDOUBLECLICK, MOUSE_RBDOWN, MOUSE_RBUP, MOUSE_RBDOUBLECLICK,	MOUSE_MOVE};typedef struct {	unsigned short StateFlags;	//  1 Mouse left button down								//  2       middle button down								//  4       right button down								//  8       shift pressed								// 16       control pressed	unsigned short Action;	int x, y;	} MouseEvent;

//use this structure if type of data is not known
typedef struct {
	int type;
	double value;
	char *text;
	} anyResult;//the AccRange class allows to access data objects with a 'a1:b1' styleclass AccRange{public:	AccRange(char *asc);	~AccRange();	int CountItems();	bool GetFirst(int *x, int *y);	bool GetNext(int *x, int *y);
	bool NextRow(int *y);
	bool NextCol(int *x);	bool IsInRange(int x, int y);	bool BoundRec(RECT *rec);private:	char *txt;	int x1, y1, x2, y2, cx, cy, curridx;	bool Reset();	bool Parse(int start);};class anyOutput{public:	int units;							//use units mm, inch ...	int MrkMode;						//existing mark on screen	void *MrkRect;						//pointer to e.g. the marked rectangle	fRECT Box1;							//User drawing rectangle	lfPOINT Box1z;						// add 3D to Box1	RECT DeskRect;						//this is maximum size Rectangle	double ddx, ddy, ddz;				//convert to device coordinates	double hres, vres;					//resolution in dpi	double LineWidth;					//line width in units	int iLine;							//current width of line in pixels	DWORD dLineCol;						//current color of line;	DWORD dBgCol;						//color of background	DWORD dFillCol, dFillCol2;	DWORD dPattern;						//current line bit-pattern	TextDEF TxtSet;						//store current text settings here	RunLinePat RLP;						//continuous setings of pattern line	AxisDEF xAxis, yAxis, zAxis;		//axis and transform definitions	lfPOINT VPorg;						//zoom origin	double VPscale;						//zoom factor	int MenuHeight;						//ofset due to pull down menus	int cCursor;						//mouse coursor identifier	double rotM[3][3];					//rotation matrix for 3D	fPOINT3D rotC;						//rotation center	bool hasHistMenu;					//File History List	int HistMenuSize;					//     -"-	lfPOINT light_source;				//angles for shading	double light_vec[3][3];				//     -"-
	double disp_x, disp_y;				//displacement on page	anyOutput();	void SetRect(fRECT rec, int units, AxisDEF *x_ax, AxisDEF *y_ax);	void SetSpace(fPOINT3D*,fPOINT3D*,int,double*,fPOINT3D*,AxisDEF*,AxisDEF*,AxisDEF*);	void LightSource(double x, double y);	DWORD VecColor(double *plane_vec, DWORD col1, DWORD col2);	bool GetSize(RECT *rc);	virtual bool ActualSize(RECT *rc) {return GetSize(rc);};	double fx2fix(double x);	int fx2ix(double x){return (int)(0.5 + fx2fix(x));};	double fy2fiy(double y);	int fy2iy(double y){return (int)(0.5 + fy2fiy(y));};	bool fp2fip(lfPOINT *fdp, lfPOINT *fip);	bool fvec2ivec(fPOINT3D *v, fPOINT3D *iv);	bool cvec2ivec(fPOINT3D *v, fPOINT3D *iv);	bool uvec2ivec(fPOINT3D *v, fPOINT3D *iv);	double un2fix(double x);	int un2ix(double x) {return (int)(0.5 + un2fix(x));};	int co2ix(double x) {return un2ix(x) + iround(VPorg.fx);};	double co2fix(double x) {return un2fix(x) + VPorg.fx;};	double un2fiy(double y);	int un2iy(double y) {return (int)(0.5 + un2fiy(y));};	int co2iy(double y) {return un2iy(y) + iround(VPorg.fy);};	double co2fiy(double y) {return un2fiy(y) + VPorg.fy;};	double un2fiz(double z);	double fz2fiz(double z);	double fix2un(double fix);	double fiy2un(double fiy);	virtual bool SetLine(LineDEF *lDef){return false;};	bool GetLine(LineDEF *lDef);
	virtual void Focus() {return;};	virtual void Caption(char *txt){return;};	virtual void MouseCursor(int cid, bool force){return;};	virtual bool SetScroll(bool, int, int, int, int){return false;};	virtual bool SetFill(FillDEF *fill){return false;};	virtual bool SetTextSpec(TextDEF *set);	virtual bool Erase(DWORD Color){return false;};	virtual bool StartPage(){return false;};	virtual bool EndPage(){return false;};	virtual bool Eject() {return false;};		//printers only	virtual bool UpdateRect(RECT *rc, bool invert){return false;};	virtual bool CopyBitmap(int x, int y, anyOutput* src, int sx, int sy,		int sw, int sh, bool invert){return false;};	virtual void ShowBitmap(int x, int y, anyOutput* src){return;};	bool ShowMark(void *rc, int Mode);	bool HideMark();	int CalcCursorPos(char *txt, POINT p, POINT *fit);	bool TextCursor(char *txt, POINT p, POINT *fit, int *pos, int disp);	bool PatLine(POINT p1, POINT p2);	virtual void ShowLine(POINT * pts, int cp, DWORD color) {return;};	virtual void ShowEllipse(POINT p1, POINT p2, DWORD color){return;}; 	virtual bool SetMenu(int type){return false;};	virtual void CheckMenu(int mid, bool check){return;};	virtual void FileHistory(){return;};	virtual bool oGetPix(int x, int y, DWORD *col){return false;};	virtual bool oDrawIcon(int type, int x, int y) {return false;};	virtual bool oGetTextExtent(char *text, int cb, int *width, int *height);	virtual bool oCircle(int x1, int y1, int x2, int y2, char *nam = 0L){return false;};	virtual bool oSphere(int cx, int cy, int r, POINT *pts, int cp, char *nam = 0L);	virtual bool oPolyline(POINT * pts, int cp, char *nam = 0L){return false;};	virtual bool oRectangle(int x1, int y1, int x2, int y2, char *nam = 0L){return false;};	virtual bool oSolidLine(POINT *p){return false;};	virtual bool oTextOut(int x, int y, char *txt, int cb){return false;};	virtual bool oPolygon(POINT *pts, int cp, char *nam = 0L){return false;};	virtual bool oArc(int x1, int y1, int x2, int y2, int quads){return false;};};enum {ET_UNKNOWN, ET_VALUE, ET_TEXT, ET_FORMULA, ET_ERROR, ET_BUSY=0x100, 
	ET_CIRCULAR=0x200};

class EditText {public:	char *text, *ftext;	int Align, type, row, col;	void *parent;				//points to a data object: defined below
	anyOutput *disp;	double Value;
	EditText(void *par, char *msg, int r, int c);	~EditText();	bool AddChar(int c, anyOutput *Out, void *data_obj);	void Update(int select, anyOutput *Out, POINT *MousePos);	bool Redraw(anyOutput *Out, bool display);	void Mark(anyOutput *Out, int mark);	bool Command(int cmd, anyOutput *Out, void *data_obj);	bool GetValue(double *v);	bool GetText(char *t, int size);
	bool GetResult(anyResult *r, bool use_last = false);	bool SetValue(double v);	bool SetText(char *t);	bool GetItem(char *text, int size);	void SetRec(RECT *rc);	int GetX() {return loc.x;};	int GetY() {return loc.y;};
	int Cursor() {return CursorPos;};	bool isValue();	bool isFormula();	bool isInRect(POINT *p) {return (p->x>loc.x && p->x<crb.x && p->y>loc.y && p->y<rb.y);};	bool hasMark() {return (m1 != m2 && m1 >= 0 && m2 >= 0);};
private:	LineDEF *bgLine;	FillDEF *bgFill;	int length, CursorPos, m1, m2, mx1, mx2;	POINT loc, rb, crb;	DWORD TextCol;	void FindType();};
class fmtText {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -