00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
#ifndef FXGLSHAPE_H
00025
#define FXGLSHAPE_H
00026
00027
#ifndef FXGLOBJECT_H
00028
#include "FXGLObject.h"
00029
#endif
00030
00031
namespace FX {
00032
00033
00034
class FXGLViewer;
00035
class FXGLObject;
00036
00037
00038
00039
enum {
00040
SURFACE_SINGLESIDED = 0,
00041
SURFACE_DUALSIDED = 0x00000001,
00042
SHADING_NONE = 0,
00043
SHADING_SMOOTH = 0x00000002,
00044
SHADING_FLAT = 0x00000004,
00045
FACECULLING_OFF = 0,
00046
FACECULLING_ON = 0x00000008,
00047
STYLE_SURFACE = 0x00000010,
00048
STYLE_WIREFRAME = 0x00000020,
00049
STYLE_POINTS = 0x00000040,
00050
STYLE_BOUNDBOX = 0x00000080
00051 };
00052
00053
00054
00055
00056
class FXAPI FXGLShape :
public FXGLObject {
00057 FXDECLARE_ABSTRACT(FXGLShape)
00058 protected:
00059 FXVec3f position;
00060 FXMaterial material[2];
00061 FXRangef range;
00062 FXuint options;
00063 FXString tip;
00064 protected:
00065 FXGLShape();
00066 virtual
void drawshape(
FXGLViewer*){}
00067
void drawbox();
00068
void drawhandles();
00069
public:
00070
long onDNDDrop(
FXObject*,FXSelector,
void*);
00071
long onDNDMotion(
FXObject*,FXSelector,
void*);
00072
long onQueryTip(
FXObject*,FXSelector,
void*);
00073
long onCmdShadeOff(
FXObject*,FXSelector,
void*);
00074
long onUpdShadeOff(
FXObject*,FXSelector,
void*);
00075
long onCmdShadeOn(
FXObject*,FXSelector,
void*);
00076
long onUpdShadeOn(
FXObject*,FXSelector,
void*);
00077
long onCmdShadeSmooth(
FXObject*,FXSelector,
void*);
00078
long onUpdShadeSmooth(
FXObject*,FXSelector,
void*);
00079
long onCmdFrontMaterial(
FXObject*,FXSelector,
void*);
00080
long onUpdFrontMaterial(
FXObject*,FXSelector,
void*);
00081
long onCmdBackMaterial(
FXObject*,FXSelector,
void*);
00082
long onUpdBackMaterial(
FXObject*,FXSelector,
void*);
00083
long onCmdDrawingStyle(
FXObject*,FXSelector,
void*);
00084
long onUpdDrawingStyle(
FXObject*,FXSelector,
void*);
00085
public:
00086
enum {
00087 ID_SHADEOFF=FXGLObject::ID_LAST,
00088 ID_SHADEON,
00089 ID_SHADESMOOTH,
00090 ID_TOGGLE_SIDED,
00091 ID_TOGGLE_CULLING,
00092 ID_STYLE_POINTS,
00093 ID_STYLE_WIREFRAME,
00094 ID_STYLE_SURFACE,
00095 ID_STYLE_BOUNDINGBOX,
00096 ID_FRONT_MATERIAL,
00097 ID_BACK_MATERIAL,
00098 ID_LAST
00099 };
00100
public:
00101
00102
00103 FXGLShape(FXfloat x,FXfloat y,FXfloat z,FXuint opts);
00104
00105
00106 FXGLShape(FXfloat x,FXfloat y,FXfloat z,FXuint opts,
const FXMaterial& front,
const FXMaterial& back);
00107
00108
00109 FXGLShape(
const FXGLShape& orig);
00110
00111
00112
virtual void bounds(FXRangef& box);
00113
00114
00115
virtual void draw(FXGLViewer* viewer);
00116
00117
00118
virtual void hit(
FXGLViewer* viewer);
00119
00120
00121
virtual FXGLObject* copy();
00122
00123
00124
virtual FXbool canDrag() const;
00125
00126
00127 virtual FXbool canDelete() const;
00128
00129
00130 virtual FXbool drag(
FXGLViewer* viewer,FXint fx,FXint fy,FXint tx,FXint ty);
00131
00132
00133
void setTipText(const
FXString& text){ tip=text; }
00134
00135
00136
const FXString& getTipText()
const {
return tip; }
00137
00138
00139
void setMaterial(FXint side,
const FXMaterial &mtl);
00140
00141
00142
void getMaterial(FXint side,FXMaterial &mtl)
const;
00143
00144
00145
virtual void save(FXStream& store)
const;
00146
00147
00148
virtual void load(FXStream& store);
00149 };
00150
00151 }
00152
00153
#endif
00154