/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2025, Open Design Alliance (the "Alliance"). // All rights reserved. // // This software and its documentation and related materials are owned by // the Alliance. The software may only be incorporated into application // programs owned by members of the Alliance, subject to a signed // Membership Agreement and Supplemental Software License Agreement with the // Alliance. The structure and organization of this software are the valuable // trade secrets of the Alliance and its suppliers. The software is also // protected by copyright law and international treaty provisions. Application // programs incorporating this software must include the following statement // with their copyright notices: // // This application incorporates Open Design Alliance software pursuant to a license // agreement with Open Design Alliance. // Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// #ifndef TVANDDRAGGERS_H #define TVANDDRAGGERS_H #include #include "Tools/TvDragger.h" #include "TvAndCore.h" //structure for storing viewport params struct OdTvViewportParams { OdTvViewportParams(); //save camera params void store(OdTvGsViewPtr pView); //restore saved param to view void setup(OdTvExtendedView* pTvExtendedView) const; OdTvPoint position; OdTvPoint target; OdTvVector up; double fieldWidth; double fieldHeight; OdTvGsView::Projection projectionType; }; //////////////////////////////////////////// ////// TvAndBaseDragger implementation /////// //////////////////////////////////////////// class TvAndBaseDragger : public OdTvDragger { public : TvAndBaseDragger(OdTvGsDeviceId& tvDeviceId, OdTvModelId& tvDraggersModelId, TvAndGlobalParameters* pParams) : OdTvDragger (tvDeviceId, tvDraggersModelId), m_pGlobalParams(pParams), m_bFixedFrameRateEnabled(false) {} ~TvAndBaseDragger() {} virtual eDraggerResult drag(int x, int y); virtual eDraggerResult nextpointup(int x, int y); protected: TvAndGlobalParameters* m_pGlobalParams; bool m_bFixedFrameRateEnabled; }; //////////////////////////////////////////// ////// TvAndPanDragger implementation //////// //////////////////////////////////////////// class TvAndPanDragger : public TvAndBaseDragger { public : TvAndPanDragger(OdTvGsDeviceId& tvDeviceId, OdTvModelId& tvDraggersModelId, TvAndGlobalParameters* pParams) : TvAndBaseDragger (tvDeviceId, tvDraggersModelId, pParams) {} ~TvAndPanDragger() {} virtual eDraggerResult start(OdTvDraggerPtr pPrevDragger, OdTvExtendedView* pExtendedView); virtual eDraggerResult nextpoint(int x, int y); virtual eDraggerResult drag(int x, int y); virtual eDraggerResult nextpointup(int x, int y); private: // last cliked or moved point (WCS) OdGePoint3d m_prevPt; // last camera position (WCS) OdGePoint3d m_pos; }; //////////////////////////////////////////// ///// TvAndOrbitDragger implementation /////// //////////////////////////////////////////// class TvAndOrbitDragger : public TvAndBaseDragger { public: TvAndOrbitDragger(OdTvGsDeviceId& tvDeviceId, OdTvModelId& tvDraggersModelId, TvAndGlobalParameters* pParams); ~TvAndOrbitDragger() {} eDraggerResult start(OdTvDraggerPtr pPrevDragger, OdTvExtendedView* pExtendedView); eDraggerResult nextpoint(int x, int y); eDraggerResult drag(int x, int y); eDraggerResult nextpointup(int x, int y); private: OdTvDCPoint m_startCursorPosition; OdTvViewportParams m_viewportParams; }; #endif //TVANDDRAGGERS_H