1 {
2 *****************************************************************************
3 *                                                                           *
4 *  This file is part of the ZCAD                                            *
5 *                                                                           *
6 *  See the file COPYING.modifiedLGPL.txt, included in this distribution,    *
7 *  for details about the copyright.                                         *
8 *                                                                           *
9 *  This program is distributed in the hope that it will be useful,          *
10 *  but WITHOUT ANY WARRANTY; without even the implied warranty of           *
11 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                     *
12 *                                                                           *
13 *****************************************************************************
14 }
15 {
16 @author(Andrey Zubarev <zamtmn@yandex.ru>)
17 }
18 
19 unit uzgldrawerabstract;
20 {$INCLUDE def.inc}
21 interface
22 uses uzgindexsarray,uzgvertex3sarray,UGDBPoint3DArray,{$IFDEF DELPHI}types,{$ENDIF}uzgprimitivescreatorabstract,
23      uzepalette,Classes,Graphics,uzbtypes,uzecamera,uzbgeomtypes,uzegeometry;
24 type
25 TRenderMode=(TRM_ModelSpace,TRM_DisplaySpace,TRM_WindowSpace);
26 TZGLPenStyle=(TPS_Solid,TPS_Dot,TPS_Dash,TPS_Selected);
27 TZGLDrawMode=(TDM_OR,TDM_XOR,TDM_Normal);
28 TZGLAbstractDrawer=class
29                         public
30                         //PVertexBuffer:PGDBOpenArrayOfData;
GetLLPrimitivesCreatornull31                         function GetLLPrimitivesCreator:TLLPrimitivesCreatorAbstract;virtual;abstract;
32 
33                         procedure DrawLine(const PVertexBuffer:PZGLVertex3Sarray;const i1,i2:TLLVertexIndex);virtual;abstract;
34                         procedure DrawTriangle(const PVertexBuffer:PZGLVertex3Sarray;const i1,i2,i3:TLLVertexIndex);virtual;abstract;
35                         procedure DrawTrianglesFan(const PVertexBuffer:PZGLVertex3Sarray;const PIndexBuffer:PZGLIndexsArray;const i1,IndexCount:TLLVertexIndex);virtual;abstract;
36                         procedure DrawTrianglesStrip(const PVertexBuffer:PZGLVertex3Sarray;const PIndexBuffer:PZGLIndexsArray;const i1,IndexCount:TLLVertexIndex);virtual;abstract;
37                         procedure DrawQuad(const PVertexBuffer:PZGLVertex3Sarray;const i1,i2,i3,i4:TLLVertexIndex);virtual;abstract;
CheckOutboundInDisplaynull38                         function CheckOutboundInDisplay(const PVertexBuffer:PZGLVertex3Sarray;const i1:TLLVertexIndex):boolean;virtual;abstract;
39                         procedure DrawPoint(const PVertexBuffer:PZGLVertex3Sarray;const i:TLLVertexIndex);virtual;abstract;
40                         procedure startrender(const mode:TRenderMode;var matrixs:tmatrixs);virtual;abstract;
41                         procedure endrender;virtual;abstract;
startpaintnull42                         function startpaint(InPaintMessage:boolean;w,h:integer):boolean;virtual;abstract;
43                         procedure endpaint(InPaintMessage:boolean);virtual;abstract;
44                         procedure SetLineWidth(const w:single);virtual;abstract;
45                         procedure SetPointSize(const s:single);virtual;abstract;
46                         procedure SetColor(const red, green, blue, alpha: byte);overload;virtual;abstract;
47                         procedure SetClearColor(const red, green, blue, alpha: byte);overload;virtual;abstract;
48                         procedure SetColor(const color: TRGB);overload;virtual;abstract;
49                         procedure ClearScreen(stencil:boolean);virtual;abstract;
50                         procedure TranslateCoord2D(const tx,ty:single);virtual;abstract;
51                         procedure ScaleCoord2D(const sx,sy:single);virtual;abstract;
52                         procedure SetLineSmooth(const smoth:boolean);virtual;abstract;
53                         procedure SetPointSmooth(const smoth:boolean);virtual;abstract;
54                         procedure ClearStatesMachine;virtual;abstract;
55                         procedure SetFillStencilMode;virtual;abstract;
56                         procedure SetSelectedStencilMode;virtual;abstract;
57                         procedure SetDrawWithStencilMode;virtual;abstract;
58                         procedure DisableStencil;virtual;abstract;
59                         procedure SetZTest(Z:boolean);virtual;abstract;
60                         procedure WorkAreaResize(rect:trect);virtual;abstract;
61                         procedure SaveBuffers;virtual;abstract;
62                         procedure RestoreBuffers;virtual;abstract;
CreateScrbufnull63                         function CreateScrbuf:boolean; virtual;abstract;
64                         procedure delmyscrbuf; virtual;abstract;
65                         procedure SwapBuffers; virtual;abstract;
66                         procedure SetPenStyle(const style:TZGLPenStyle);virtual;abstract;
67                         procedure SetDrawMode(const mode:TZGLDrawMode);virtual;abstract;
68 
69 
70 
71                         procedure DrawLine2DInDCS(const x1,y1,x2,y2:integer);overload;virtual;abstract;
72                         procedure DrawLine2DInDCS(const x1,y1,x2,y2:single);overload;virtual;abstract;
73                         procedure DrawQuad2DInDCS(const x1,y1,x2,y2:single);virtual;abstract;
74                         procedure DrawClosedPolyLine2DInDCS(const coords:array of single);overload;virtual;abstract;
75                         procedure DrawLine3DInModelSpace(const p1,p2:gdbvertex;var matrixs:tmatrixs);virtual;abstract;
76                         procedure DrawPoint3DInModelSpace(const p:gdbvertex;var matrixs:tmatrixs);virtual;abstract;
77                         procedure DrawTriangle3DInModelSpace(const normal,p1,p2,p3:gdbvertex;var matrixs:tmatrixs);virtual;abstract;
78                         procedure DrawQuad3DInModelSpace(const normal,p1,p2,p3,p4:gdbvertex;var matrixs:tmatrixs);overload;virtual;abstract;
79                         procedure DrawQuad3DInModelSpace(const p1,p2,p3,p4:gdbvertex;var matrixs:tmatrixs);overload;virtual;abstract;
80                         procedure DrawAABB3DInModelSpace(const BoundingBox:TBoundingBox;var matrixs:tmatrixs);virtual;abstract;
81                         procedure DrawClosedContour3DInModelSpace(const pa:GDBPoint3dArray;var matrixs:tmatrixs);virtual;abstract;
82                         procedure SetOGLMatrix(const cam:GDBObjCamera;const w,h:integer);virtual;abstract;
83                         procedure PostRenderDraw;virtual;abstract;
84 
ProjectPoint3DInModelSpacenull85                         function ProjectPoint3DInModelSpace(const p:gdbvertex;var matrixs:tmatrixs):GDBvertex2D;virtual;abstract;
86 
87                         procedure pushMatrixAndSetTransform(Transform:DMatrix4D);overload;virtual;abstract;
88                         procedure pushMatrixAndSetTransform(Transform:DMatrix4F);overload;virtual;abstract;
89                         procedure popMatrix;virtual;abstract;
90                    end;
91 implementation
92 //uses log;
93 initialization
94 end.
95 
96