Specyfikacja pakietu JEWL
------------------------------------------------------------------------------
-- --
-- J E W L --
-- --
-- Pakiet zapewniający Wejście/Wyjście oraz funkcje okienkowe dla --
-- dla początkujących. --
-- --
-- Prawa (C) John English 2000. Adres kontaktowy: je@brighton.ac.uk --
-- To oprogramowanie zostało wydane zgodnie z założeniami GNU Powszechnej --
-- Licencji Publicznej i jest przeznaczone głównie dla użytku --
-- edukacyjnego. Skontaktuj się z autorem by zgłosić błędy, sugestie --
-- i modyfikacje. --
-- --
------------------------------------------------------------------------------
with Ada.Finalization;
package JEWL is
----------------------------------------------------------------------------
--
-- UŻYWANE TYPY
--
-- Następujące typy są użyte w innych miejscach w tekście tego pakietu:
--
-- Angle_Type : kąt określony jako wartość całkowita pomiędzy 0 a 359
-- stopni.
-- Colour_Type : kolor określony jako wartość RGB.
-- Font_Type : czcionka wyznaczona poprzez nazwę, wielkość i styl.
-- Point_Type : para współrzędnych (X,Y) w oknie.
-- Point_List : tablica par (X,Y).
--
----------------------------------------------------------------------------
type Angle_Type is mod 360;
subtype Colour_Range is Integer range 0..255;
type Colour_Type is record
Red : Colour_Range;
Green : Colour_Range;
Blue : Colour_Range;
end record;
type Font_Type (Length : Natural)
is record
Name : String (1..Length);
Size : Positive;
Bold : Boolean := False;
Italic : Boolean := False;
end record;
type Point_Type is record
X,Y : Integer;
end record;
type Point_List is array (Positive range <>) of Point_Type;
----------------------------------------------------------------------------
--
-- OPERACJE NA UŻYWANYCH TYPACH
--
-- Operacje na kolorach:
-- Light : Generowanie rozjaśnionej wersji koloru, np. Light(Red).
-- Dark : Generowanie przyciemnionej wersji koloru, np. Dark(Green).
--
-- Operacje na czcionkach:
-- Font : Generowanie czcionki o wyznaczonych właściwościach.
-- Name : Pobranie nazwy używanej czcionki.
-- Size : Pobranie rozmiaru czcionki w punktach.
-- Bold : Sprawdzenie czy czcionka jest pogrubiona.
-- Italic : Sprawdzenie czy czcionka jest pochylona.
--
-- Operacje na współrzędnych:
-- Endpoint : Obliczenie punktu końcowego linii zaczynającej się w punkcie startowym,
-- z długości i kątem.
-- Inside : Sprawdzenie czy dany punkt jest w środku wyznaczonego prostokąta
-- (definiowane za pomocą dwóch współrzędnych położonych na przekątnej).
-- P1 + P2 : Dodaje dwie współrzędne (P1.X+P2.X, P1.Y+P2.Y).
-- P1 - P2 : Odejmuje dwie współrzędne (P1.X-P2.X, P1.Y-P2.Y).
--
----------------------------------------------------------------------------
function Light (Colour : Colour_Type) return Colour_Type;
function Dark (Colour : Colour_Type) return Colour_Type;
function Font (Name : String;
Size : Positive;
Bold : Boolean := False;
Italic : Boolean := False)
return Font_Type;
function Name (Font : Font_Type) return String;
function Size (Font : Font_Type) return Natural;
function Bold (Font : Font_Type) return Boolean;
function Italic (Font : Font_Type) return Boolean;
function Endpoint (From : Point_Type;
Length : Positive;
Angle : Angle_Type) return Point_Type;
function Inside (Point : Point_Type;
From : Point_Type;
To : Point_Type) return Boolean;
function "+" (P1, P2 : Point_Type) return Point_Type;
function "-" (P1, P2 : Point_Type) return Point_Type;
----------------------------------------------------------------------------
-- Zmiany nazw dla amerykańskiej odmiany angielskiego
----------------------------------------------------------------------------
subtype Color_Range is Colour_Range;
subtype Color_Type is Colour_Type;
private
-- szczegóły implementacji
end JEWL;