// File generated by CPPExt (Transient)
//
//
//                     Copyright (C) 1991 - 2000 by  
//                      Matra Datavision SA.  All rights reserved.
//  
//                     Copyright (C) 2001 - 2004 by
//                     Open CASCADE SA.  All rights reserved.
// 
// This file is part of the Open CASCADE Technology software.
//
// This software may be distributed and/or modified under the terms and
// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
// and appearing in the file LICENSE included in the packaging of this file.
//  
// This software is distributed on an "AS IS" basis, without warranty of any
// kind, and Open CASCADE SA hereby disclaims all such warranties,
// including without limitation, any warranties of merchantability, fitness
// for a particular purpose or non-infringement. Please see the License for
// the specific terms and conditions governing rights and limitations under the
// License.

#ifndef _IGESDraw_PerspectiveView_HeaderFile
#define _IGESDraw_PerspectiveView_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Handle_IGESDraw_PerspectiveView_HeaderFile
#include <Handle_IGESDraw_PerspectiveView.hxx>
#endif

#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _gp_XYZ_HeaderFile
#include <gp_XYZ.hxx>
#endif
#ifndef _gp_XY_HeaderFile
#include <gp_XY.hxx>
#endif
#ifndef _IGESData_ViewKindEntity_HeaderFile
#include <IGESData_ViewKindEntity.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _Handle_IGESData_ViewKindEntity_HeaderFile
#include <Handle_IGESData_ViewKindEntity.hxx>
#endif
#ifndef _Handle_IGESData_TransfEntity_HeaderFile
#include <Handle_IGESData_TransfEntity.hxx>
#endif
class Standard_OutOfRange;
class gp_XYZ;
class gp_XY;
class IGESData_ViewKindEntity;
class gp_Vec;
class gp_Pnt;
class gp_Pnt2d;
class IGESData_TransfEntity;


//! defines IGESPerspectiveView, Type <410> Form <1> <br>
//!          in package IGESDraw <br>
class IGESDraw_PerspectiveView : public IGESData_ViewKindEntity {

public:
 // Methods PUBLIC
 // 


Standard_EXPORT IGESDraw_PerspectiveView();

//! This method is used to set the fields of the class <br>
//!           PerspectiveView <br>
//!       - aViewNumber         : The desired view <br>
//!       - aScaleFactor        : Scale factor <br>
//!       - aViewNormalVector   : View plane normal vector (model space) <br>
//!       - aViewReferencePoint : View reference point     (model space) <br>
//!       - aCenterOfProjection : Center Of Projection     (model space) <br>
//!       - aViewUpVector       : View up vector           (model space) <br>
//!       - aViewPlaneDistance  : View plane distance      (model space) <br>
//!       - aTopLeft            : Top-left point of clipping window <br>
//!       - aBottomRight        : Bottom-right point of clipping window <br>
//!       - aDepthClip          : Depth clipping indicator <br>
//!       - aBackPlaneDistance  : Distance of back clipping plane <br>
//!       - aFrontPlaneDistance : Distance of front clipping plane <br>
Standard_EXPORT   void Init(const Standard_Integer aViewNumber,const Standard_Real aScaleFactor,const gp_XYZ& aViewNormalVector,const gp_XYZ& aViewReferencePoint,const gp_XYZ& aCenterOfProjection,const gp_XYZ& aViewUpVector,const Standard_Real aViewPlaneDistance,const gp_XY& aTopLeft,const gp_XY& aBottomRight,const Standard_Integer aDepthClip,const Standard_Real aBackPlaneDistance,const Standard_Real aFrontPlaneDistance) ;

//! Returns True (for a single view) <br>
Standard_EXPORT   Standard_Boolean IsSingle() const;

//! Returns 1 (single view) <br>
Standard_EXPORT   Standard_Integer NbViews() const;

//! For a single view, returns <me> whatever <num> <br>
Standard_EXPORT   Handle_IGESData_ViewKindEntity ViewItem(const Standard_Integer num) const;

//! returns the view number associated with <me> <br>
Standard_EXPORT   Standard_Integer ViewNumber() const;

//! returns the scale factor associated with <me> <br>
Standard_EXPORT   Standard_Real ScaleFactor() const;

//! returns the View plane normal vector (model space) <br>
Standard_EXPORT   gp_Vec ViewNormalVector() const;

//! returns the View reference point (model space) <br>
Standard_EXPORT   gp_Pnt ViewReferencePoint() const;

//! returns the Center Of Projection (model space) <br>
Standard_EXPORT   gp_Pnt CenterOfProjection() const;

//! returns the View up vector (model space) <br>
Standard_EXPORT   gp_Vec ViewUpVector() const;

//! returns the View plane distance (model space) <br>
Standard_EXPORT   Standard_Real ViewPlaneDistance() const;

//! returns the top left point of the clipping window <br>
Standard_EXPORT   gp_Pnt2d TopLeft() const;

//! returns the bottom right point of the clipping window <br>
Standard_EXPORT   gp_Pnt2d BottomRight() const;

//! returns the Depth clipping indicator <br>
//!     0 = No depth clipping <br>
//!     1 = Back clipping plane ON <br>
//!     2 = Front clipping plane ON <br>
//!     3 = Back and front clipping planes ON <br>
Standard_EXPORT   Standard_Integer DepthClip() const;

//! returns the View coordinate denoting the location of <br>
//! the back clipping plane <br>
Standard_EXPORT   Standard_Real BackPlaneDistance() const;

//! returns the View coordinate denoting the location of <br>
//! the front clipping plane <br>
Standard_EXPORT   Standard_Real FrontPlaneDistance() const;

//! returns the Transformation Matrix <br>
Standard_EXPORT   Handle_IGESData_TransfEntity ViewMatrix() const;

//! returns XYX from the Model space to the View space by <br>
//! applying the View Matrix <br>
Standard_EXPORT   gp_XYZ ModelToView(const gp_XYZ& coords) const;
//Standard_EXPORT ~IGESDraw_PerspectiveView();




 // Type management
 //
 Standard_EXPORT const Handle(Standard_Type)& DynamicType() const;
 //Standard_EXPORT Standard_Boolean	       IsKind(const Handle(Standard_Type)&) const;

protected:

 // Methods PROTECTED
 // 


 // Fields PROTECTED
 //


private: 

 // Methods PRIVATE
 // 


 // Fields PRIVATE
 //
Standard_Integer theViewNumber;
Standard_Real theScaleFactor;
gp_XYZ theViewNormalVector;
gp_XYZ theViewReferencePoint;
gp_XYZ theCenterOfProjection;
gp_XYZ theViewUpVector;
Standard_Real theViewPlaneDistance;
gp_XY theTopLeft;
gp_XY theBottomRight;
Standard_Integer theDepthClip;
Standard_Real theBackPlaneDistance;
Standard_Real theFrontPlaneDistance;


};





// other Inline functions and methods (like "C++: function call" methods)
//


#endif
