home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1997 March
/
VPR9703A.ISO
/
VPR_DATA
/
DOGA
/
SOURCES
/
PASM.LZH
/
DESIGN.H
< prev
next >
Wrap
C/C++ Source or Header
|
1996-07-12
|
4KB
|
153 lines
#ifndef _DESIGN_
#define _DESIGN_
#include "matrix.h"
#include "seltype.h"
const int markersize = 4;
const int filenamedirlength = 128;
const int filenamebodylength = 32;
#define scrollstep (double)16
#define limitdim (double)(10000.0)
const double scalespacingfactor = 1000.0;
enum DragType {DragCompound, DragRotOnly, DragScaleOnly} ;
enum ZoomMode {ZoomNone, ZoomSelect, ZoomNow};
enum RendColor {ColorWhite = 0, ColorBlue = 1, ColorRed = 2, ColorGreen = 3, ColorMagenta = 4};
const int buttons = 10;
class TWinFrame;
class TWinDisplay;
class TWinPers;
class TWinStatus;
class TScrollBar;
class TBitmapButton;
class Parts;
class CameraParts;
class CombinedParts;
class Object;
class TStatusBar;
class TTextGadget;
class TControlGadget;
class TButton;
class PolyData;
struct LineSegment {
short x1, y1;
short x2, y2;
void *id;
};
struct WireFrame {
LineSegment *line;
int lines;
};
class DesignData {
public:
TWinFrame *Frame;
TWinDisplay *TopView, *SideView, *FrontView;
TWinPers *PersView;
TWinStatus *Status;
TScrollBar *scrollX, *scrollY, *scrollZ;
TBitmapButton *button[buttons];
TStatusBar *statusbar;
TTextGadget *statusbar_polygons;
TButton *button_ok, *button_cancel, *button_zoom;
Vector backup_position, backup_rotation, backup_scale;
int editflag;
ZoomMode zoommode;
double backup_displayscale;
Vector backup_displayoffset;
double displayscale;
Vector displayoffset;
int meshflag;
int meshspacing;
int hiddenremove;
int gridflag;
int gridspacing;
int rotspacing;
int scalespacing;
int polygons;
char filedir[filenamedirlength];
char filename[filenamebodylength];
int cataloglastmenu, cataloglastparts;
DragType dragtype;
WireFrame wireframe;
Parts *parts;
Parts *select;
CameraParts *camera;
CombinedParts *combined;
TPoint drag_point;
TPoint tmp_point;
Matrix drag_mat;//, drag_mat_orig;
Matrix drag_scale, drag_rot, drag_move;
double drag_px[2], drag_py[2];
double drag_rx, drag_ry;
SelectType selectstatus;
RendColor color;
DesignData();
void SetScrollLimit(int flag=FALSE);
void ScaleUp(void);
void ScaleDown(void);
int ScaleUpLimitCheck(void);
int ScaleDownLimitCheck(void);
void PartsDelete(Parts *p);
void PartsCopy(Parts *p, SelectType t = SelNone);
void PartsAdd(Object* obj,
Vector& m = Vector(0.0, 0.0, 0.0),
Vector& r = Vector(0.0, 0.0, 0.0),
Vector& s = Vector(1.0, 1.0, 1.0));
void PartsAdd(char *filename,
Vector& m = Vector(0.0, 0.0, 0.0),
Vector& r = Vector(0.0, 0.0, 0.0),
Vector& s = Vector(1.0, 1.0, 1.0));
void ShowObject(Parts *obj, SelectType type, int flag);
void Redraw(SelectType t = SelAll, int flag = FALSE);
// void ShowCube(Matrix& m, int flag);
void ShowCube(Matrix& omat, Matrix& nmat);
Matrix GetMatrix(Parts *p);
Matrix GetCubeMatrix(Parts *p);
void GetCubeMatrix(Parts *p, Matrix& move, Matrix& rot, Matrix& scal);
void CalcPoints(Parts *p);
void CalcView(Parts *p);
void CalcViewAll(void);
int FileWrite(char *filename = NULL);
void FileRead(char *filename);
void FileNew(void);
void MenuValidate(char *filename);
void SetCaption(void);
TStatusBar *InitStatusBar(void);
void SetPolygons(int p);
void TotalScaling(double rate);
void SelectAxis(SelectType t[3], Matrix& m);
void SelectParts(Parts *p);
void CancelParts(void);
void SelectZoom(void);
int GetLinesNoBackFace(LineSegment **line, PolyData *polydata);
void BuildWireFrame(void);
};
#endif