87 lines
2.3 KiB
Ada
87 lines
2.3 KiB
Ada
with
|
|
openGL.Font;
|
|
|
|
private
|
|
with
|
|
openGL.Geometry.colored,
|
|
ada.Containers.Vectors;
|
|
|
|
|
|
package openGL.Model.segment_line
|
|
--
|
|
-- Models a segmented line.
|
|
--
|
|
is
|
|
type Item is new Model.item with private;
|
|
type View is access all Item'Class;
|
|
|
|
|
|
---------
|
|
--- Forge
|
|
--
|
|
|
|
function new_segment_line_Model (Color : in openGL.Color) return View;
|
|
|
|
|
|
-----------
|
|
--- Segment
|
|
--
|
|
|
|
type Segment is
|
|
record
|
|
First : Vector_3;
|
|
Last : Vector_3;
|
|
end record;
|
|
|
|
type Segments_t is array (Positive range <>) of aliased Segment;
|
|
|
|
function Angle_in_xz_plane (the_Segment : in Segment) return Radians;
|
|
|
|
|
|
--------------
|
|
--- Attributes
|
|
--
|
|
|
|
overriding
|
|
function to_GL_Geometries (Self : access Item; Textures : access Texture.name_Map_of_texture'Class;
|
|
Fonts : in Font.font_id_Map_of_font) return Geometry.views;
|
|
|
|
procedure add_1st_Segment (Self : in out Item; start_Site : in Vector_3;
|
|
end_Site : in Vector_3);
|
|
|
|
procedure add_Segment (Self : in out Item; end_Site : in Vector_3);
|
|
|
|
function Site (Self : in Item; for_End : in Integer) return Vector_3;
|
|
|
|
procedure Site_is (Self : in out Item; Now : in Vector_3;
|
|
for_End : in Integer);
|
|
|
|
procedure Color_is (Self : in out Item; Now : in Color;
|
|
for_End : in Integer);
|
|
|
|
function segment_Count (Self : in Item) return Natural;
|
|
function Segments (Self : in Item) return Segments_t;
|
|
|
|
|
|
|
|
private
|
|
|
|
type vertex_Array_view is access all Geometry.colored.Vertex_array;
|
|
|
|
package site_Vectors is new ada.Containers.Vectors (Positive, Vector_3);
|
|
subtype site_Vector is site_Vectors.Vector;
|
|
|
|
|
|
type Item is new Model.item with
|
|
record
|
|
Color : openGL.rgb_Color;
|
|
Points : site_Vector;
|
|
|
|
Vertices : Vertex_array_view := new Geometry.colored.Vertex_array (1 .. 2);
|
|
vertex_Count : Natural := 0;
|
|
|
|
Geometry : openGL.Geometry.colored.view;
|
|
end record;
|
|
|
|
end openGL.Model.segment_line;
|