Add initial prototype.

This commit is contained in:
Rod Kay
2022-07-31 17:34:54 +10:00
commit 54a53b2ac0
1421 changed files with 358874 additions and 0 deletions

View File

@@ -0,0 +1,133 @@
package body openGL.Light
is
function Id (Self : in Item) return light.Id_t
is
begin
return Self.Id;
end Id;
procedure Id_is (Self : in out Item; Now : in light.Id_t)
is
begin
Self.Id := Now;
end Id_is;
function Kind (Self : in Item) return light.Kind_t
is
begin
return Self.Kind;
end Kind;
procedure Kind_is (Self : in out Item; Now : in light.Kind_t)
is
begin
Self.Kind := Now;
end Kind_is;
function is_On (Self : in Item) return Boolean
is
begin
return Self.On;
end is_On;
procedure is_On (Self : in out Item; Now : in Boolean := True)
is
begin
Self.On := Now;
end is_On;
function Site (Self : in Item) return openGL.Site
is
begin
return Self.Site;
end Site;
procedure Site_is (Self : in out Item; Now : in openGL.Site)
is
begin
Self.Site := Now;
end Site_is;
function Color (Self : in Item) return openGL.Color
is
begin
return Self.Color;
end Color;
function Attenuation (Self : in Item) return Real
is
begin
return Self.Attenuation;
end Attenuation;
function ambient_Coefficient (Self : in Item) return Real
is
begin
return Self.ambient_Coefficient;
end ambient_Coefficient;
function cone_Angle (Self : in Item) return Degrees
is
begin
return Self.cone_Angle;
end cone_Angle;
function cone_Direction (Self : in Item) return Vector_3
is
begin
return Self.cone_Direction;
end cone_Direction;
procedure Color_is (Self : in out Item; Now : in openGL.Color)
is
begin
Self.Color := Now;
end Color_is;
procedure Attenuation_is (Self : in out Item; Now : in Real)
is
begin
Self.Attenuation := Now;
end Attenuation_is;
procedure ambient_Coefficient_is (Self : in out Item; Now : in Real)
is
begin
Self.ambient_Coefficient := Now;
end ambient_Coefficient_is;
procedure cone_Angle_is (Self : in out Item; Now : in Degrees)
is
begin
Self.cone_Angle := Now;
end cone_Angle_is;
procedure cone_Direction_is (Self : in out Item; Now : in Vector_3)
is
begin
Self.cone_Direction := Now;
end cone_Direction_is;
end openGL.Light;

View File

@@ -0,0 +1,66 @@
with
openGL.Palette;
package openGL.Light
--
-- Models a light.
--
is
type Item is tagged private;
type Items is array (Positive range <>) of Item;
--------------
--- Attributes
--
type Id_t is new Natural;
type Kind_t is (Diffuse, Direct);
null_Id : constant Id_t;
function Id (Self : in Item) return light.Id_t;
procedure Id_is (Self : in out Item; Now : in light.Id_t);
function Kind (Self : in Item) return light.Kind_t;
procedure Kind_is (Self : in out Item; Now : in light.Kind_t);
function is_On (Self : in Item) return Boolean;
procedure is_On (Self : in out Item; Now : in Boolean := True);
function Site (Self : in Item) return openGL.Site;
procedure Site_is (Self : in out Item; Now : in openGL.Site);
function Color (Self : in Item) return Color;
function Attenuation (Self : in Item) return Real;
function ambient_Coefficient (Self : in Item) return Real;
function cone_Angle (Self : in Item) return Degrees;
function cone_Direction (Self : in Item) return Vector_3;
procedure Color_is (Self : in out Item; Now : in openGL.Color);
procedure Attenuation_is (Self : in out Item; Now : in Real);
procedure ambient_Coefficient_is (Self : in out Item; Now : in Real);
procedure cone_Angle_is (Self : in out Item; Now : in Degrees);
procedure cone_Direction_is (Self : in out Item; Now : in Vector_3);
private
null_Id : constant Id_t := Id_t'First;
type Item is tagged
record
Id : light.Id_t := null_Id;
Kind : light.Kind_t := Direct;
On : Boolean := True;
Site : openGL.Site := [0.0, 0.0, 1.0]; -- The GL default.
Color : openGL.Color := Palette.White;
Attenuation : Real := 0.1;
ambient_Coefficient : Real := 0.1;
cone_Angle : Degrees := 2.0;
cone_Direction : Vector_3 := [0.0, 0.0, -1.0];
end record;
end openGL.Light;