Index

Package: Geometry

Description

package GL.Geometry is
----------------------------------------------------------------------- GL.Geometry - GL geometry primitives Copyright (c) Rod Kay 2007 AUSTRALIA Permission granted to use this software, without any warranty, for any purpose, provided this copyright note remains attached and unmodified if sources are distributed further. -----------------------------------------------------------------------

Packages

vertex_pointers (new Pointers)

package vertex_pointers is new interfaces.C.Pointers (Positive_Vertex_Id, GL_Vertex, GL_Vertex_array, (others => GL.Double'Last));

Classes

Geometry_t (abstract)

type Geometry_t is abstract tagged
      record
         Bounds  : Bounds_record;
      end record;

Primitive operations:

indices_Count
primitive_Id
vertex_Count

Types

Plane

type Plane is array (0 .. 3) of aliased GL.Double;

References:

gl-geometry.ads:20:9 (declaration)
gl-frustums.ads:23:56 (reference)
gl-geometry.adb:25:44 (reference)
gl-geometry.ads:22:45 (reference)

Extent

type Extent is
      record
         Min, Max  : GL.Double;
      end record;

References:

gl-geometry.ads:27:9 (declaration)
gl-geometry.adb:41:25 (reference)
gl-geometry.adb:41:40 (reference)
gl-geometry.ads:32:25 (reference)
gl-geometry.ads:32:40 (reference)
gl-geometry.ads:36:22 (reference)
gl-geometry.ads:37:22 (reference)
gl-geometry.ads:38:22 (reference)

Axis_Aligned_Bounding_Box

type Axis_Aligned_Bounding_Box is
      record
         X_Extent  : Extent;    -- extents in object space
         Y_Extent  : Extent;
         Z_Extent  : Extent;
      end record;

References:

gl-geometry.ads:34:9 (declaration)
gl-geometry.adb:45:25 (reference)
gl-geometry.adb:45:59 (reference)
gl-geometry.ads:41:25 (reference)
gl-geometry.ads:41:59 (reference)
gl-geometry.ads:46:27 (reference)

Bounds_record

type Bounds_record is   -- tbd : better name . .. 'type Bounds' conflicts with 'Bounds' trait function. . .. sphere_box_Bounds ?
      record
         Sphere_Radius  : GL.Double;
         Box            : Axis_Aligned_Bounding_Box;
      end record;

vertex_Id

type   vertex_Id       is new GL.Uint;

References:

gl-geometry.ads:65:11 (declaration)
gl-geometry.adb:183:35 (reference)
gl-geometry.adb:218:85 (reference)
gl-geometry.adb:239:50 (reference)
gl-geometry.ads:66:41 (reference)
gl-geometry.ads:68:75 (reference)
gl-geometry.ads:79:34 (reference)
gl-geometry.ads:79:55 (reference)
gl-geometry.ads:122:68 (reference)
gl-skins.ads:62:66 (reference)
gl-skins.ads:82:75 (reference)

p_vertex_Id

type p_vertex_Id       is access all vertex_Id;

References:

gl-geometry.ads:66:9 (declaration)
gl-geometry.ads:71:60 (reference)
gl-geometry.ads:76:65 (reference)

vertex_Id_array

type   vertex_Id_array is array (GL.positive_uInt range <>) of aliased vertex_Id;

References:

gl-geometry.ads:68:11 (declaration)
gl-geometry.adb:57:40 (reference)
gl-geometry.adb:65:40 (reference)
gl-geometry.adb:105:71 (reference)
gl-geometry.adb:209:47 (reference)
gl-geometry.ads:69:41 (reference)
gl-geometry.ads:73:40 (reference)
gl-geometry.ads:74:40 (reference)
gl-geometry.ads:77:65 (reference)
gl-geometry.ads:101:71 (reference)
gl-geometry.ads:126:68 (reference)

p_vertex_Id_array

type p_vertex_Id_array is access all vertex_Id_array;

References:

gl-geometry.ads:69:9 (declaration)
gl-geometry.ads:77:82 (reference)

Positive_Vertex_Id

subtype Positive_Vertex_Id is vertex_Id range 1 .. vertex_Id'Last;

References:

gl-geometry.ads:79:12 (declaration)
gl-buffer-texture_coords.ads:7:89 (reference)
gl-geometry.ads:85:38 (reference)
gl-geometry.ads:88:58 (reference)
gl-geometry.ads:108:43 (reference)
gl-textures.ads:43:53 (reference)

GL_Vertex

subtype GL_Vertex       is GL.Double_Vector_3D;

References:

gl-geometry.ads:84:12 (declaration)
gl-geometry.adb:76:27 (reference)
gl-geometry.adb:114:26 (reference)
gl-geometry.ads:85:78 (reference)
gl-geometry.ads:88:78 (reference)
gl-geometry.ads:92:27 (reference)
gl-geometry.ads:94:28 (reference)
gl-textures.adb:52:39 (reference)
gl-textures.adb:72:39 (reference)

GL_Vertex_array

type    GL_Vertex_array is array (Positive_Vertex_Id range <>) of aliased GL_Vertex;
tbd : can GL.Double_vector_3D use '1'- based indexing ?

p_Vertex_array

type  p_Vertex_array is access all GL_Vertex_array;

References:

gl-geometry.ads:86:10 (declaration)
gl-geometry.ads:96:71 (reference)

p_Vertex

subtype p_Vertex is vertex_pointers.Pointer;

References:

gl-geometry.ads:89:12 (declaration)
gl-geometry.ads:91:70 (reference)

GL_Normal

subtype GL_Normal            is GL.Double_Vector_3D;

References:

gl-geometry.ads:106:12 (declaration)
gl-geometry.ads:107:83 (reference)
gl-geometry.ads:108:83 (reference)

GL_Normals

type    GL_Normals           is array (Positive           range <>) of aliased GL_Normal;

References:

gl-geometry.ads:107:12 (declaration)
gl-geometry.adb:213:47 (reference)
tbd : rename vertex_Normal_array

GL_Normals_Vertex_Id

type    GL_Normals_Vertex_Id is array (Positive_Vertex_Id range <>) of aliased GL_Normal;

References:

gl-geometry.ads:108:12 (declaration)
gl-geometry.adb:202:61 (reference)
gl-geometry.adb:210:47 (reference)
gl-geometry.ads:137:62 (reference)
gl-skins.ads:64:33 (reference)

p_Geometry

type p_Geometry is access all Geometry_t'Class;

References:

gl-geometry.ads:118:9 (declaration)
gl-geometry.adb:193:35 (reference)
gl-geometry.adb:195:81 (reference)
gl-geometry.ads:140:37 (reference)
gl-skinned_geometry.ads:18:34 (reference)

Constants & Global variables

null_Bounds (Bounds_record)

null_Bounds  : constant Bounds_record := (Sphere_Radius => 0.0,
                                             Box           => (X_Extent => (Min => GL.Double'Last,
                                                                            Max => GL.Double'First),
                                                               Y_Extent => (Min => GL.Double'Last,
                                                                            Max => GL.Double'First),
                                                               Z_Extent => (Min => GL.Double'Last,
                                                                            Max => GL.Double'First)));

References:

gl-geometry.ads:49:4 (declaration)
gl-geometry.adb:82:42 (reference)
gl-geometry.adb:108:42 (reference)

null_Vertex (GL_Vertex)

null_Vertex  : constant GL_Vertex := (GL.Double'Last, GL.Double'Last, GL.Double'Last);

References:

gl-geometry.ads:94:4 (declaration)

Subprograms & Entries

Normalise

procedure Normalise 
(the_Plane: in out Plane);

Calls:

Ada.Numerics.Generic_Elementary_Functions.Sqrt defined at a-ngelfu.ads:42:13

Max

function Max 
(L, R: Bounds_record) return Bounds_record;

References:

gl-geometry.ads:57:13 (declaration)
gl-geometry.adb:50:13 (body)

to_gl_Pointer

function to_gl_Pointer is new Ada.Unchecked_Conversion 
(p_vertex_Id, GL.pointer);

References:

gl-geometry.ads:71:13 (declaration)

Increment

procedure Increment 
(Self: in out vertex_Id_array);

References:

gl-geometry.ads:73:14 (declaration)
gl-geometry.adb:57:14 (body)
gl-geometry.adb:63:8 (label)

Decrement

procedure Decrement 
(Self: in out vertex_Id_array);

References:

gl-geometry.ads:74:14 (declaration)
gl-geometry.adb:65:14 (body)
gl-geometry.adb:71:8 (label)

to_void_Pointer

function  to_void_Pointer is new Ada.Unchecked_Conversion   
(p_vertex_Id, GL.pointer);

References:

gl-geometry.ads:76:14 (declaration)

free

procedure free            is new Ada.Unchecked_Deallocation 
(vertex_Id_array, p_vertex_Id_array);

References:

gl-geometry.ads:77:14 (declaration)

to_p_Vertex

function to_p_Vertex is new Ada.Unchecked_Conversion 
(GL.pointer, p_Vertex);

References:

gl-geometry.ads:91:13 (declaration)

Image

function Image 
(Self: GL_Vertex) return String;

References:

gl-geometry.ads:92:13 (declaration)
gl-geometry.adb:76:13 (body)
gl-geometry.adb:183:69 (call)

Called by:

Image defined at gl-geometry.ads:99:13

free

procedure free is new Ada.Unchecked_Deallocation 
(GL_Vertex_array, p_Vertex_array);

References:

gl-geometry.ads:96:14 (declaration)

Bounds

function Bounds 
(Self: GL_Vertex_array) return GL.Geometry.Bounds_record;

References:

gl-geometry.ads:98:13 (declaration)
gl-geometry.adb:79:13 (body)
gl-geometry.adb:103:8 (label)

Calls:

Ada.Numerics.Generic_Elementary_Functions.Sqrt defined at a-ngelfu.ads:42:13

Image

function Image  
(Self: GL_Vertex_array) return String;

References:

gl-geometry.ads:99:13 (declaration)
gl-geometry.adb:175:13 (body)
gl-geometry.adb:188:8 (label)

Calls:

Append defined at a-strunb.ads:111:14
Image defined at gl-geometry.ads:92:13
To_String defined at a-strunb.ads:100:13

Bounds

function Bounds 
(Given_Vertices: GL_Vertex_array;
Given_Indices: vertex_Id_array) return GL.Geometry.Bounds_record;

References:

gl-geometry.ads:101:13 (declaration)
gl-geometry.adb:105:13 (body)
gl-geometry.adb:133:8 (label)

Calls:

Ada.Numerics.Generic_Elementary_Functions.Sqrt defined at a-ngelfu.ads:42:13

primitive_Id (abstract)

function  primitive_Id   
(Self: Geometry_t) return GL.ObjectTypeEnm is abstract;

References:

gl-geometry.ads:120:14 (declaration)
gl-geometry.adb:140:12 (dispatching call)
gl-geometry.adb:205:12 (dispatching call)
globe_3d.adb:1131:16 (dispatching call)
globe_3d.adb:1131:59 (dispatching call)
globe_3d.adb:1135:23 (dispatching call)
globe_3d.adb:1135:64 (dispatching call)

Called by:

Face_Count defined at gl-geometry.ads:130:14
GLOBE_3D.render.< defined at globe_3d.adb:1125:20
GLOBE_3D.render.< defined at globe_3d.adb:1125:20
GLOBE_3D.render.< defined at globe_3d.adb:1125:20
GLOBE_3D.render.< defined at globe_3d.adb:1125:20
Vertex_Normals defined at gl-geometry.ads:137:14

vertex_Count (abstract)

function  vertex_Count   
(Self: Geometry_t) return GL.Geometry.vertex_Id is abstract;

References:

gl-geometry.ads:122:14 (declaration)
gl-skins.adb:106:56 (dispatching call)
gl-skins.adb:144:71 (dispatching call)

Called by:

Skins.New_Veneer defined at gl-skins.ads:101:25

Vertices (abstract)

function  Vertices       
(Self: Geometry_t) return GL.Geometry.GL_Vertex_array is abstract;

References:

gl-geometry.ads:123:14 (declaration)
gl-geometry.adb:208:74 (dispatching call)
gl-skins.adb:148:95 (dispatching call)

indices_Count (abstract)

function  indices_Count  
(Self: Geometry_t) return GL.positive_uInt is abstract;

References:

gl-geometry.ads:125:14 (declaration)
gl-geometry.adb:142:35 (dispatching call)
gl-geometry.adb:145:35 (dispatching call)
gl-geometry.adb:148:35 (dispatching call)
gl-geometry.adb:151:48 (dispatching call)
gl-geometry.adb:154:35 (dispatching call)
gl-geometry.adb:157:48 (dispatching call)
gl-geometry.adb:160:48 (dispatching call)
gl-geometry.adb:163:35 (dispatching call)
gl-geometry.adb:166:35 (dispatching call)

Indices (abstract)

function  Indices        
(Self: Geometry_t) return GL.Geometry.vertex_Id_array is abstract;

References:

gl-geometry.ads:126:14 (declaration)
gl-geometry.adb:209:71 (dispatching call)

Called by:

Vertex_Normals defined at gl-geometry.ads:137:14

Bounds (abstract)

function  Bounds         
(Self: Geometry_t) return GL.Geometry.Bounds_record is abstract;

References:

gl-geometry.ads:128:14 (declaration)

Face_Count

function  Face_Count     
(Self: Geometry_t'Class) return Natural;

References:

gl-geometry.ads:130:14 (declaration)
gl-geometry.adb:135:13 (body)
gl-geometry.adb:173:8 (label)
for point primitives, each point is considered a 'face'. for line primitives, each line is considered a 'face'.

Draw (abstract)

procedure Draw           
(Self: Geometry_t) is abstract;

References:

gl-geometry.ads:135:14 (declaration)
globe_3d.adb:1167:16 (dispatching call)
globe_3d.adb:1175:16 (dispatching call)
globe_3d.adb:1251:22 (dispatching call)

Vertex_Normals

function  Vertex_Normals 
(Self: Geometry_t'Class) return GL_Normals_Vertex_Id;

Calls:

Geometry.Vertex_Normals.vertex_Id_for defined at gl-geometry.adb:218:25
Indices defined at gl-geometry.ads:126:14
Math.* defined at gl-math.ads:14:13
Math.* defined at gl-math.ads:32:13
Math.+ defined at gl-math.ads:20:13
Math.- defined at gl-math.ads:26:13
Math.Almost_zero defined at gl-math.ads:102:12
Math.Norm defined at gl-math.ads:35:12
primitive_Id defined at gl-geometry.ads:120:14
Vertices defined at gl-geometry.ads:123:14

destroy (abstract)

procedure destroy 
(Self: in out Geometry_t) is abstract;

References:

gl-geometry.ads:139:14 (declaration)
gl-geometry.adb:198:7 (dispatching call)

Called by:

Free defined at gl-geometry.ads:140:14

Free

procedure Free    
(Self: in out p_Geometry);

Calls:

destroy defined at gl-geometry.ads:139:14
Geometry.Free.deallocate defined at gl-geometry.adb:195:17
Unchecked_Deallocation defined at a-uncdea.ads:20:15