'VISUALIB global declarations for Visual Basic

'Constants, types, and Macros

Type POINT2D
    x As Double
    y As Double
End Type

Type POINT2H
    x As Double
    y As Double
    w As Double
End Type

Type POINT3D
    x As Double
    y As Double
    z As Double
End Type

Type POINT3H
    x As Double
    y As Double
    z As Double
    w As Double
End Type

Type rect
    left As Integer
    top As Integer
    right As Integer
    bottom As Integer
End Type

Type Box2D
    xmin As Double
    xmax As Double
    ymin As Double
    ymax As Double
End Type

Type Box3D
    xmin As Double
    xmax As Double
    ymin As Double
    ymax As Double
    zmin As Double
    zmax As Double
End Type


'coordinate type
Global Const VL_2D = 4096   '0x1000
Global Const VL_3D = 8192   '0x2000
Global Const VL_2H = 1024   '0x0400
Global Const VL_3H = 2048   '0x0800

'viewer status flag
Global Const VL_TWOD = 8
Global Const VL_THREED = 16
Global Const VL_CURRENT = 256
Global Const VL_DEFAULT = &H1000
Global Const VL_DEFAULT2D = &H1100

'light coordinate mode
Global Const VL_WORLDLIGHT = 1
Global Const VL_CAMERALIGHT = 2
Global Const VL_OBJECTLIGHT = 4

'light type
Global Const VL_POINTLIGHT = 256     '0x0100
Global Const VL_DISTLIGHT = 512      '0x0200
Global Const VL_SPOTLIGHT = 1024     '0x0400
Global Const VL_AREALIGHT = 2048     '0x0800

'color type
Global Const VL_MATERIALAMBIENT = 1
Global Const VL_MATERIALDIFFUSE = 2
Global Const VL_MATERIALSPECULAR = 3
Global Const VL_MATERIALEMISSION = 4
Global Const VL_AMBIENTREFLECT = 5
Global Const VL_DIFFUSEREFLECT = 6
Global Const VL_SPECULARREFLECT = 7
Global Const VL_EMISSIONSTRENGTH = 8
Global Const VL_SHININESS = 9

Global Const VL_LIGHTCOLOR = 16           '0x0010
Global Const VL_AMBIENTCONTRIB = 32       '0x0020
Global Const VL_LIGHTLOCATION = 48        '0x0030
Global Const VL_LIGHTDIRECTION = 64       '0x0040
Global Const VL_LIGHTINTENSITY = 80       '0x0050
Global Const VL_SPOTLIGHTANGLE = 96       '0x0060
Global Const VL_SPOTLIGHTSPREAD = 112     '0x0070

Global Const VL_ATTENUATION = 256         '0x0100
Global Const VL_GLOBALAMBIENT = 512       '0x0200
Global Const VL_BACKGROUNDCOLOR = 768     '0x0300
Global Const VL_SHADINGMETHOD = 1024      '0x0400
Global Const VL_SHADINGMODEL = 1280       '0x0500
Global Const VL_LOCALVIEWER = 1536        '0x0600
Global Const VL_COUNTCLOCKWISE = 1792     '0x0700
Global Const VL_TWOSIDESHADE = 2048       '0x0800
Global Const VL_DEPTHBUFFER = 2304        '0x0900
Global Const VL_BACKFACEREMOVAL = 2560    '0x0A00
Global Const VL_PERTURBMATERIAL = 2816    '0x0B00
Global Const VL_PERTURBNORMAL = 3072      '0x0C00
Global Const VL_PERTURBPIXEL = 3328       '0x0D00
Global Const VL_PERTURBFACET = 3584       '0x0E00
Global Const VL_ENVIRONMENT = 3840        '0x0F00

Global Const VL_INQUIRE = -1

'projection mode
Global Const VL_PROJECTIONMODE = 3
Global Const VL_PERSPECTIVE = 1
Global Const VL_ORTHOGONAL = 2

'standard pen and brush color
Global Const VL_NONE = 0
Global Const VL_RED = 1
Global Const VL_GREEN = 2
Global Const VL_BLUE = 3
Global Const VL_BROWN = 4
Global Const VL_MAGENTA = 5
Global Const VL_CYAN = 6
Global Const VL_WHITE = 7
Global Const VL_GRAY = 8
Global Const VL_LIGHTRED = 9
Global Const VL_LIGHTGREEN = 10
Global Const VL_LIGHTBLUE = 11
Global Const VL_YELLOW = 12
Global Const VL_LIGHTMAGENTA = 13
Global Const VL_LIGHTCYAN = 14
Global Const VL_LIGHTGRAY = 15
Global Const VL_BLACK = 16

'shading method
Global Const VL_WIREFRAME = 1
Global Const VL_SOLIDFILL = 2
Global Const VL_CONTOURSHADE = 4
Global Const VL_GOURAUDSHADE = 8
Global Const VL_PHONGSHADE = 16
Global Const VL_FLATSHADE = 32

'shading model
Global Const VL_PHONGMODEL = 256        '      0x0100
Global Const VL_SPECULARMODEL = 512        '        0x0200

'mark type
Global Const VL_NULLMARK = 0
Global Const VL_CIRCLEMARK = 1
Global Const VL_CROSSMARK = 2
Global Const VL_XMARK = 4
Global Const VL_TRIANGLEMARK = 8
Global Const VL_BOXMARK = 16
Global Const VL_DIAMONDMARK = 32
Global Const VL_HEXAGONMARK = 64
Global Const VL_OCTAGONMARK = 128       '   0x0080

