/***************************************************************************
 *                          Zanoza Modeler v2.x                            *
 *      This is unpublished propietary source code of Zanoza Software.     *
 *      The copyright notice does not evidence any actual or intended      *
 *                    publication of such source code.                     *
 *                                                                         *
 *                Copyright (c) 2002-2008 Zanoza Software.                 *
 *                                                                         *
 *                        All rights reserved.                             *
 ***************************************************************************
 *--------------------------------------------------------------------------
 * @author:   Oleg Melashenko
 *--------------------------------------------------------------------------
 * @purpose:  Declaration of the class IProcParams
 *   Interface supplied into each tool's action handling operation.
 *   Tool can extract and modify data within this interface. The
 *   interface specified parameters of invocation: e.g. Edit level,
 *   axis of edition, viewport and modes.
 *--------------------------------------------------------------------------
 * @created: Saturday, September 21, 2002 16:06:45
 */

#if !defined(IProcParams_h_included)
#define IProcParams_h_included
//forward declaration of this class might require
namespace core
{ class IProcParams; };
#include <zmodeler.h>
#include <core/coreTypes.h>
#include <core/events/eventsTypes.h>
#include <services/IRenderManager.h>
#include <core/ui/IViewport.h>
#include <core/ISubset.h>


namespace core
{
  
  class IProcParams : public ZUnknown
  {
  public:
    virtual ZRESULT setRenderManager(services::IRenderManager* ppManager)=0;
    virtual ZRESULT getRenderManager(services::IRenderManager** ppManager)=0;
    virtual ZRESULT setViewport(core::ui::IViewport* pViewport)=0;
    virtual ZRESULT getViewport(core::ui::IViewport** ppViewport)=0;
    virtual ZRESULT setSubset(core::ISubset* pSubset)=0;
    virtual ZRESULT getSubset(core::ISubset** ppSubset)=0;
    virtual ZRESULT setExpectedLevel(eLevel lev)=0;
    virtual ZRESULT getExpectedLevel(eLevel& lev)=0;
    virtual ZRESULT getLevel(eLevel& lev)=0;
    virtual ZRESULT isLevel(eLevel lev)=0;
    /* Sets editing level. bTemporary specifies whether UI should be altered (the
     * message is sent on level change). */
    virtual ZRESULT setLevel(eLevel lev, bool bTemporary=true)=0;
    virtual ZRESULT getPreviouseCursorLocation(ZPoint& ptLoc, bool bExact=false)=0;
    virtual ZRESULT getCursorLocation(ZPoint& ptLoc, bool bExact=false)=0;
    virtual ZRESULT setCursorLocation(ZPoint ptLoc, bool bExact=false)=0;
    virtual ZRESULT getPreviouseInputLine(ZLine3D& line, bool bExact=false)=0;
    virtual ZRESULT getInputLine(ZLine3D& line, bool bExact=false)=0;
    virtual ZRESULT setInputLine(ZLine3D line, bool bExact=false)=0;
    virtual ZRESULT isSelectedMode(void)=0;
    virtual ZRESULT setSelectedMode(bool bOn=true, bool bTemporary=true)=0;
    virtual ZRESULT setAxesMode(eAxesMode mode, eAxis axis)=0;
    virtual ZRESULT getAxesMode(eAxesMode& mode, eAxis& axis)=0;
    virtual ZRESULT setInputFlags(DWORD nFlags)=0;
    virtual ZRESULT getInputFlags(DWORD& nFlags)=0;
    virtual ZRESULT setState(eState state)=0;
    virtual ZRESULT isState(const eState state) const=0;
    virtual ZRESULT getState(eState& state)=0;
    virtual ZRESULT setPivotHelper(ZPoint3D ptPivot)=0;
    virtual ZRESULT getPivotHelper(ZPoint3D& ptPivot)=0;
    virtual ZRESULT isPivotHelperVisible(void)=0;
    virtual ZRESULT displayPivotHelper(bool bShow)=0;
  
  };//class IProcParams
};//core

#endif
