// 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 _Graphic3d_GraphicDriver_HeaderFile
#define _Graphic3d_GraphicDriver_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Handle_Graphic3d_GraphicDriver_HeaderFile
#include <Handle_Graphic3d_GraphicDriver.hxx>
#endif

#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _OSD_SharedLibrary_HeaderFile
#include <OSD_SharedLibrary.hxx>
#endif
#ifndef _Aspect_GraphicDriver_HeaderFile
#include <Aspect_GraphicDriver.hxx>
#endif
#ifndef _Standard_CString_HeaderFile
#include <Standard_CString.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _Aspect_Display_HeaderFile
#include <Aspect_Display.hxx>
#endif
#ifndef _Graphic3d_CView_HeaderFile
#include <Graphic3d_CView.hxx>
#endif
#ifndef _Graphic3d_CStructure_HeaderFile
#include <Graphic3d_CStructure.hxx>
#endif
#ifndef _Standard_ShortReal_HeaderFile
#include <Standard_ShortReal.hxx>
#endif
#ifndef _Graphic3d_CGroup_HeaderFile
#include <Graphic3d_CGroup.hxx>
#endif
#ifndef _Handle_Graphic3d_HArray1OfBytes_HeaderFile
#include <Handle_Graphic3d_HArray1OfBytes.hxx>
#endif
#ifndef _Graphic3d_TypeOfPrimitive_HeaderFile
#include <Graphic3d_TypeOfPrimitive.hxx>
#endif
#ifndef _Graphic3d_CPick_HeaderFile
#include <Graphic3d_CPick.hxx>
#endif
#ifndef _Aspect_FillMethod_HeaderFile
#include <Aspect_FillMethod.hxx>
#endif
#ifndef _Aspect_CLayer2d_HeaderFile
#include <Aspect_CLayer2d.hxx>
#endif
#ifndef _Graphic3d_TypeOfPolygon_HeaderFile
#include <Graphic3d_TypeOfPolygon.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _Quantity_PlaneAngle_HeaderFile
#include <Quantity_PlaneAngle.hxx>
#endif
#ifndef _Graphic3d_TextPath_HeaderFile
#include <Graphic3d_TextPath.hxx>
#endif
#ifndef _Graphic3d_HorizontalTextAlignment_HeaderFile
#include <Graphic3d_HorizontalTextAlignment.hxx>
#endif
#ifndef _Graphic3d_VerticalTextAlignment_HeaderFile
#include <Graphic3d_VerticalTextAlignment.hxx>
#endif
#ifndef _Graphic3d_PrimitiveArray_HeaderFile
#include <Graphic3d_PrimitiveArray.hxx>
#endif
#ifndef _Graphic3d_CUserDraw_HeaderFile
#include <Graphic3d_CUserDraw.hxx>
#endif
#ifndef _Quantity_NameOfColor_HeaderFile
#include <Quantity_NameOfColor.hxx>
#endif
#ifndef _Aspect_TypeOfTriedronPosition_HeaderFile
#include <Aspect_TypeOfTriedronPosition.hxx>
#endif
#ifndef _Aspect_TypeOfTriedronEcho_HeaderFile
#include <Aspect_TypeOfTriedronEcho.hxx>
#endif
#ifndef _Graphic3d_TypeOfComposition_HeaderFile
#include <Graphic3d_TypeOfComposition.hxx>
#endif
#ifndef _Graphic3d_TypeOfTexture_HeaderFile
#include <Graphic3d_TypeOfTexture.hxx>
#endif
#ifndef _Handle_AlienImage_AlienImage_HeaderFile
#include <Handle_AlienImage_AlienImage.hxx>
#endif
#ifndef _Handle_TColStd_HArray1OfReal_HeaderFile
#include <Handle_TColStd_HArray1OfReal.hxx>
#endif
#ifndef _Graphic3d_CInitTexture_HeaderFile
#include <Graphic3d_CInitTexture.hxx>
#endif
#ifndef _Standard_Address_HeaderFile
#include <Standard_Address.hxx>
#endif
#ifndef _Aspect_Handle_HeaderFile
#include <Aspect_Handle.hxx>
#endif
#ifndef _Graphic3d_ExportFormat_HeaderFile
#include <Graphic3d_ExportFormat.hxx>
#endif
#ifndef _Graphic3d_SortType_HeaderFile
#include <Graphic3d_SortType.hxx>
#endif
#ifndef _Graphic3d_CLight_HeaderFile
#include <Graphic3d_CLight.hxx>
#endif
#ifndef _Graphic3d_CPlane_HeaderFile
#include <Graphic3d_CPlane.hxx>
#endif
class Graphic3d_TransformError;
class TColStd_Array2OfReal;
class Graphic3d_HArray1OfBytes;
class Graphic3d_VertexNC;
class Graphic3d_Vector;
class Graphic3d_Vertex;
class Graphic3d_Array1OfVertex;
class Graphic3d_Array1OfVertexN;
class Graphic3d_Array1OfVertexNT;
class TColStd_Array1OfInteger;
class Graphic3d_Array1OfVertexC;
class Graphic3d_Array2OfVertex;
class Graphic3d_Array2OfVertexN;
class Graphic3d_Array2OfVertexNT;
class Aspect_Array1OfEdge;
class Graphic3d_Array1OfVertexNC;
class TCollection_ExtendedString;
class TColStd_Array1OfReal;
class AlienImage_AlienImage;
class TColStd_HArray1OfReal;


