Add initial prototype.
This commit is contained in:
94
3-mid/opengl/source/lean/text/private/opengl-glyphimpl.adb
Normal file
94
3-mid/opengl/source/lean/text/private/opengl-glyphimpl.adb
Normal file
@@ -0,0 +1,94 @@
|
||||
with
|
||||
freetype_c.Binding,
|
||||
freetype_c.FT_BBox,
|
||||
freetype_c.FT_Vector;
|
||||
|
||||
package body openGL.GlyphImpl
|
||||
is
|
||||
-----------
|
||||
-- Utility
|
||||
--
|
||||
|
||||
function Bounds_of (glyth_Slot : in freetype_c.FT_GlyphSlot.item) return Bounds
|
||||
is
|
||||
use freetype_c.Binding;
|
||||
|
||||
bBox : aliased freetype_c.FT_BBox.item;
|
||||
the_Bounds : Bounds;
|
||||
|
||||
begin
|
||||
FT_Outline_Get_CBox (FT_GlyphSlot_Get_Outline (glyth_Slot).all'unchecked_Access,
|
||||
bBox'unchecked_Access);
|
||||
|
||||
the_Bounds := (Ball => <>,
|
||||
Box => (Lower => [1 => Real (bbox.xMin) / 64.0,
|
||||
2 => Real (bbox.yMin) / 64.0,
|
||||
3 => 0.0],
|
||||
Upper => [1 => Real (bbox.xMax) / 64.0,
|
||||
2 => Real (bbox.yMax) / 64.0,
|
||||
3 => 0.0]));
|
||||
set_Ball_from_Box (the_Bounds);
|
||||
|
||||
return the_Bounds;
|
||||
end Bounds_of;
|
||||
|
||||
|
||||
---------
|
||||
-- Forge
|
||||
--
|
||||
|
||||
procedure define (Self : in out Item; glyth_Slot : in freetype_c.FT_GlyphSlot.item)
|
||||
is
|
||||
use type freetype_c.FT_GlyphSlot.item;
|
||||
begin
|
||||
Self.Err := no_Error;
|
||||
|
||||
if glyth_Slot /= null
|
||||
then
|
||||
Self.bBox := Bounds_of (glyth_Slot);
|
||||
|
||||
declare
|
||||
use freetype_c.Binding;
|
||||
the_Advance : constant freetype_c.FT_Vector.item := FT_GlyphSlot_Get_Advance (glyth_Slot);
|
||||
begin
|
||||
Self.Advance := [Real (the_Advance.x) / 64.0,
|
||||
Real (the_Advance.y) / 64.0,
|
||||
0.0];
|
||||
end;
|
||||
end if;
|
||||
end define;
|
||||
|
||||
|
||||
procedure destruct (Self : in out Item)
|
||||
is
|
||||
begin
|
||||
null;
|
||||
end destruct;
|
||||
|
||||
|
||||
--------------
|
||||
-- Attributes
|
||||
--
|
||||
|
||||
function Advance (Self : in Item) return Real
|
||||
is
|
||||
begin
|
||||
return Self.Advance (1);
|
||||
end Advance;
|
||||
|
||||
|
||||
function BBox (Self : in Item) return Bounds
|
||||
is
|
||||
begin
|
||||
return Self.bBox;
|
||||
end BBox;
|
||||
|
||||
|
||||
function Error (Self : in Item) return error_Kind
|
||||
is
|
||||
begin
|
||||
return Self.Err;
|
||||
end Error;
|
||||
|
||||
|
||||
end openGL.GlyphImpl;
|
||||
Reference in New Issue
Block a user