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