//! This class allows the definition of a graphic <br>
//!	    driver and encapsulates the Pex driver, the <br>
//!	    OpenGl driver, the Optimizer driver and the Phigs driver. <br>
class Graphic3d_GraphicDriver : public Aspect_GraphicDriver {

public:
 // Methods PUBLIC
 // 

//! Initialises the Driver <br>
Standard_EXPORT Graphic3d_GraphicDriver(const Standard_CString AShrName);

//! call_togl_begin <br>
Standard_EXPORT virtual  Standard_Boolean Begin(const Standard_CString ADisplay) ;

//! call_togl_begin_display <br>
Standard_EXPORT virtual  Standard_Boolean Begin(const Aspect_Display ADisplay) ;

//! call_togl_end <br>
Standard_EXPORT virtual  void End() ;

//! call_togl_inquirelight <br>
Standard_EXPORT virtual  Standard_Integer InquireLightLimit() ;

//! call_togl_inquiremat <br>
Standard_EXPORT virtual  void InquireMat(const Graphic3d_CView& ACView,TColStd_Array2OfReal& AMatO,TColStd_Array2OfReal& AMatM) ;

//! call_togl_inquireplane <br>
Standard_EXPORT virtual  Standard_Integer InquirePlaneLimit() ;

//! call_togl_inquireview <br>
Standard_EXPORT virtual  Standard_Integer InquireViewLimit() ;

//! Returns Standard_True if texture is <br>
//!	    supported by the graphic driver <br>
Standard_EXPORT virtual  Standard_Boolean InquireTextureAvailable() ;

//! call_togl_blink <br>
Standard_EXPORT virtual  void Blink(const Graphic3d_CStructure& ACStructure,const Standard_Boolean Create) ;

//! call_togl_boundarybox <br>
Standard_EXPORT virtual  void BoundaryBox(const Graphic3d_CStructure& ACStructure,const Standard_Boolean Create) ;

//! call_togl_highlightcolor <br>
Standard_EXPORT virtual  void HighlightColor(const Graphic3d_CStructure& ACStructure,const Standard_ShortReal R,const Standard_ShortReal G,const Standard_ShortReal B,const Standard_Boolean Create) ;

//! call_togl_namesetstructure <br>
Standard_EXPORT virtual  void NameSetStructure(const Graphic3d_CStructure& ACStructure) ;

//! call_togl_cleargroup <br>
Standard_EXPORT virtual  void ClearGroup(const Graphic3d_CGroup& ACGroup) ;

//! call_togl_closegroup <br>
Standard_EXPORT virtual  void CloseGroup(const Graphic3d_CGroup& ACGroup) ;

//! call_togl_facecontextgroup <br>
Standard_EXPORT virtual  void FaceContextGroup(const Graphic3d_CGroup& ACGroup,const Standard_Integer NoInsert) ;

//! call_togl_group <br>
Standard_EXPORT virtual  void Group(Graphic3d_CGroup& ACGroup) ;

//! call_togl_linecontextgroup <br>
Standard_EXPORT virtual  void LineContextGroup(const Graphic3d_CGroup& ACGroup,const Standard_Integer NoInsert) ;

//! call_togl_markercontextgroup <br>
Standard_EXPORT virtual  void MarkerContextGroup(const Graphic3d_CGroup& ACGroup,const Standard_Integer NoInsert) ;

//! call_togl_markercontextgroup <br>
Standard_EXPORT virtual  void MarkerContextGroup(const Graphic3d_CGroup& ACGroup,const Standard_Integer NoInsert,const Standard_Integer AMarkWidth,const Standard_Integer AMarkHeight,const Handle(Graphic3d_HArray1OfBytes)& ATexture) ;

//! call_togl_opengroup <br>
Standard_EXPORT virtual  void OpenGroup(const Graphic3d_CGroup& ACGroup) ;

//! call_togl_removegroup <br>
Standard_EXPORT virtual  void RemoveGroup(const Graphic3d_CGroup& ACGroup) ;

//! call_togl_textcontextgroup <br>
Standard_EXPORT virtual  void TextContextGroup(const Graphic3d_CGroup& ACGroup,const Standard_Integer NoInsert) ;

//! call_togl_clearstructure <br>
Standard_EXPORT virtual  void ClearStructure(const Graphic3d_CStructure& ACStructure) ;

//! call_togl_connect <br>
Standard_EXPORT virtual  void Connect(const Graphic3d_CStructure& AFather,const Graphic3d_CStructure& ASon) ;

//! call_togl_contextstructure <br>
Standard_EXPORT virtual  void ContextStructure(const Graphic3d_CStructure& ACStructure) ;

//! call_togl_disconnect <br>
Standard_EXPORT virtual  void Disconnect(const Graphic3d_CStructure& AFather,const Graphic3d_CStructure& ASon) ;

//! call_togl_displaystructure <br>
Standard_EXPORT virtual  void DisplayStructure(const Graphic3d_CView& ACView,const Graphic3d_CStructure& ACStructure,const Standard_Integer APriority) ;

//! call_togl_erasestructure <br>
Standard_EXPORT virtual  void EraseStructure(const Graphic3d_CView& ACView,const Graphic3d_CStructure& ACStructure) ;

//! call_togl_removestructure <br>
Standard_EXPORT virtual  void RemoveStructure(const Graphic3d_CStructure& ACStructure) ;

//! call_togl_structure <br>
Standard_EXPORT virtual  void Structure(Graphic3d_CStructure& ACStructure) ;

//! call_togl_structure_exploration <br>
Standard_EXPORT virtual  void DumpGroup(const Graphic3d_CGroup& ACGroup) ;

//! call_togl_structure_exploration <br>
Standard_EXPORT virtual  void DumpStructure(const Graphic3d_CStructure& ACStructure) ;

//! call_togl_view_exploration <br>
Standard_EXPORT virtual  void DumpView(const Graphic3d_CView& ACView) ;

//! call_togl_element_exploration <br>
Standard_EXPORT virtual  Standard_Boolean ElementExploration(const Graphic3d_CStructure& ACStructure,const Standard_Integer ElementNumber,Graphic3d_VertexNC& AVertex,Graphic3d_Vector& AVector) ;

//! call_togl_element_type <br>
Standard_EXPORT virtual  Graphic3d_TypeOfPrimitive ElementType(const Graphic3d_CStructure& ACStructure,const Standard_Integer ElementNumber) ;

//! call_togl_init_pick <br>
Standard_EXPORT virtual  void InitPick() ;

//! call_togl_pick <br>
Standard_EXPORT virtual  void Pick(Graphic3d_CPick& ACPick) ;

//! call_togl_pickid <br>
Standard_EXPORT virtual  void PickId(const Graphic3d_CGroup& ACGroup) ;

//! call_togl_activateview <br>
Standard_EXPORT virtual  void ActivateView(const Graphic3d_CView& ACView) ;

//! call_togl_antialiasing <br>
Standard_EXPORT virtual  void AntiAliasing(const Graphic3d_CView& ACView,const Standard_Boolean AFlag) ;

//! call_togl_background <br>
Standard_EXPORT virtual  void Background(const Graphic3d_CView& ACView) ;


Standard_EXPORT virtual  void BackgroundImage(const Standard_CString FileName,const Graphic3d_CView& ACView,const Aspect_FillMethod FillStyle) ;


Standard_EXPORT virtual  void SetBgImageStyle(const Graphic3d_CView& ACView,const Aspect_FillMethod FillStyle) ;

//! call_togl_cliplimit <br>
Standard_EXPORT virtual  void ClipLimit(const Graphic3d_CView& ACView,const Standard_Boolean AWait) ;

//! call_togl_deactivateview <br>
Standard_EXPORT virtual  void DeactivateView(const Graphic3d_CView& ACView) ;

//! call_togl_cliplimit <br>
Standard_EXPORT virtual  void DepthCueing(const Graphic3d_CView& ACView,const Standard_Boolean AFlag) ;

//! call_togl_unproject_raster <br>
Standard_EXPORT virtual  Standard_Boolean ProjectRaster(const Graphic3d_CView& ACView,const Standard_ShortReal AX,const Standard_ShortReal AY,const Standard_ShortReal AZ,Standard_Integer& AU,Standard_Integer& AV) ;

//! call_togl_unproject_raster <br>
Standard_EXPORT virtual  Standard_Boolean UnProjectRaster(const Graphic3d_CView& ACView,const Standard_Integer Axm,const Standard_Integer Aym,const Standard_Integer AXM,const Standard_Integer AYM,const Standard_Integer AU,const Standard_Integer AV,Standard_ShortReal& AX,Standard_ShortReal& AY,Standard_ShortReal& AZ) ;

//! call_togl_unproject_raster_with_ray <br>
Standard_EXPORT virtual  Standard_Boolean UnProjectRasterWithRay(const Graphic3d_CView& ACView,const Standard_Integer Axm,const Standard_Integer Aym,const Standard_Integer AXM,const Standard_Integer AYM,const Standard_Integer AU,const Standard_Integer AV,Standard_ShortReal& AX,Standard_ShortReal& AY,Standard_ShortReal& AZ,Standard_ShortReal& DX,Standard_ShortReal& DY,Standard_ShortReal& DZ) ;

//! call_togl_ratio_window <br>
Standard_EXPORT virtual  void RatioWindow(const Graphic3d_CView& ACView) ;

//! call_togl_redraw <br>
//!  Warning: when the redraw area has a null size, the full view is redrawn <br>
Standard_EXPORT virtual  void Redraw(const Graphic3d_CView& ACView,const Aspect_CLayer2d& ACUnderLayer,const Aspect_CLayer2d& ACOverLayer,const Standard_Integer x = 0,const Standard_Integer y = 0,const Standard_Integer width = 0,const Standard_Integer height = 0) ;

//! call_togl_removeview <br>
Standard_EXPORT virtual  void RemoveView(const Graphic3d_CView& ACView) ;

//! call_togl_setlight <br>
Standard_EXPORT virtual  void SetLight(const Graphic3d_CView& ACView) ;

//! call_togl_setplane <br>
Standard_EXPORT virtual  void SetPlane(const Graphic3d_CView& ACView) ;

//! call_togl_setvisualisation <br>
Standard_EXPORT virtual  void SetVisualisation(const Graphic3d_CView& ACView) ;

//! call_togl_transformstructure <br>
Standard_EXPORT virtual  void TransformStructure(const Graphic3d_CStructure& ACStructure) ;

//! call_togl_degeneratestructure <br>
Standard_EXPORT virtual  void DegenerateStructure(const Graphic3d_CStructure& ACStructure) ;

//! call_togl_transparency <br>
Standard_EXPORT virtual  void Transparency(const Graphic3d_CView& ACView,const Standard_Boolean AFlag) ;

//! call_togl_update <br>
Standard_EXPORT virtual  void Update(const Graphic3d_CView& ACView,const Aspect_CLayer2d& ACUnderLayer,const Aspect_CLayer2d& ACOverLayer) ;

//! call_togl_view <br>
Standard_EXPORT virtual  Standard_Boolean View(Graphic3d_CView& ACView) ;

//! call_togl_viewmapping <br>
Standard_EXPORT virtual  void ViewMapping(const Graphic3d_CView& ACView,const Standard_Boolean AWait) ;

//! call_togl_vieworientation <br>
Standard_EXPORT virtual  void ViewOrientation(const Graphic3d_CView& ACView,const Standard_Boolean AWait) ;


Standard_EXPORT virtual  void Environment(const Graphic3d_CView& ACView) ;


Standard_EXPORT virtual  void Marker(const Graphic3d_CGroup& ACGroup,const Graphic3d_Vertex& APoint,const Standard_Boolean EvalMinMax = Standard_True) ;


Standard_EXPORT virtual  void MarkerSet(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array1OfVertex& ListVertex,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_polygon <br>
Standard_EXPORT virtual  void Polygon(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array1OfVertex& ListVertex,const Graphic3d_TypeOfPolygon AType = Graphic3d_TOP_CONVEX,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_polygon <br>
Standard_EXPORT virtual  void Polygon(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array1OfVertex& ListVertex,const Graphic3d_Vector& Normal,const Graphic3d_TypeOfPolygon AType = Graphic3d_TOP_CONVEX,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_polygon <br>
Standard_EXPORT virtual  void Polygon(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array1OfVertexN& ListVertex,const Graphic3d_TypeOfPolygon AType = Graphic3d_TOP_CONVEX,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_polygon <br>
Standard_EXPORT virtual  void Polygon(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array1OfVertexN& ListVertex,const Graphic3d_Vector& Normal,const Graphic3d_TypeOfPolygon AType = Graphic3d_TOP_CONVEX,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_polygon <br>
Standard_EXPORT virtual  void Polygon(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array1OfVertexNT& ListVertex,const Graphic3d_TypeOfPolygon AType = Graphic3d_TOP_CONVEX,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_polygon_holes <br>
Standard_EXPORT virtual  void PolygonHoles(const Graphic3d_CGroup& ACGroup,const TColStd_Array1OfInteger& Bounds,const Graphic3d_Array1OfVertex& ListVertex,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_polygon_holes <br>
Standard_EXPORT virtual  void PolygonHoles(const Graphic3d_CGroup& ACGroup,const TColStd_Array1OfInteger& Bounds,const Graphic3d_Array1OfVertex& ListVertex,const Graphic3d_Vector& Normal,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_polygon_holes <br>
Standard_EXPORT virtual  void PolygonHoles(const Graphic3d_CGroup& ACGroup,const TColStd_Array1OfInteger& Bounds,const Graphic3d_Array1OfVertexN& ListVertex,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_polygon_holes <br>
Standard_EXPORT virtual  void PolygonHoles(const Graphic3d_CGroup& ACGroup,const TColStd_Array1OfInteger& Bounds,const Graphic3d_Array1OfVertexN& ListVertex,const Graphic3d_Vector& Normal,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_polyline <br>
Standard_EXPORT virtual  void Polyline(const Graphic3d_CGroup& ACGroup,const Standard_Real X1,const Standard_Real Y1,const Standard_Real Z1,const Standard_Real X2,const Standard_Real Y2,const Standard_Real Z2,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_polyline <br>
Standard_EXPORT virtual  void Polyline(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array1OfVertex& ListVertex,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_polyline <br>
Standard_EXPORT virtual  void Polyline(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array1OfVertexC& ListVertex,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_quadrangle <br>
Standard_EXPORT virtual  void QuadrangleMesh(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array2OfVertex& ListVertex,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_quadrangle <br>
Standard_EXPORT virtual  void QuadrangleMesh(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array2OfVertexN& ListVertex,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_quadrangle <br>
Standard_EXPORT virtual  void QuadrangleMesh(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array2OfVertexNT& ListVertex,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_polygon_indices <br>
Standard_EXPORT virtual  void QuadrangleSet(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array1OfVertex& ListVertex,const Aspect_Array1OfEdge& ListEdge,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_polygon_indices <br>
Standard_EXPORT virtual  void QuadrangleSet(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array1OfVertexN& ListVertex,const Aspect_Array1OfEdge& ListEdge,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_polygon_indices <br>
Standard_EXPORT virtual  void QuadrangleSet(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array1OfVertexNT& ListVertex,const Aspect_Array1OfEdge& ListEdge,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_polygon_indices <br>
Standard_EXPORT virtual  void QuadrangleSet(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array1OfVertexC& ListVertex,const Aspect_Array1OfEdge& ListEdge,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_polygon_indices <br>
Standard_EXPORT virtual  void QuadrangleSet(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array1OfVertexNC& ListVertex,const Aspect_Array1OfEdge& ListEdge,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_text <br>
Standard_EXPORT virtual  void Text(const Graphic3d_CGroup& ACGroup,const Standard_CString AText,const Graphic3d_Vertex& APoint,const Standard_Real AHeight,const Quantity_PlaneAngle AAngle,const Graphic3d_TextPath ATp,const Graphic3d_HorizontalTextAlignment AHta,const Graphic3d_VerticalTextAlignment AVta,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_text <br>
Standard_EXPORT virtual  void Text(const Graphic3d_CGroup& ACGroup,const Standard_CString AText,const Graphic3d_Vertex& APoint,const Standard_Real AHeight,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_text <br>
Standard_EXPORT virtual  void Text(const Graphic3d_CGroup& ACGroup,const TCollection_ExtendedString& AText,const Graphic3d_Vertex& APoint,const Standard_Real AHeight,const Quantity_PlaneAngle AAngle,const Graphic3d_TextPath ATp,const Graphic3d_HorizontalTextAlignment AHta,const Graphic3d_VerticalTextAlignment AVta,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_text <br>
Standard_EXPORT virtual  void Text(const Graphic3d_CGroup& ACGroup,const TCollection_ExtendedString& AText,const Graphic3d_Vertex& APoint,const Standard_Real AHeight,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_triangle <br>
Standard_EXPORT virtual  void TriangleMesh(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array1OfVertex& ListVertex,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_triangle <br>
Standard_EXPORT virtual  void TriangleMesh(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array1OfVertexN& ListVertex,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_triangle <br>
Standard_EXPORT virtual  void TriangleMesh(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array1OfVertexNT& ListVertex,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_polygon_indices <br>
Standard_EXPORT virtual  void TriangleSet(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array1OfVertex& ListVertex,const Aspect_Array1OfEdge& ListEdge,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_polygon_indices <br>
Standard_EXPORT virtual  void TriangleSet(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array1OfVertexN& ListVertex,const Aspect_Array1OfEdge& ListEdge,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_polygon_indices <br>
Standard_EXPORT virtual  void TriangleSet(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array1OfVertexNT& ListVertex,const Aspect_Array1OfEdge& ListEdge,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_polygon_indices <br>
Standard_EXPORT virtual  void TriangleSet(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array1OfVertexC& ListVertex,const Aspect_Array1OfEdge& ListEdge,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_polygon_indices <br>
Standard_EXPORT virtual  void TriangleSet(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array1OfVertexNC& ListVertex,const Aspect_Array1OfEdge& ListEdge,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_parray <br>
Standard_EXPORT virtual  void PrimitiveArray(const Graphic3d_CGroup& ACGroup,const Graphic3d_PrimitiveArray& parray,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_userdraw <br>
Standard_EXPORT virtual  void UserDraw(const Graphic3d_CGroup& ACGroup,const Graphic3d_CUserDraw& AUserDraw) ;

//! call_togl_ztriedron_setup <br>
Standard_EXPORT virtual  void ZBufferTriedronSetup(const Quantity_NameOfColor XColor = Quantity_NOC_RED,const Quantity_NameOfColor YColor = Quantity_NOC_GREEN,const Quantity_NameOfColor ZColor = Quantity_NOC_BLUE1,const Standard_Real SizeRatio = 0.8,const Standard_Real AxisDiametr = 0.05,const Standard_Integer NbFacettes = 12) ;

//! call_togl_triedron_display <br>
Standard_EXPORT virtual  void TriedronDisplay(const Graphic3d_CView& ACView,const Aspect_TypeOfTriedronPosition APosition = Aspect_TOTP_CENTER,const Quantity_NameOfColor AColor = Quantity_NOC_WHITE,const Standard_Real AScale = 0.02,const Standard_Boolean AsWireframe = Standard_True) ;

//! call_togl_triedron_erase <br>
Standard_EXPORT virtual  void TriedronErase(const Graphic3d_CView& ACView) ;

//! call_togl_triedron_echo <br>
Standard_EXPORT virtual  void TriedronEcho(const Graphic3d_CView& ACView,const Aspect_TypeOfTriedronEcho AType = Aspect_TOTE_NONE) ;

//! call_togl_bezier <br>
Standard_EXPORT virtual  void Bezier(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array1OfVertex& ListVertex,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_bezier_weight <br>
Standard_EXPORT virtual  void Bezier(const Graphic3d_CGroup& ACGroup,const Graphic3d_Array1OfVertex& ListVertex,const TColStd_Array1OfReal& ListWeight,const Standard_Boolean EvalMinMax = Standard_True) ;

//! call_togl_begin_animation <br>
Standard_EXPORT virtual  void BeginAnimation(const Graphic3d_CView& ACView) ;

//! call_togl_end_animation <br>
Standard_EXPORT virtual  void EndAnimation(const Graphic3d_CView& ACView) ;

//! call_togl_begin_ajout_mode <br>
Standard_EXPORT virtual  Standard_Boolean BeginAddMode(const Graphic3d_CView& ACView) ;

//! call_togl_end_ajout_mode <br>
Standard_EXPORT virtual  void EndAddMode() ;

//! call_togl_begin_immediat_mode <br>
Standard_EXPORT virtual  Standard_Boolean BeginImmediatMode(const Graphic3d_CView& ACView,const Aspect_CLayer2d& ACUnderLayer,const Aspect_CLayer2d& ACOverLayer,const Standard_Boolean DoubleBuffer,const Standard_Boolean RetainMode) ;

//! call_togl_begin_polyline <br>
Standard_EXPORT virtual  void BeginPolyline() ;

//! call_togl_clear_immediat_mode <br>
Standard_EXPORT virtual  void ClearImmediatMode(const Graphic3d_CView& ACView,const Standard_Boolean aFlush = Standard_True) ;

//! call_togl_draw <br>
Standard_EXPORT virtual  void Draw(const Standard_ShortReal X,const Standard_ShortReal Y,const Standard_ShortReal Z) ;

//! call_togl_draw_structure <br>
Standard_EXPORT virtual  void DrawStructure(const Graphic3d_CStructure& ACStructure) ;

//! call_togl_end_immediat_mode <br>
Standard_EXPORT virtual  void EndImmediatMode(const Standard_Integer Synchronize) ;

//! call_togl_end_polyline <br>
Standard_EXPORT virtual  void EndPolyline() ;

//! call_togl_move <br>
Standard_EXPORT virtual  void Move(const Standard_ShortReal X,const Standard_ShortReal Y,const Standard_ShortReal Z) ;

//! call_togl_set_linecolor <br>
Standard_EXPORT virtual  void SetLineColor(const Standard_ShortReal R,const Standard_ShortReal G,const Standard_ShortReal B) ;

//! call_togl_set_linetype <br>
Standard_EXPORT virtual  void SetLineType(const Standard_Integer Type) ;

//! call_togl_set_linewidth <br>
Standard_EXPORT virtual  void SetLineWidth(const Standard_ShortReal Width) ;

//! call_togl_set_minmax <br>
Standard_EXPORT virtual  void SetMinMax(const Standard_ShortReal X1,const Standard_ShortReal Y1,const Standard_ShortReal Z1,const Standard_ShortReal X2,const Standard_ShortReal Y2,const Standard_ShortReal Z2) ;

//! call_togl_transform <br>
Standard_EXPORT virtual  void Transform(const TColStd_Array2OfReal& AMatrix,const Graphic3d_TypeOfComposition AType) ;


Standard_EXPORT virtual  Standard_Integer CreateTexture(const Graphic3d_TypeOfTexture Type,const Handle(AlienImage_AlienImage)& Image,const Standard_CString FileName,const Handle(TColStd_HArray1OfReal)& TexUpperBounds) const;


Standard_EXPORT virtual  void DestroyTexture(const Standard_Integer TexId) const;


Standard_EXPORT virtual  void ModifyTexture(const Standard_Integer TexId,const Graphic3d_CInitTexture& AValue) const;

//! call_togl_layer2d <br>
Standard_EXPORT virtual  void Layer(Aspect_CLayer2d& ACLayer) ;

//! call_togl_removelayer2d <br>
Standard_EXPORT virtual  void RemoveLayer(const Aspect_CLayer2d& ACLayer) ;

//! call_togl_begin_layer2d <br>
Standard_EXPORT virtual  void BeginLayer(const Aspect_CLayer2d& ACLayer) ;

//! call_togl_begin_polygon2d <br>
Standard_EXPORT virtual  void BeginPolygon2d() ;

//! call_togl_begin_polyline2d <br>
Standard_EXPORT virtual  void BeginPolyline2d() ;

//! call_togl_clear_layer2d <br>
Standard_EXPORT virtual  void ClearLayer(const Aspect_CLayer2d& ACLayer) ;

//! call_togl_draw2d <br>
Standard_EXPORT virtual  void Draw(const Standard_ShortReal X,const Standard_ShortReal Y) ;

//! call_togl_edge2d <br>
Standard_EXPORT virtual  void Edge(const Standard_ShortReal X,const Standard_ShortReal Y) ;

//! call_togl_end_layer2d <br>
Standard_EXPORT virtual  void EndLayer() ;

//! call_togl_end_polygon2d <br>
Standard_EXPORT virtual  void EndPolygon2d() ;

//! call_togl_end_polyline2d <br>
Standard_EXPORT virtual  void EndPolyline2d() ;

//! call_togl_move2d <br>
Standard_EXPORT virtual  void Move(const Standard_ShortReal X,const Standard_ShortReal Y) ;

//! call_togl_rectangle2d <br>
Standard_EXPORT virtual  void Rectangle(const Standard_ShortReal X,const Standard_ShortReal Y,const Standard_ShortReal Width,const Standard_ShortReal Height) ;

//! call_togl_set_color <br>
Standard_EXPORT virtual  void SetColor(const Standard_ShortReal R,const Standard_ShortReal G,const Standard_ShortReal B) ;

//! call_togl_set_transparency <br>
Standard_EXPORT virtual  void SetTransparency(const Standard_ShortReal ATransparency) ;

//! call_togl_unset_transparency <br>
Standard_EXPORT virtual  void UnsetTransparency() ;

//! call_togl_set_line_attributes <br>
Standard_EXPORT virtual  void SetLineAttributes(const Standard_Integer Type,const Standard_ShortReal Width) ;

//! call_togl_set_text_attributes <br>
Standard_EXPORT virtual  void SetTextAttributes(const Standard_Integer Font,const Standard_Integer Type,const Standard_ShortReal R,const Standard_ShortReal G,const Standard_ShortReal B) ;

//! call_togl_text2d <br>
Standard_EXPORT virtual  void Text(const Standard_CString AText,const Standard_ShortReal X,const Standard_ShortReal Y,const Standard_ShortReal AHeight) ;

//! call_togl_textsize2d <br>
Standard_EXPORT virtual  void TextSize(const Standard_CString AText,const Standard_ShortReal AHeight,Standard_ShortReal& AWidth,Standard_ShortReal& AnAscent,Standard_ShortReal& ADescent) const;

//! call_togl_backfacing <br>
Standard_EXPORT virtual  void SetBackFacingModel(const Graphic3d_CView& aView) ;

//! call_togl_depthtest <br>
Standard_EXPORT virtual  void SetDepthTestEnabled(const Graphic3d_CView& view,const Standard_Boolean isEnabled) const;

//! call_togl_isdepthtest <br>
Standard_EXPORT virtual  Standard_Boolean IsDepthTestEnabled(const Graphic3d_CView& view) const;

//! Reads depths of shown pixels of the given <br>
//!          rectangle (glReadPixels with GL_DEPTH_COMPONENT) <br>
Standard_EXPORT virtual  void ReadDepths(const Graphic3d_CView& view,const Standard_Integer x,const Standard_Integer y,const Standard_Integer width,const Standard_Integer height,const Standard_Address buffer) const;

//! call_togl_gllight <br>
Standard_EXPORT virtual  void SetGLLightEnabled(const Graphic3d_CView& view,const Standard_Boolean isEnabled) const;

//! call_togl_isgllight <br>
Standard_EXPORT virtual  Standard_Boolean IsGLLightEnabled(const Graphic3d_CView& view) const;

//! print the contents of all layers of the view to the printer. <br>
//! <hPrnDC> : Pass the PrinterDeviceContext (HDC), <br>
//! <showBackground> : When set to FALSE then print the view without background color <br>
//! (background is white) <br>
//! else set to TRUE for printing with current background color. <br>
//! <filename>: If != NULL, then the view will be printed to a file. <br>
Standard_EXPORT virtual  void Print(const Graphic3d_CView& ACView,const Aspect_CLayer2d& ACUnderLayer,const Aspect_CLayer2d& ACOverLayer,const Aspect_Handle hPrnDC,const Standard_Boolean showBackground,const Standard_CString filename) const;


Standard_EXPORT virtual  void Export(const Standard_CString FileName,const Graphic3d_ExportFormat Format,const Graphic3d_SortType SortType,const Standard_Integer W,const Standard_Integer H,const Graphic3d_CView& View,const Aspect_CLayer2d& Under,const Aspect_CLayer2d& Over,const Standard_Real Precision = 0.005,const Standard_Address ProgressBarFunc = NULL,const Standard_Address ProgressObject = NULL) ;

//! call_togl_light <br>
Standard_EXPORT static  Standard_Integer Light(const Graphic3d_CLight& ACLight,const Standard_Boolean Update) ;

//! call_togl_plane <br>
Standard_EXPORT static  Standard_Integer Plane(const Graphic3d_CPlane& ACPlane,const Standard_Boolean Update) ;


Standard_EXPORT   void PrintBoolean(const Standard_CString AComment,const Standard_Boolean AValue) const;


Standard_EXPORT   void PrintCGroup(const Graphic3d_CGroup& ACGroup,const Standard_Integer AField) const;


Standard_EXPORT   void PrintCLight(const Graphic3d_CLight& ACLight,const Standard_Integer AField) const;


Standard_EXPORT   void PrintCPick(const Graphic3d_CPick& ACPick,const Standard_Integer AField) const;


Standard_EXPORT   void PrintCPlane(const Graphic3d_CPlane& ACPlane,const Standard_Integer AField) const;


Standard_EXPORT   void PrintCStructure(const Graphic3d_CStructure& ACStructure,const Standard_Integer AField) const;


Standard_EXPORT   void PrintCView(const Graphic3d_CView& ACView,const Standard_Integer AField) const;


Standard_EXPORT   void PrintFunction(const Standard_CString AFunc) const;


Standard_EXPORT   void PrintInteger(const Standard_CString AComment,const Standard_Integer AValue) const;


Standard_EXPORT   void PrintIResult(const Standard_CString AFunc,const Standard_Integer AResult) const;


Standard_EXPORT   void PrintShortReal(const Standard_CString AComment,const Standard_ShortReal AValue) const;


Standard_EXPORT   void PrintMatrix(const Standard_CString AComment,const TColStd_Array2OfReal& AMatrix) const;


Standard_EXPORT   void PrintString(const Standard_CString AComment,const Standard_CString AString) const;


Standard_EXPORT   void SetTrace(const Standard_Integer ALevel) ;


Standard_EXPORT   Standard_Integer Trace() const;
//Standard_EXPORT ~Graphic3d_GraphicDriver();




 // 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
 //
Standard_Integer MyTraceLevel;
OSD_SharedLibrary MySharedLibrary;


private: 

 // Methods PRIVATE
 // 


 // Fields PRIVATE
 //


};





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


#endif
