Add initial prototype.
This commit is contained in:
108
2-low/collada/source/collada-library-geometries.ads
Normal file
108
2-low/collada/source/collada-library-geometries.ads
Normal file
@@ -0,0 +1,108 @@
|
||||
package collada.Library.geometries
|
||||
--
|
||||
-- Models a collada 'geometries' library, which is a collection of geometries.
|
||||
--
|
||||
is
|
||||
type Inputs_view is access library.Inputs;
|
||||
|
||||
type Int_array_view is access Int_array;
|
||||
type Int_array_List is array (Positive range <>) of Int_array_view;
|
||||
type Int_array_List_view is access int_array_List;
|
||||
|
||||
|
||||
|
||||
------------
|
||||
--- Vertices
|
||||
--
|
||||
|
||||
type Vertices is
|
||||
record
|
||||
Id : Text;
|
||||
Inputs : Inputs_view;
|
||||
end record;
|
||||
|
||||
|
||||
--------------
|
||||
--- Primitives
|
||||
--
|
||||
|
||||
type primitive_Kind is (Unknown,
|
||||
Lines, line_Strips,
|
||||
Polygons, polyList,
|
||||
Triangles, triFans, triStrips);
|
||||
|
||||
type Primitive (Kind : primitive_Kind := Unknown) is
|
||||
record
|
||||
Count : Natural;
|
||||
Material : Text;
|
||||
|
||||
Inputs : Inputs_view;
|
||||
P_List : int_array_List_view;
|
||||
|
||||
case Kind is
|
||||
when polyList =>
|
||||
vCount : Int_array_view;
|
||||
|
||||
when others =>
|
||||
null;
|
||||
end case;
|
||||
end record;
|
||||
|
||||
type Primitives is array (Positive range <>) of Primitive;
|
||||
type Primitives_view is access Primitives;
|
||||
|
||||
function vertex_Offset_of (Self : in Primitive) return math.Index;
|
||||
function normal_Offset_of (Self : in Primitive) return math.Index;
|
||||
function coord_Offset_of (Self : in Primitive) return math.Index;
|
||||
|
||||
no_coord_Offset : exception;
|
||||
|
||||
|
||||
--------
|
||||
--- Mesh
|
||||
--
|
||||
|
||||
type Mesh is
|
||||
record
|
||||
Sources : library.Sources_view;
|
||||
Vertices : geometries.Vertices;
|
||||
Primitives : geometries.Primitives_view;
|
||||
end record;
|
||||
|
||||
function Source_of (Self : in Mesh;
|
||||
source_Name : in String) return Source;
|
||||
|
||||
function Positions_of (Self : in Mesh) return access float_Array;
|
||||
|
||||
function Normals_of (Self : in Mesh;
|
||||
for_Primitive : in Primitive) return access float_Array;
|
||||
|
||||
function Coords_of (Self : in Mesh;
|
||||
for_Primitive : in Primitive) return access float_Array;
|
||||
|
||||
------------
|
||||
--- Geometry
|
||||
--
|
||||
|
||||
type Geometry is
|
||||
record
|
||||
Name : Text;
|
||||
Id : Text;
|
||||
Mesh : geometries.Mesh;
|
||||
end record;
|
||||
|
||||
type Geometry_array is array (Positive range <>) of Geometry;
|
||||
type Geometry_array_view is access Geometry_array;
|
||||
|
||||
|
||||
----------------
|
||||
--- Library Item
|
||||
--
|
||||
|
||||
type Item is
|
||||
record
|
||||
Contents : Geometry_array_view;
|
||||
end record;
|
||||
|
||||
|
||||
end collada.Library.geometries;
|
||||
Reference in New Issue
Block a user