00001 /*************************************************************************** 00002 *cr 00003 *cr (C) Copyright 1995-2019 The Board of Trustees of the 00004 *cr University of Illinois 00005 *cr All Rights Reserved 00006 *cr 00007 ***************************************************************************/ 00008 00009 /*************************************************************************** 00010 * RCS INFORMATION: 00011 * 00012 * $RCSfile: Axes.h,v $ 00013 * $Author: johns $ $Locker: $ $State: Exp $ 00014 * $Revision: 1.42 $ $Date: 2019年09月26日 03:27:39 $ 00015 * 00016 *************************************************************************** 00017 * DESCRIPTION: 00018 * 00019 * A Displayable object which consists of a set of axes, which may be 00020 * drawn anywhere on the screen, at any size. 00021 * 00022 ***************************************************************************/ 00023 #ifndef AXES_H 00024 #define AXES_H 00025 00026 #include "Displayable.h" 00027 #include "DispCmds.h" 00028 00029 00031 class Axes : public Displayable { 00032 public: 00034 enum AxesPos { NO_AXES = 0, AXES_ORIGIN, AXES_LOWERLEFT, 00035 AXES_LOWERRIGHT, AXES_UPPERLEFT, AXES_UPPERRIGHT, AXESPOS_TOTAL }; 00036 00037 private: 00038 DisplayDevice *disp; 00039 00041 float origin[3], xLine[3], yLine[3], zLine[3]; 00042 float xLineCap[3], yLineCap[3], zLineCap[3]; 00043 float xText[3], yText[3], zText[3]; 00044 00045 int usecolors[5]; 00046 int axesPos; 00047 float Aspect; 00048 int colorCat; 00049 int movedAxes; 00050 int need_create_cmdlist; 00051 00052 // display command objects used to render the axes 00053 DispCmdBeginRepGeomGroup cmdBeginRepGeomGroup; 00054 DispCmdSphereRes sphres; 00055 DispCmdSphereType sphtype; 00056 DispCmdColorIndex xcol; 00057 DispCmdCylinder xcyl; 00058 DispCmdCone xcap; 00059 DispCmdSphere sph; 00060 DispCmdText txt; 00061 DispCmdComment cmdCommentX; 00062 00064 void create_cmdlist(void); 00065 00066 protected: 00067 virtual void do_color_changed(int); 00068 00069 public: 00071 Axes(DisplayDevice *, Displayable *); 00072 virtual ~Axes(void); 00073 00074 int location(int); 00075 int location(void) { return axesPos; } 00076 char *loc_description(int); 00077 int locations(void){ return AXESPOS_TOTAL; } 00078 00079 // 00080 // public virtual routines 00081 // 00082 00084 virtual void prepare(); 00085 00092 virtual void pick_move(PickMode *, DisplayDevice *, int, int, const float *); 00093 }; 00094 00095 #endif 00096