![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2011 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 00006 #pragma once 00007 00008 #include <bhave3DGui/bhave3DGuiDefines.h> 00009 00010 #include <vrfGuiCore/vrfGuiCore.h> 00011 #include <vrvCore/DtEventProcessorInterface.h> 00012 00013 #include <vrvCore/DtSelectionManager.h> 00014 #include <vrvCore/DtElementEntry.h> 00015 #include <vrvCore/DtDe.h> 00016 #include <vrvCore/DtIntersector.h> 00017 #include <geometry/point.h> 00018 00019 namespace makVrv 00020 { 00021 class DtOverlayPolygonModelAgent; 00022 class DtSceneObjectAgent; 00023 } 00024 00025 00026 namespace BHAVE 00027 { 00028 namespace BHAVE3DGui 00029 { 00032 class DT_DLL_bhave3DGui DtBoxDrawEventProcessor : public makVrv::DtEventProcessorInterface 00033 { 00034 public: 00035 00037 DtBoxDrawEventProcessor(makVrv::DtDe& de); 00038 00040 virtual ~DtBoxDrawEventProcessor(); 00041 00042 virtual const std::string& className() {return theClassName;}; 00043 00046 virtual bool processMouseEvent( const makVrv::DtMouseEvent& ev, makVrv::DtChannel& channel); 00047 virtual bool processKeyboardEvent( const makVrv::DtKeyEvent& ev, makVrv::DtChannel& channel) {return false;}; 00048 00050 virtual void cleanupBox(); 00051 00052 static void setCurrentMousePosition(makVrv::DtDe&, int x, int y); 00053 static void setCurrentMousePosition(int x, int y); 00054 static void getCurrentMousePosition(int& x, int& y); 00055 00056 virtual bool isActive() const; 00057 virtual void setIsActive(bool active); 00058 00059 virtual void saveLastPoints(); 00060 virtual void restoreLastPoints(); 00061 00062 boost::signal<void (const makVrv::DtIntersectorResult&, const makVrv::DtIntersectorResult&, 00063 const makVrv::DtIntersectorResult&, const makVrv::DtIntersectorResult&)> signal_changedBoxPosition; 00064 00065 boost::signal<void ()> signal_boxCreated; 00066 00067 boost::signal<void (int x, int y)> signal_boxCreationStart; 00068 00069 protected: 00070 00072 virtual void createBox(int modelSet); 00073 00075 virtual void setBoxFromExtents(makVrv::DtChannel& channel, int anchorX, int anchorY, int toX, int toY); 00076 00077 protected: 00078 makVrv::DtDe& myDe; 00079 makVrv::DtOverlayPolygonModelAgent* myBox; 00080 static makVrv::DtUniqueID theLineId; 00081 makVrv::DtSceneObjectAgent* mySceneObjectAgent; 00082 bool myIsActive; 00083 int myInitialMousePositionX; 00084 int myInitialMousePositionY; 00085 static int theCurrentMousePositionX; 00086 static int theCurrentMousePositionY; 00087 static std::string theClassName; 00088 makVrv::DtIntersectorResult myNW; 00089 makVrv::DtIntersectorResult myNE; 00090 makVrv::DtIntersectorResult mySE; 00091 makVrv::DtIntersectorResult mySW; 00092 bool myBoxStarted; 00093 DtPoint myLastNW; 00094 DtPoint myLastNE; 00095 DtPoint myLastSE; 00096 DtPoint myLastSW; 00097 }; 00098 } 00099 }