with Ada.Numerics.Elementary_Functions; with Gnoga.Application.Singleton; with Gnoga.Gui.Base; with Gnoga.Gui.Element.Canvas.Context_2D.Plotting; with Gnoga.Gui.Element.Common; with Gnoga.Gui.View; with Gnoga.Gui.Window; procedure Plot_Test is package Math renames Ada.Numerics.Elementary_Functions; procedure On_Quit (Object : in out Gnoga.Gui.Base.Base_Type'Class); X_Limit : constant := 8.0; Y_Limit : constant := 2.0; Win : Gnoga.Gui.Window.Window_Type; View : Gnoga.Gui.View.View_Type; Plot : Gnoga.Gui.Element.Canvas.Context_2D.Plotting.Plot_Info; Quit : Gnoga.Gui.Element.Common.Button_Type; List : Gnoga.Gui.Element.Canvas.Context_2D.Plotting.Point_List (1 .. Integer (20 * X_Limit) + 5); Last : Positive := List'Last; procedure On_Quit (Object : in out Gnoga.Gui.Base.Base_Type'Class) is pragma Unreferenced (Object); begin -- On_Quit View.Remove; Gnoga.Application.Singleton.End_Application; end On_Quit; begin -- Plot_Test -- Gnoga.Application.Open_URL; Gnoga.Application.Title (Name => "Plot Test"); Gnoga.Application.HTML_On_Close (HTML => "Plot Test Finished"); Gnoga.Application.Singleton.Initialize (Main_Window => Win); View.Create (Parent => Win); View.Text_Alignment (Value => Gnoga.Gui.Element.Center); Plot.Create (Parent => View, Width => 500, Height => 500, X_Min => -X_Limit, X_Max => X_Limit, Y_Min => -Y_Limit, Y_Max => Y_Limit); Plot.Border; View.New_Line; Plot.Axes (Interval => 1.0, Length => 10); Plot.Point (Position => (X => -1.0, Y => 1.5), Color => "green"); Plot.Point (Position => (X => 0.0, Y => 1.5), Color => "green"); Plot.Point (Position => (X => 1.0, Y => 1.5), Color => "green"); Plot.Line (From => (X => -X_Limit, Y => Y_Limit), To => (X => X_Limit, Y => -Y_Limit), Color => "blue"); List (List'First) := (X => -X_Limit, Y => Math.Sin (-X_Limit) / (-X_Limit)); All_Points : for I in List'First + 1 .. List'Last loop List (I).X := List (I - 1).X + 0.1; if List (I).X = 0.0 then List (I).Y := 1.0; else List (I).Y := Math.Sin (List (I).X) / List (I).X; end if; if List (I).X > X_Limit then Last := I; exit All_Points; end if; end loop All_Points; Plot.Graph (List => List (List'First .. Last), Color => "red"); Quit.Create (Parent => View, Content => "Quit"); Quit.On_Click_Handler (Handler => On_Quit'Unrestricted_Access); Gnoga.Application.Singleton.Message_Loop; end Plot_Test;