'arrow head type
Global Const VL_NULLARROW = 0
Global Const VL_OPENARROW = 256         '   0X0100
Global Const VL_CLOSEDARROW = 512           '0X0200

'position mark type
Global Const VL_CROSSHAIR = 1
Global Const VL_ORIGIN = 2

'solid texture flag
Global Const VL_MARBLE = 1
Global Const VL_WOODGRAIN = 2
Global Const VL_GRANITE = 4
Global Const VL_BUMPY = 8


'Function Prototypes


'Basic Functions

Declare Function InitializeVisualib Lib "visualib.dll" () As Integer
Declare Sub ExitVisualib Lib "visualib.dll" ()
Declare Sub AboutVisualib Lib "visualib.dll" ()
Declare Sub LicenseInfo Lib "visualib.dll" ()

'utility functions
'Declare Function MessageOn Lib "visualib.dll" (ByVal flag%) As Integer
'Declare Sub ErrorMessage Lib "visualib.dll" (ByVal msg$)
'Declare Sub Message Lib "visualib.dll" (ByVal msg$)
Declare Function SelectColor Lib "visualib.dll" (ByVal color&) As Long

Declare Sub SetPoint2D Lib "visualib.dll" (pt As POINT2D, ByVal x#, ByVal y#)
Declare Sub SetPoint3D Lib "visualib.dll" (pt As POINT3D, ByVal x#, ByVal y#, ByVal z#)
Declare Sub SetPoint2H Lib "visualib.dll" (pt As POINT2H, ByVal x#, ByVal y#, ByVal w#)
Declare Sub SetPoint3H Lib "visualib.dll" (pt As POINT3H, ByVal x#, ByVal y#, ByVal z#, ByVal w#)
Declare Sub SetBox2D Lib "visualib.dll" (box As Box2D, ByVal xmin#, ByVal xmax#, ByVal ymin#, ByVal ymax#)
Declare Sub SetBox3D Lib "visualib.dll" (box As Box3D, ByVal xmin#, ByVal xmax#, ByVal ymin#, ByVal ymax#, ByVal zmin#, ByVal zmax#)

Declare Sub PenColor Lib "visualib.dll" (ByVal hdc%, ByVal color_index%)
Declare Sub BrushColor Lib "visualib.dll" (ByVal hdc%, ByVal color_index%)
Declare Sub TextColor Lib "visualib.dll" (ByVal hdc%, ByVal tcolor%, ByVal bcolor%)
Declare Sub PaintColor Lib "visualib.dll" (ByVal hdc%, ByVal pen%, ByVal brush%, ByVal mode%)

'Declare Function CreateViewer Lib "visualib.dll" (ByVal vname$, ByVal bot%, ByVal r%, ByVal top%, ByVal l%, ByVal vtype%, ByVal mode%) As Long
Declare Function DeleteViewer Lib "visualib.dll" (ByVal vid&) As Integer
Declare Function NewViewer Lib "visualib.dll" (ByVal typ%) As Long
Declare Function CleanViewer Lib "visualib.dll" (ByVal hdc%, ByVal vid&) As Integer
Declare Sub FreeViewer Lib "visualib.dll" (ByVal vid&)
Declare Function ViewerBackgroundColor Lib "visualib.dll" (ByVal vid&, ByVal c&) As Long
Declare Function ViewerName Lib "visualib.dll" (ByVal hv&, ByVal nam$) As Long
'Declare Function ViewerFrame Lib "visualib.dll" (ByVal hv&, ByVal bot%, ByVal r%, ByVal top%, ByVal l%) As any

Declare Function ViewerMappingMode Lib "visualib.dll" (ByVal vid&, ByVal mode%) As Integer
Declare Function CopyViewer Lib "visualib.dll" (ByVal vid1&, ByVal vid2&) As Integer
Declare Function ResetViewer Lib "visualib.dll" (ByVal vid&) As Integer
Declare Function SelectViewer Lib "visualib.dll" (ByVal vid&) As Long
'Declare Function SetViewerName Lib "visualib.dll" (ByVal vid&, ByVal vname$) As Integer
'Declare Function GetViewerName Lib "visualib.dll" (ByVal vid&, ByVal vname$) As Integer
Declare Function SetViewerFrame Lib "visualib.dll" (ByVal vid&, port As rect) As Integer
Declare Function GetViewerFrame Lib "visualib.dll" (ByVal vid&, port As rect) As Integer

'Declare Function ClearViewer Lib "visualib.dll" (ByVal hdc%, ByVal vid&, ByVal color%) As Integer
Declare Function displayviewerframe Lib "visualib.dll" (ByVal hdc%, ByVal vid&) As Integer
Declare Function DisplayViewerName Lib "visualib.dll" (ByVal hdc%, ByVal vid&, ByVal top%) As Integer

Declare Function BeginDoubleBuffer Lib "visualib.dll" (hdc%) As Integer
Declare Function EndDoubleBuffer Lib "visualib.dll" (hdc%) As Integer
Declare Function UpdateDoubleBuffer Lib "visualib.dll" (ByVal hdc%) As Integer


'2D Functions

Declare Sub Translate2D Lib "visualib.dll" (ByVal x#, ByVal y#)
Declare Sub TranslateTo2D Lib "visualib.dll" (ByVal x#, ByVal y#)
Declare Sub Scale2D Lib "visualib.dll" (ByVal x#, ByVal y#)
Declare Sub PointScale2D Lib "visualib.dll" (ByVal x#, ByVal y#, ByVal sx#, ByVal sy#)
Declare Sub TranScale2D Lib "visualib.dll" (ByVal x#, ByVal y#, ByVal sx#, ByVal sy#)
Declare Sub Shear2D Lib "visualib.dll" (ByVal x#, ByVal y#, ByVal a#, ByVal u#, ByVal v#)
Declare Sub Stretch2D Lib "visualib.dll" (ByVal x#, ByVal y#, ByVal a#, ByVal f#)
Declare Sub Mirror2D Lib "visualib.dll" (ByVal x#, ByVal y#, ByVal a#)
Declare Sub Rotate2D Lib "visualib.dll" (ByVal angle#)
Declare Sub PointRotate2D Lib "visualib.dll" (ByVal x#, ByVal y#, ByVal a#)
 
Declare Function ViewerField2D Lib "visualib.dll" (ByVal vid&, l#, bottom#, r#, top#) As Integer

Declare Function Pushtransformation2d Lib "visualib.dll" (m As Any) As Integer
Declare Function PopTransformation2d Lib "visualib.dll" (m As Any) As Integer
Declare Sub ConcatTransformation2D Lib "visualib.dll" (m As Any, ByVal post%)
Declare Sub LoadTransformation2D Lib "visualib.dll" (m As Any)

Declare Function SetProjection2D Lib "visualib.dll" (ByVal vid&, ByVal l#, ByVal bottom#, ByVal r#, ByVal top#) As Integer
Declare Function SetView2D Lib "visualib.dll" (ByVal vid&, ByVal x#, ByVal y#, ByVal a#) As Integer
Declare Function SetWindow2D Lib "visualib.dll" (ByVal vid&, ByVal l#, ByVal b#, ByVal r#, ByVal t#) As Integer

Declare Function MoveViewer2D Lib "visualib.dll" (ByVal vid&, ByVal h#, ByVal v#, ByVal localv%) As Integer
Declare Function RotateViewer2D Lib "visualib.dll" (ByVal vid&, ByVal a#, ByVal localv%) As Integer
Declare Function ZoomViewer2D Lib "visualib.dll" (ByVal vid&, ByVal z#) As Integer

Declare Sub MoveTo2D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#)
Declare Sub RMoveTo2D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#)
Declare Sub LineTo2D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#)
Declare Sub RLineTo2D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#)
Declare Sub Line2D Lib "visualib.dll" (ByVal hdc%, ByVal x1#, ByVal y1#, ByVal x2#, ByVal y2#)
Declare Sub RLine2D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal dx#, ByVal dy#)
Declare Sub Label2D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal label$)
Declare Sub MoveTo2H Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal w#)
Declare Sub LineTo2H Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal w#)
Declare Sub Line2H Lib "visualib.dll" (ByVal hdc%, ByVal x1#, ByVal y1#, ByVal w1#, ByVal x2#, ByVal y2#, ByVal w2#)

Declare Sub Polygon2D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, vertex As Any, ByVal count%)
Declare Sub PolyPolygon2D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, vertex As Any, polycount As Any, ByVal count%)
Declare Sub Polyline2D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, pts As Any, ByVal count%)
Declare Sub ClosedPolyline2D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, pts As Any, ByVal count%)
Declare Sub Mark2D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal hsize%, ByVal vsize%, ByVal head%)
Declare Sub PolyMark2D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, pts As Any, ByVal n%, ByVal hsize%, ByVal vsize%, ByVal head%)
Declare Sub Pointer2D Lib "visualib.dll" (ByVal hdc%, ByVal x1#, ByVal y1#, ByVal x2#, ByVal y2#, ByVal l#, ByVal w#, ByVal typ%)
Declare Sub Arrow2D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal u#, ByVal v#, ByVal r#, ByVal l#, ByVal w#, ByVal typ%)
Declare Sub Net2D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, pts As Any, ByVal m%, ByVal n%)
Declare Sub MarkPosition2D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal size#, ByVal typ%)


'       3D Functions

Declare Function ProjectionMode Lib "visualib.dll" (ByVal vid&, ByVal mode&) As Integer

Declare Sub Translate3D Lib "visualib.dll" (ByVal x#, ByVal y#, ByVal z#)
Declare Sub TranslateTo3D Lib "visualib.dll" (ByVal x#, ByVal y#, ByVal z#)
Declare Sub Scale3D Lib "visualib.dll" (ByVal sx#, ByVal sy#, ByVal sz#)
Declare Sub PointScale3D Lib "visualib.dll" (ByVal x#, ByVal y#, ByVal z#, ByVal sx#, ByVal sy#, ByVal sz#)
Declare Sub Rotate3D Lib "visualib.dll" (ByVal a#, ByVal axis%)
Declare Sub AxleRotate3D Lib "visualib.dll" (ref As Any, dire As Any, ByVal a#)
Declare Sub Stretch3D Lib "visualib.dll" (ref As Any, dire As Any, ByVal f#)
Declare Sub Shear3D Lib "visualib.dll" (ref As Any, dire As Any, ByVal u#, ByVal v#)
Declare Sub Mirror3D Lib "visualib.dll" (ref As Any, dire As Any)

Declare Function PushTransformation3D Lib "visualib.dll" (m As Any) As Integer
Declare Function PopTransformation3D Lib "visualib.dll" (m As Any) As Integer
Declare Sub ConcatTransformation3D Lib "visualib.dll" (m As Any, ByVal post%)
Declare Sub LoadTransformation3D Lib "visualib.dll" (m As Any)

Declare Function ResetProjection3D Lib "visualib.dll" (ByVal vid&) As Integer
Declare Function SetProjection3D Lib "visualib.dll" (ByVal vid&, ByVal l#, ByVal b#, ByVal r#, ByVal t#, ByVal f%, ByVal b#, ByVal mode%) As Integer
Declare Function SetPerspective Lib "visualib.dll" (ByVal vid&, ByVal fovy#, ByVal asp#, ByVal zmin#, ByVal zmax#) As Integer
Declare Function SetView3D Lib "visualib.dll" (ByVal vid&, ByVal ex#, ByVal ey#, ByVal ez#, ByVal ax#, ByVal ay#, ByVal az#, ByVal twist#) As Integer
Declare Function SetPolarView Lib "visualib.dll" (ByVal vid&, ByVal ax#, ByVal ay#, ByVal az#, ByVal dist#, ByVal azim#, ByVal inc#, ByVal twist#) As Integer

Declare Function ViewerLocation Lib "visualib.dll" (ByVal vid&, x#, y#, z#) As Integer
Declare Function ViewerDirection Lib "visualib.dll" (ByVal vid&, x#, y#, z#) As Integer
Declare Function ViewerField3D Lib "visualib.dll" (ByVal vid&, l#, b#, r#, t#, f#, b#) As Integer

Declare Function MoveViewer3D Lib "visualib.dll" (ByVal vid&, ByVal h#, ByVal v#, ByVal b#, ByVal localv%) As Integer
Declare Function RotateViewer3D Lib "visualib.dll" (ByVal vid&, ByVal a#, ByVal axis%, ByVal localv%) As Integer
Declare Function ZoomViewer3D Lib "visualib.dll" (ByVal vid&, ByVal z#) As Integer

Declare Sub MoveTo3D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal z#)
Declare Sub LineTo3D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal z#)
Declare Sub RMoveTo3D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal z#)
Declare Sub RLineTo3D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal z#)
Declare Sub MoveTo3H Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal z#, ByVal w#)
Declare Sub LineTo3H Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal z#, ByVal w#)

Declare Sub Line3D Lib "visualib.dll" (ByVal hdc%, ByVal x1#, ByVal y1#, ByVal z1#, ByVal x2#, ByVal y2#, ByVal z2#)
Declare Sub RLine3D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal z#, ByVal dx#, ByVal dy#, ByVal dz#)

Declare Sub PolyArrow3D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any, dire As Any, ByVal n%, ByVal r#, ByVal l#, ByVal w#, ByVal htype%)
Declare Sub Label3D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal z#, ByVal label$)
Declare Function Mark3D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal z#, ByVal hsize%, ByVal vsize%, ByVal typ%) As Integer
Declare Sub PolyMark3D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, pts As Any, ByVal n%, ByVal hsize%, ByVal vsize%, ByVal htype%)

Declare Sub Polygon3D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, vertex As Any, ByVal count%)
Declare Sub PolyPolygon3D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, vertex As Any, polycount As Any, ByVal count%)
Declare Sub Polyline3D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, pts As Any, ByVal count%)
Declare Sub ClosedPolyline3D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, pts As Any, ByVal count%)
Declare Sub MarkPosition3D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal z#, ByVal size#, ByVal typ%)
Declare Sub Pointer3D Lib "visualib.dll" (ByVal hdc%, ByVal x1#, ByVal y1#, ByVal z1#, ByVal x2#, ByVal y2#, ByVal z2#, ByVal l#, ByVal w#, ByVal typ%)
Declare Sub Arrow3D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal z#, ByVal u#, ByVal v#, ByVal w#, ByVal r#, ByVal l#, ByVal t#, ByVal typ%)
Declare Sub Net3D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, pts As Any, ByVal m%, ByVal n%)


'Shading Functions

Declare Sub ResetShader Lib "visualib.dll" ()

'depth buffer functions
Declare Function SetDepthBuffer Lib "visualib.dll" (ByVal hview&) As Integer
Declare Function SelectDepthBuffer Lib "visualib.dll" (ByVal hview&) As Integer
Declare Function FreeDepthBuffer Lib "visualib.dll" (ByVal hview&) As Integer
Declare Sub ClearDepthBuffer Lib "visualib.dll" (ByVal v%)

' light functions
Declare Function CopyLight Lib "visualib.dll" (ByVal lid1&, ByVal lid2&) As Integer
Declare Function ResetLight Lib "visualib.dll" (ByVal lid&) As Integer
'Declare Function CreateLight Lib "visualib.dll" (ByVal lname$, ByVal typ%) As Long
Declare Function DeleteLight Lib "visualib.dll" (ByVal lid&) As Integer
Declare Function SelectLight Lib "visualib.dll" (ByVal lid&) As Long

'Declare Function CopyLModel Lib "visualib.dll" (ByVal lmid1%, ByVal lmid2%) As Integer
'Declare Function CreateLModel Lib "visualib.dll" (ByVal lmname$) As Integer
'Declare Sub DeleteLModel Lib "visualib.dll" (ByVal lmid%)
'Declare Function SelectLModel Lib "visualib.dll" (ByVal lmid%) As Integer

Declare Function LightType Lib "visualib.dll" (ByVal lid&) As Integer
Declare Function SwitchLight Lib "visualib.dll" (ByVal lid&, ByVal status&) As Integer
Declare Function SetLightLocation Lib "visualib.dll" (ByVal lid&, ByVal x#, ByVal y#, ByVal z#) As Integer
Declare Function GetLightLocation Lib "visualib.dll" (ByVal lid&, x#, y#, z#) As Integer
Declare Function SetLightDirection Lib "visualib.dll" (ByVal lid&, ByVal x#, ByVal y#, ByVal z#) As Integer
Declare Function GetLightDirection Lib "visualib.dll" (ByVal lid&, x#, y#, z#) As Integer
Declare Function SetSpotlightSpread Lib "visualib.dll" (ByVal lid&, ByVal angle%, ByVal spread%) As Integer
Declare Function GetSpotlightSpread Lib "visualib.dll" (ByVal lid&, angle%, spread%) As Integer

'material functions
'Declare Function CreateMaterial Lib "visualib.dll" (ByVal mname$) As Long
Declare Sub DeleteMaterial Lib "visualib.dll" (ByVal maid&)
Declare Function SelectMaterial Lib "visualib.dll" (ByVal maid&) As Long
Declare Function CopyMaterial Lib "visualib.dll" (ByVal mid1&, ByVal mid2&) As Integer
Declare Function ResetMaterial Lib "visualib.dll" (ByVal maid&) As Integer

Declare Function AmbientColor Lib "visualib.dll" (ByVal color&) As Long
Declare Function LightColor Lib "visualib.dll" (ByVal hl&, ByVal color&) As Long
Declare Function MaterialSpecular Lib "visualib.dll" (ByVal hm&, ByVal color&) As Long
Declare Function MaterialAmbient Lib "visualib.dll" (ByVal hm&, ByVal color&) As Long
Declare Function MaterialDiffuse Lib "visualib.dll" (ByVal hm&, ByVal color&) As Long
Declare Function MaterialEmission Lib "visualib.dll" (ByVal hm&, ByVal color&) As Long
Declare Function MaterialShininess Lib "visualib.dll" (ByVal hm&, ByVal sh&) As Integer
Declare Function LightIntensity Lib "visualib.dll" (ByVal hl&, ByVal intens&) As Integer
Declare Function NewLight Lib "visualib.dll" (ByVal typ%) As Long
Declare Function NewMaterial Lib "visualib.dll" () As Long
Declare Function LightCoordinateType Lib "visualib.dll" (ByVal lid&, ByVal typ&) As Integer
Declare Function LightName Lib "visualib.dll" (ByVal lid&) As String
Declare Function MaterialName Lib "visualib.dll" (ByVal hm&) As String


' shading parameter functions
'Declare Function ShadingOption Lib "visualib.dll" (ByVal id%, ByVal opt%, ByVal status&) As Integer

'Declare Function ShadingColor Lib "visualib.dll" Alias "_ShadingColor" (ByVal id%, ByVal typ%, ByVal colo&) As Long

'Declare Function ShadingFactor Lib "visualib.dll" (ByVal id%, ByVal typ%, ByVal f#) As Integer
'Declare Function ShadingParameter Lib "visualib.dll" (ByVal id%, ByVal typ%, ByVal inquire%, param As Any) As Integer

Declare Sub SetAttenuation Lib "visualib.dll" (ByVal k0#, ByVal k1#, ByVal k2#)
Declare Function LocalViewer Lib "visualib.dll" (ByVal status&) As Integer
Declare Function DepthBuffer Lib "visualib.dll" (ByVal status&) As Integer
Declare Function TwoSideShading Lib "visualib.dll" (ByVal status&) As Integer
Declare Function BackFaceRemoval Lib "visualib.dll" (ByVal status&) As Integer
Declare Function PolygonDirection Lib "visualib.dll" (ByVal status&) As Integer
Declare Function ShadingMethod Lib "visualib.dll" (ByVal status&) As Integer
Declare Function ShadingModel Lib "visualib.dll" (ByVal status&) As Integer

Declare Function SetRGBPalette Lib "visualib.dll" () As Integer

'shading primitive functions
Declare Function ShadeFacet Lib "visualib.dll" Alias "_ShadeFacet" (ByVal hdc%, normal As Any, ByVal typ%, vertex As Any, ByVal count%, param As Any) As Integer

Declare Function ShadePolygon Lib "visualib.dll" Alias "_ShadePolygon" (ByVal hdc%, normal As Any, ByVal typ%, pts As Any, ByVal count%) As Integer

Declare Function ShadePolyPolygon Lib "visualib.dll" Alias "_ShadePolyPolygon" (ByVal hdc%, normal As Any, ByVal typ%, vertex As Any, pcount As Any, ByVal count%) As Integer

Declare Function ShadePolyFacet Lib "visualib.dll" (ByVal hdc%, polyfacet As Any) As Integer
Declare Function ShadingPreview Lib "visualib.dll" (ByVal hdc%, rect As Any, ByVal r#, ByVal d#) As Integer

' programmable shader functions
Declare Sub GetPixelPosition Lib "visualib.dll" (x%, y%)
Declare Sub GetPixelViewNormal Lib "visualib.dll" (normal As Any)
Declare Sub GetPixelWorldNormal Lib "visualib.dll" (normal As Any)
Declare Sub GetPixelObjectNormal Lib "visualib.dll" (normal As Any)
Declare Sub GetPixelViewCoordinate Lib "visualib.dll" (coord As Any)
Declare Sub GetPixelWorldCoordinate Lib "visualib.dll" (coord As Any)
Declare Sub GetPixelObjectCoordinate Lib "visualib.dll" (coord As Any)
Declare Sub GetPixelViewCameraAxis Lib "visualib.dll" (vaxis As Any)
Declare Sub GetPixelWorldCameraAxis Lib "visualib.dll" (vaxis As Any)
Declare Sub GetPixelObjectCameraAxis Lib "visualib.dll" (vaxis As Any)

Declare Function SolidTexture Lib "visualib.dll" (ByVal typ%) As Integer



'Image Mapping and Printing Functions


Global Const VL_FLUSHTOP = 1
Global Const VL_FLUSHBOTTOM = 2
Global Const VL_FLUSHLEFT = 4
Global Const VL_FLUSHRIGHT = 8

Global Const VL_HORZFIT = &H10
Global Const VL_VERTFIT = &H20
Global Const VL_ALLFIT = &H30
Global Const VL_HORZCENTER = &H40
Global Const VL_VERTCENTER = &H80

Global Const VL_HORZSCALED = &H100
Global Const VL_VERTSCALED = &H200
Global Const VL_BESTFIT = &H400
Global Const VL_USE31APIS = &H800

Global Const VL_MILLIMETER = &H1000
Global Const VL_CENTIMETER = &H2000
Global Const VL_MARKCORNER = &H4000
Global Const VL_MARKPAGE = &H8000

Declare Function ReadDIBFile Lib "visualib.dll" (ByVal fname$, hdib As Any) As Integer
Declare Function ScreenToDIB Lib "visualib.dll" (rect As Any) As Integer
Declare Function WriteDIBFile Lib "visualib.dll" (ByVal fname$, ByVal hdib%) As Integer
Declare Function SetPrintRect Lib "visualib.dll" (ByVal hdc%, rect As Any, ByVal mode%, ByVal x#, ByVal y#, ByVal w#, ByVal h#, ByVal bw%, ByVal bh%) As Integer
Declare Sub GetScreenRect Lib "visualib.dll" (ByVal hwnd%, ByVal withframe%, rect As Any)
Declare Function PrintImage Lib "visualib.dll" (ByVal hdib%, ByVal mode%, ByVal x#, ByVal y#, ByVal w#, ByVal h#) As Integer
Declare Function PrintDrawing Lib "visualib.dll" (draw As Any, ByVal mode%, ByVal x#, ByVal y#, ByVal w#, ByVal h#) As Integer
Declare Function ImageMap2D Lib "visualib.dll" (ByVal hdc%, ByVal hdib%, ByVal typ%, vertex As Any) As Integer
Declare Function ImageMap3D Lib "visualib.dll" (ByVal hdc%, ByVal hdib%, ByVal typ%, vertex As Any) As Integer


' text parameters
Global Const VL_TEXT_HEIGHT = 1
Global Const VL_TEXT_ASPECT = 2
Global Const VL_TEXT_THICKNESS = 4

Declare Function TextParameter Lib "visualib.dll" (ByVal typ%, ByVal param#) As Integer
Declare Function SelectFont Lib "visualib.dll" () As Integer
Declare Function setfont Lib "visualib.dll" (lplf As Any) As Integer
Declare Function Text2D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal a#, ByVal text$) As Integer
Declare Function Text3D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal a#, ByVal text$) As Integer
Declare Function SolidText Lib "visualib.dll" (ByVal hdc%, ByVal text$) As Integer


' 2D Curve Functions

Declare Sub QBezierCurve2D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any)
Declare Sub QBSplineCurve2D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any, ByVal n%)
Declare Sub QNURBSCurve2D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any, ByVal n%, knot As Any)

Declare Sub BezierCurve2D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any)
Declare Sub HermitCurve2D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any)
Declare Sub BSplineCurve2D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any, ByVal n%)
Declare Sub NURBSCurve2D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any, ByVal n%, knot As Any)
Declare Sub SplineInterp2D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any, ByVal n%)

Declare Sub BSplineCurveClosed2D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any, ByVal n%)
Declare Sub NURBSCurveClosed2D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any, ByVal n%, knot As Any)

Declare Sub CatmullRomSpline2D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any, ByVal n%)



'3D Curve Functions

Declare Sub QBezierCurve3D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any)
Declare Sub QBSplineCurve3D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any, ByVal n%)
Declare Sub QNURBSCurve3D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any, ByVal n%, knot As Any)
Declare Sub BezierCurve3D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any)
Declare Sub HermitCurve3D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any)
Declare Sub BSplineCurve3D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any, ByVal n%)
Declare Sub NURBSCurve3D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any, ByVal n%, knot As Any)
Declare Sub SplineInterp3D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any, ByVal n%)
Declare Sub BSplineCurveClosed3D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any, ByVal n%)
Declare Sub NURBSCurveClosed3D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any, ByVal n%, knot As Any)
Declare Sub CatmullRomSpline3D Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any, ByVal n%)
Declare Sub Spring Lib "visualib.dll" (ByVal hdc%, ByVal n%, ByVal r#, ByVal h#)


Declare Function CircleSide Lib "visualib.dll" (ByVal side%) As Integer
Declare Sub TransfVertex Lib "visualib.dll" (ByVal typ%, ByVal x#, ByVal y#, ByVal a#, ByVal sx#, ByVal sy#, vertex As Any, ByVal n%)
Declare Function RectangleVertex Lib "visualib.dll" (ByVal typ%, ByVal x1#, ByVal y1#, ByVal x2#, ByVal y2#, vertex As Any) As Integer
Declare Function BoxVertex Lib "visualib.dll" (ByVal typ%, ByVal x#, ByVal y#, ByVal t#, ByVal sx#, ByVal sy#, vertex As Any) As Integer
Declare Function NgonVertex Lib "visualib.dll" (ByVal typ%, ByVal x#, ByVal y#, ByVal t#, ByVal rx#, ByVal ry#, ByVal n%, vertex As Any) As Integer
Declare Function FlowerVertex Lib "visualib.dll" (ByVal typ%, ByVal x#, ByVal y#, ByVal t#, ByVal rx#, ByVal ry#, ByVal n%, ByVal r#, vertex As Any) As Integer
Declare Function StarVertex Lib "visualib.dll" (ByVal typ%, ByVal x#, ByVal y#, ByVal t#, ByVal rx#, ByVal ry#, ByVal n%, vertex As Any) As Integer
Declare Function ArcVertex Lib "visualib.dll" (ByVal typ%, ByVal x#, ByVal y#, ByVal t#, ByVal rx#, ByVal ry#, ByVal n%, ByVal a#, ByVal b#, vertex As Any) As Integer
Declare Function PieVertex Lib "visualib.dll" (ByVal typ%, ByVal x#, ByVal y#, ByVal t#, ByVal rx#, ByVal ry#, ByVal n%, ByVal a#, ByVal b#, vertex As Any) As Integer
Declare Function RingVertex Lib "visualib.dll" (ByVal typ%, ByVal x#, ByVal y#, ByVal t#, ByVal rx#, ByVal ry#, ByVal n%, ByVal a#, ByVal b#, ByVal w#, vertex As Any) As Integer
Declare Function RoseVertex Lib "visualib.dll" (ByVal typ%, ByVal x#, ByVal y#, ByVal a#, ByVal r#, ByVal m%, ByVal n%, vertex As Any) As Integer


'                               2D Primitive Functions

Declare Sub Rectangle2D Lib "visualib.dll" (ByVal hdc%, ByVal x1#, ByVal y1#, ByVal x2#, ByVal y2#)
Declare Sub Box2D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal t#, ByVal w#, ByVal h#)
Declare Sub Disk2D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal t#, ByVal rx#, ByVal ry#)
Declare Sub Pie2D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal t#, ByVal rx#, ByVal ry#, ByVal a#, ByVal b#)
Declare Sub Ring2D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal t#, ByVal rx#, ByVal ry#, ByVal a#, ByVal b#, ByVal w#)
Declare Sub Chord2D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal t#, ByVal rx#, ByVal ry#, ByVal a#, ByVal b#)
Declare Sub Ngon2D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal t#, ByVal rx#, ByVal ry#, ByVal n%)
Declare Sub Flower2D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal t#, ByVal rx#, ByVal ry#, ByVal n%, ByVal ratio#)
Declare Sub Star2D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal t#, ByVal rx#, ByVal ry#, ByVal n%)
Declare Sub Arc2D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal t#, ByVal rx#, ByVal ry#, ByVal a#, ByVal b#)
Declare Sub Rose2D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal t#, ByVal r#, ByVal m%, ByVal n%)

Declare Sub Spiral2D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal a#, ByVal b#, ByVal r#, ByVal dr#)


'                               3D Primitive Functions

Declare Sub Rectangle3D Lib "visualib.dll" (ByVal hdc%, ByVal x1#, ByVal y1#, ByVal x2#, ByVal y2#)
Declare Sub Box3D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal t#, ByVal sx#, ByVal sy#)
Declare Sub Ring3D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal t#, ByVal rx#, ByVal ry#, ByVal a#, ByVal b#, ByVal w#)
Declare Sub Disk3D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal t#, ByVal rx#, ByVal ry#)
Declare Sub Pie3D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal t#, ByVal rx#, ByVal ry#, ByVal a#, ByVal b#)
Declare Sub Chord3D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal t#, ByVal rx#, ByVal ry#, ByVal a#, ByVal b#)
Declare Sub Ngon3D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal t#, ByVal rx#, ByVal ry#, ByVal n%)
Declare Sub Flower3D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal t#, ByVal rx#, ByVal ry#, ByVal n%, ByVal r#)
Declare Sub Star3D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal t#, ByVal rx#, ByVal ry#, ByVal n%)

Declare Sub Arc3D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal t#, ByVal rx#, ByVal ry#, ByVal a#, ByVal b#)
Declare Sub Rose3D Lib "visualib.dll" (ByVal hdc%, ByVal x#, ByVal y#, ByVal t#, ByVal r#, ByVal m, ByVal n%)

Declare Sub Spiral3D Lib "visualib.dll" (ByVal hdc%, ByVal a#, ByVal b#, ByVal r#, ByVal dr#, ByVal h#)
Declare Sub Spring3D Lib "visualib.dll" (ByVal hdc%, ByVal a#, ByVal b#, ByVal r#, ByVal h#)



'                               3D Surface Functions

Declare Function BezierSurface Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any, ByVal ns%, ByVal nt%) As Integer
Declare Function HermitSurface Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any, ByVal ns%, ByVal nt%) As Integer
Declare Function BSplineSurface Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any, ByVal Sc%, ByVal Tc%, ByVal ns%, ByVal nt%) As Integer
Declare Function NURBSSurface Lib "visualib.dll" (ByVal hdc%, ByVal typ%, poly As Any, ByVal Sc%, ByVal Tc%, Skn As Any, Tkn As Any, ByVal ns%, ByVal nt%) As Integer

Declare Function CoonsPatch Lib "visualib.dll" (ByVal hdc%, ByVal typ%, pts As Any, ByVal nu%, ByVal nv%) As Integer


' Solid Primitive Functions

Declare Function Cube Lib "visualib.dll" (ByVal hdc%, ByVal w#, ByVal l#, ByVal h#) As Integer
Declare Function Cylinder Lib "visualib.dll" (ByVal hdc%, ByVal rx#, ByVal ry#, ByVal h#) As Integer
Declare Function Cone Lib "visualib.dll" (ByVal hdc%, ByVal rx#, ByVal ry#, ByVal h#) As Integer
Declare Function Ellipsoid Lib "visualib.dll" (ByVal hdc%, ByVal a#, ByVal b#, ByVal c#) As Integer
Declare Function Sphere Lib "visualib.dll" (ByVal hdc%, ByVal r#) As Integer
Declare Function HemiSphere Lib "visualib.dll" (ByVal hdc%, ByVal r#, ByVal h#) As Integer
Declare Function SolidStar Lib "visualib.dll" (ByVal hdc%, ByVal n%, ByVal rx#, ByVal ry#, ByVal h#) As Integer
Declare Function SolidFlower Lib "visualib.dll" (ByVal hdc%, ByVal n%, ByVal r#, ByVal rx#, ByVal ry#, ByVal h#) As Integer
Declare Function SolidPie Lib "visualib.dll" (ByVal hdc%, ByVal rx#, ByVal ry#, ByVal h#, ByVal a#, ByVal b#) As Integer
Declare Function Frustum Lib "visualib.dll" (ByVal hdc%, ByVal bw#, ByVal bl#, ByVal tw#, ByVal tl#, ByVal h#) As Integer
Declare Function Ridge Lib "visualib.dll" (ByVal hdc%, ByVal w#, ByVal l#, ByVal h#, ByVal r#) As Integer
Declare Function Prism Lib "visualib.dll" (ByVal hdc%, ByVal typ%, basev As Any, ByVal n%, ByVal h#) As Integer
Declare Function Pyramid Lib "visualib.dll" (ByVal hdc%, basev As Any, ByVal n%, tip As Any) As Integer
Declare Function WedgedCone Lib "visualib.dll" (ByVal hdc%, ByVal rx#, ByVal ry#, ByVal h#, ByVal a#, ByVal b#) As Integer
Declare Function WedgedCylinder Lib "visualib.dll" (ByVal hdc%, ByVal rx#, ByVal ry#, ByVal h#, ByVal tr#, ByVal a#, ByVal b#) As Integer
Declare Function WedgedSphere Lib "visualib.dll" (ByVal hdc%, ByVal rx#, ByVal ry#, ByVal rz#, ByVal a1#, ByVal a2#, ByVal b1#, ByVal b2#) As Integer
Declare Function WedgedTorus Lib "visualib.dll" (ByVal hdc%, ByVal r1#, ByVal r2#, ByVal a1#, ByVal a2#, ByVal b1#, ByVal b2#) As Integer

Declare Function Torus Lib "visualib.dll" (ByVal hdc%, ByVal r1#, ByVal r2#) As Integer

Declare Function SolidRing Lib "visualib.dll" (ByVal hdc%, ByVal rtop#, ByVal rbot#, ByVal t#, ByVal h#, ByVal a#, ByVal b#, ByVal ratio#) As Integer
Declare Function Tube Lib "visualib.dll" (ByVal hdc%, ByVal rtop#, ByVal rbot#, ByVal t#, ByVal h#) As Integer
Declare Function Sweep Lib "visualib.dll" (ByVal hdc%, transf As Any, ByVal nstep%, vertex As Any, normals As Any, ByVal npts%, ByVal mode%, snormal As Any) As Integer
Declare Function Revolution Lib "visualib.dll" (ByVal hdc%, vertex As Any, normal As Any, ByVal n%, ByVal a#, ByVal mode%, snormal As Any) As Integer
Declare Function Tetrahedron Lib "visualib.dll" (ByVal hdc%, ByVal r#) As Integer
Declare Function Octahedron Lib "visualib.dll" (ByVal hdc%, ByVal r#) As Integer
Declare Function Dodecahedron Lib "visualib.dll" (ByVal hdc%, ByVal r#) As Integer
Declare Function Icosahedron Lib "visualib.dll" (ByVal hdc%, ByVal r#) As Integer

