From: Alan W. I. <ai...@us...> - 2007-03-22 07:29:42
|
Update of /cvsroot/plplot/plplot/examples/ada In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31081/examples/ada Modified Files: CMakeLists.txt x01a.adb Added Files: xt01a.adb Log Message: Move x01a.adb to xt01a.adb where the "t" is a reminder that that example is implemented using the thick interface. Add a build and ctest of xt01a. Revise x01a.adb to use just the thin interface. --- NEW FILE: xt01a.adb --- -- $Id: xt01a.adb,v 1.1 2007/03/22 07:29:37 airwin Exp $ -- Simple line plot and multiple windows demo. -- Copyright (C) 2006 Jerry Bauck -- This file is part of PLplot. -- PLplot is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Library Public License as published -- by the Free Software Foundation; either version 2 of the License, or -- (at your option) any later version. -- PLplot is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU Library General Public License for more details. -- You should have received a copy of the GNU Library General Public License -- along with PLplot; if not, write to the Free Software -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA with Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Strings.Bounded, PLplot, PlplotThin; use Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Strings.Bounded, PLplot, PlplotThin; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. --with Ada.Numerics.Long_Real_Arrays; use Ada.Numerics.Long_Real_Arrays; procedure xt01a is xs, ys : Real_Vector (0 .. 5); xscale, yscale, xoff, yoff : Long_Float; fontset : Integer := 1; notes : String := "Make sure you get it right!"; ver : String_80; procedure plot1 is xmin, xmax, ymin, ymax : Long_Float; x, y : Real_Vector (0 .. 59); begin for i in x'Range loop x(i) := xoff + xscale * Long_Float(i + 1) / Long_Float(x'Length); y(i) := yoff + yscale * x(i)**2.0; end loop; xmin := x(x'First); xmax := x(x'Last); ymin := y(y'First); ymax := y(y'Last); for i in xs'Range loop xs(i) := x(i * 10 + 3); ys(i) := y(i * 10 + 3); end loop; -- Set up the viewport and window using Set_Environment. The range in X is -- 0.0 to 6.0, and the range in Y is 0.0 to 30.0. The axes are -- scaled separately (just = 0), and we just draw a labelled -- box (axis = 0). Set_Color(Red); Set_Environment(xmin, xmax, ymin, ymax, Not_Justified, Linear_Box_Plus); Set_Color(Yellow); Write_Labels(TUB("(x)"), TUB("(y)"), TUB("#frPLplot Example 1 - y=x#u2")); -- Plot the data points Set_Color(Aquamarine); Draw_Points(xs, ys, 9); -- Draw the line through the data Set_Color(Green); Draw_Curve(x, y); end plot1; procedure plot2 is x, y : Real_Vector (0 .. 99); begin -- Set up the viewport and window using PLENV. The range in X is -2.0 to -- 10.0, and the range in Y is -0.4 to 2.0. The axes are scaled separately -- (just = 0), and we draw a box with axes (axis = 1). Set_Color(Red); Set_Environment(-2.0, 10.0, -0.4, 1.2, Not_Justified, Linear_Zero_Axes); Set_Color(Yellow); Write_Labels(TUB("(x)"), TUB("sin(x)/x"), TUB("#frPLplot Example 1 - Sinc Function")); -- Fill up the arrays for i in x'Range loop x(i) := (Long_Float(i) - 19.0) / 6.0; y(i) := 1.0; if x(i) /= 0.0 then y(i) := sin(x(i)) / x(i); end if; end loop; -- Draw the line Set_Color(Green); Set_Pen_Width(2); Draw_Curve(x, y); Set_Pen_Width(1); end plot2; procedure plot3 is x, y : Real_Vector (0 .. 100); space1, mark1 : Integer_Array_1D(1 .. 1) := (others => 1500); begin Advance_To_Subpage(Next_SubPage); -- Use standard viewport, and define X range from 0 to 360 degrees, -- Y range from -1.2 to 1.2. Set_Viewport_Standard; Set_Viewport_World(0.0, 360.0, -1.2, 1.2); -- Draw a box with ticks spaced 60 degrees apart in X, and 0.2 in Y. Set_Color(Red); Box_Around_Viewport(TUB("bcnst"), 60.0, 2, TUB("bcnstv"), 0.2, 2); -- Superimpose a dashed line grid, with 1.5 mm marks and spaces. -- plstyl expects a pointer! (-- Not Ada.) Set_Line_Style(mark1, space1); Set_Color(Yellow); Box_Around_Viewport(TUB("g"), 30.0, 0, TUB("g"), 0.2, 0); Set_Line_Style(Default_Continuous_Line); Set_Color(Green); Write_Labels(TUB("Angle (degrees)"), TUB("sine"), TUB("#frPLplot Example 1 - Sine function")); for i in x'Range loop x(i) := 3.6 * Long_Float(i); y(i) := sin(x(i) * pi / 180.0); end loop; Set_Color(Aquamarine); Draw_Curve(x, y); end plot3; begin -- plplot initialization -- Divide page into 2x2 plots unless user overrides Set_Number_Of_Subpages(2, 2); -- Parse and process command line arguments Parse_Command_Line_Arguments(PL_PARSE_FULL); -- Get version number, just for kicks Put_Line("PLplot library version: " & Get_Version_Number); -- Initialize plplot Initialize_Plotter; -- Set up the data -- Original case xscale := 6.0; yscale := 1.0; xoff := 0.0; yoff := 0.0; -- Do a plot plot1; -- Set up the data xscale := 1.0; yscale := 0.0014; yoff := 0.0185; -- Do a plot Set_Floating_Point_Display_Y(Max_Digits => 5, Field_Digits => 0); plot1; plot2; plot3; -- Don't forget to call PLEND to finish off! Plot_End; end xt01a; Index: CMakeLists.txt =================================================================== RCS file: /cvsroot/plplot/plplot/examples/ada/CMakeLists.txt,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- CMakeLists.txt 13 Mar 2007 10:07:24 -0000 1.8 +++ CMakeLists.txt 22 Mar 2007 07:29:37 -0000 1.9 @@ -19,6 +19,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA set(ada_STRING_INDICES +"t01" "01" "10" "12" @@ -65,4 +66,3 @@ target_link_libraries(x${STRING_INDEX}a plplotada${LIB_TAG}) endif(BUILD_TEST) endforeach(STRING_INDEX ${ada_STRING_INDICES}) - Index: x01a.adb =================================================================== RCS file: /cvsroot/plplot/plplot/examples/ada/x01a.adb,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- x01a.adb 21 Mar 2007 20:40:17 -0000 1.4 +++ x01a.adb 22 Mar 2007 07:29:37 -0000 1.5 @@ -25,14 +25,14 @@ Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Strings.Bounded, - PLplot, + Interfaces.C, PlplotThin; use Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Strings.Bounded, - PLplot, + Interfaces.C, PlplotThin; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE @@ -44,8 +44,7 @@ xscale, yscale, xoff, yoff : Long_Float; fontset : Integer := 1; notes : String := "Make sure you get it right!"; - ver : String_80; - + PL_Version_Number : char_array(0..79); procedure plot1 is xmin, xmax, ymin, ymax : Long_Float; x, y : Real_Vector (0 .. 59); @@ -68,18 +67,18 @@ -- 0.0 to 6.0, and the range in Y is 0.0 to 30.0. The axes are -- scaled separately (just = 0), and we just draw a labelled -- box (axis = 0). - Set_Color(Red); - Set_Environment(xmin, xmax, ymin, ymax, Not_Justified, Linear_Box_Plus); - Set_Color(Yellow); - Write_Labels(TUB("(x)"), TUB("(y)"), TUB("#frPLplot Example 1 - y=x#u2")); + plcol0(1); + plenv(xmin, xmax, ymin, ymax, 0, 0); + plcol0(2); + pllab(To_C("(x)"), To_C("(y)"), To_C("#frPLplot Example 1 - y=x#u2")); -- Plot the data points - Set_Color(Aquamarine); - Draw_Points(xs, ys, 9); + plcol0(4); + plpoin(6, xs, ys, 9); -- Draw the line through the data - Set_Color(Green); - Draw_Curve(x, y); + plcol0(3); + plline(60, x, y); end plot1; @@ -89,10 +88,10 @@ -- Set up the viewport and window using PLENV. The range in X is -2.0 to -- 10.0, and the range in Y is -0.4 to 2.0. The axes are scaled separately -- (just = 0), and we draw a box with axes (axis = 1). - Set_Color(Red); - Set_Environment(-2.0, 10.0, -0.4, 1.2, Not_Justified, Linear_Zero_Axes); - Set_Color(Yellow); - Write_Labels(TUB("(x)"), TUB("sin(x)/x"), TUB("#frPLplot Example 1 - Sinc Function")); + plcol0(1); + plenv(-2.0, 10.0, -0.4, 1.2, 0, 1); + plcol0(2); + pllab(To_C("(x)"), To_C("sin(x)/x"), To_C("#frPLplot Example 1 - Sinc Function")); -- Fill up the arrays for i in x'Range loop @@ -104,59 +103,60 @@ end loop; -- Draw the line - Set_Color(Green); - Set_Pen_Width(2); - Draw_Curve(x, y); - Set_Pen_Width(1); + plcol0(3); + plwid(2); + plline(100, x, y); + plwid(1); end plot2; procedure plot3 is x, y : Real_Vector (0 .. 100); +-- space1, mark1 : Integer_Array_1D(1 .. 1) := (others => 1500); space1, mark1 : Integer_Array_1D(1 .. 1) := (others => 1500); begin - Advance_To_Subpage(Next_SubPage); + pladv(0); -- Use standard viewport, and define X range from 0 to 360 degrees, -- Y range from -1.2 to 1.2. - Set_Viewport_Standard; - Set_Viewport_World(0.0, 360.0, -1.2, 1.2); + plvsta; + plwind(0.0, 360.0, -1.2, 1.2); -- Draw a box with ticks spaced 60 degrees apart in X, and 0.2 in Y. - Set_Color(Red); - Box_Around_Viewport(TUB("bcnst"), 60.0, 2, TUB("bcnstv"), 0.2, 2); + plcol0(1); + plbox(To_C("bcnst"), 60.0, 2, To_C("bcnstv"), 0.2, 2); -- Superimpose a dashed line grid, with 1.5 mm marks and spaces. - -- plstyl expects a pointer! (-- Not Ada.) - Set_Line_Style(mark1, space1); - Set_Color(Yellow); - Box_Around_Viewport(TUB("g"), 30.0, 0, TUB("g"), 0.2, 0); - Set_Line_Style(Default_Continuous_Line); - - Set_Color(Green); - Write_Labels(TUB("Angle (degrees)"), TUB("sine"), TUB("#frPLplot Example 1 - Sine function")); - + plstyl(1, mark1, space1); + plcol0(2); + plbox(To_C("g"), 30.0, 0, To_C("g"), 0.2, 0); + plstyl(0, mark1, space1); + + plcol0(3); + pllab(To_C("Angle (degrees)"), To_C("sine"), To_C("#frPLplot Example 1 - Sine function")); + for i in x'Range loop x(i) := 3.6 * Long_Float(i); y(i) := sin(x(i) * pi / 180.0); end loop; - Set_Color(Aquamarine); - Draw_Curve(x, y); + plcol0(4); + plline(101, x, y); end plot3; begin -- plplot initialization -- Divide page into 2x2 plots unless user overrides - Set_Number_Of_Subpages(2, 2); + plssub(2, 2); -- Parse and process command line arguments - Parse_Command_Line_Arguments(PL_PARSE_FULL); + plparseopts(PL_PARSE_FULL); -- Get version number, just for kicks - Put_Line("PLplot library version: " & Get_Version_Number); + plgver(PL_Version_Number); + Put_Line("PLplot library version: " & To_Ada(PL_Version_Number, True)); -- Initialize plplot - Initialize_Plotter; + plinit; -- Set up the data -- Original case @@ -174,11 +174,11 @@ yoff := 0.0185; -- Do a plot - Set_Floating_Point_Display_Y(Max_Digits => 5, Field_Digits => 0); + plsyax(5, 0); plot1; plot2; plot3; -- Don't forget to call PLEND to finish off! - Plot_End; + plend; end x01a; |