From: <ai...@us...> - 2008-06-27 18:38:16
|
Revision: 8493 http://plplot.svn.sourceforge.net/plplot/?rev=8493&view=rev Author: airwin Date: 2008-06-27 11:38:20 -0700 (Fri, 27 Jun 2008) Log Message: ----------- Temporarily drop the 19th example from Ada build-tree and install-tree testing because it generates the following run-time error message on Linux: raised STORAGE_ERROR : stack overflow (or erroneous memory access) Modified Paths: -------------- trunk/examples/ada/Makefile.examples.in trunk/plplot_test/test_ada.sh.in Modified: trunk/examples/ada/Makefile.examples.in =================================================================== --- trunk/examples/ada/Makefile.examples.in 2008-06-27 17:40:45 UTC (rev 8492) +++ trunk/examples/ada/Makefile.examples.in 2008-06-27 18:38:20 UTC (rev 8493) @@ -46,7 +46,6 @@ x15a$(EXEEXT) \ x16a$(EXEEXT) \ x18a$(EXEEXT) \ - x19a$(EXEEXT) \ x21a$(EXEEXT) \ x22a$(EXEEXT) \ x23a$(EXEEXT) \ @@ -71,7 +70,6 @@ xthick15a$(EXEEXT) \ xthick16a$(EXEEXT) \ xthick18a$(EXEEXT) \ - xthick19a$(EXEEXT) \ xthick21a$(EXEEXT) \ xthick22a$(EXEEXT) \ xthick23a$(EXEEXT) \ Modified: trunk/plplot_test/test_ada.sh.in =================================================================== --- trunk/plplot_test/test_ada.sh.in 2008-06-27 17:40:45 UTC (rev 8492) +++ trunk/plplot_test/test_ada.sh.in 2008-06-27 18:38:20 UTC (rev 8493) @@ -27,7 +27,13 @@ # pushd $adadir; make; popd # Do the standard non-interactive examples. -for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 16 18 19 21 22 23 24 25 26 27 28 thick01 thick02 thick03 thick04 thick05 thick06 thick07 thick08 thick09 thick10 thick11 thick12 thick13 thick15 thick16 thick18 thick19 thick21 thick22 thick23 thick24 thick25 thick26 thick27 thick28; do +for index in \ +01 02 03 04 05 06 07 08 09 \ +10 11 12 13 15 16 18 \ +21 22 23 24 25 26 27 28 \ +thick01 thick02 thick03 thick04 thick05 thick06 thick07 thick08 thick09 \ +thick10 thick11 thick12 thick13 thick15 thick16 thick18 \ +thick21 thick22 thick23 thick24 thick25 thick26 thick27 thick28; do $adadir/x${index}a -dev $device -o ${OUTPUT_DIR}/x${index}a.$dsuffix $options 2> test.error status_code=$? cat test.error This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2008-06-28 00:55:45
|
Revision: 8501 http://plplot.svn.sourceforge.net/plplot/?rev=8501&view=rev Author: airwin Date: 2008-06-27 17:55:54 -0700 (Fri, 27 Jun 2008) Log Message: ----------- Reenable the build-tree and install-tree testing of Ada example 19 to see if all systems with access to gnat-4.3 can run this example without errors. Modified Paths: -------------- trunk/examples/ada/Makefile.examples.in trunk/plplot_test/test_ada.sh.in Modified: trunk/examples/ada/Makefile.examples.in =================================================================== --- trunk/examples/ada/Makefile.examples.in 2008-06-27 23:42:15 UTC (rev 8500) +++ trunk/examples/ada/Makefile.examples.in 2008-06-28 00:55:54 UTC (rev 8501) @@ -46,6 +46,7 @@ x15a$(EXEEXT) \ x16a$(EXEEXT) \ x18a$(EXEEXT) \ + x19a$(EXEEXT) \ x21a$(EXEEXT) \ x22a$(EXEEXT) \ x23a$(EXEEXT) \ @@ -70,6 +71,7 @@ xthick15a$(EXEEXT) \ xthick16a$(EXEEXT) \ xthick18a$(EXEEXT) \ + xthick19a$(EXEEXT) \ xthick21a$(EXEEXT) \ xthick22a$(EXEEXT) \ xthick23a$(EXEEXT) \ Modified: trunk/plplot_test/test_ada.sh.in =================================================================== --- trunk/plplot_test/test_ada.sh.in 2008-06-27 23:42:15 UTC (rev 8500) +++ trunk/plplot_test/test_ada.sh.in 2008-06-28 00:55:54 UTC (rev 8501) @@ -29,10 +29,10 @@ # Do the standard non-interactive examples. for index in \ 01 02 03 04 05 06 07 08 09 \ -10 11 12 13 15 16 18 \ +10 11 12 13 15 16 18 19 \ 21 22 23 24 25 26 27 28 \ thick01 thick02 thick03 thick04 thick05 thick06 thick07 thick08 thick09 \ -thick10 thick11 thick12 thick13 thick15 thick16 thick18 \ +thick10 thick11 thick12 thick13 thick15 thick16 thick18 thick19 \ thick21 thick22 thick23 thick24 thick25 thick26 thick27 thick28; do $adadir/x${index}a -dev $device -o ${OUTPUT_DIR}/x${index}a.$dsuffix $options 2> test.error status_code=$? This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jb...@us...> - 2008-07-03 11:29:35
|
Revision: 8502 http://plplot.svn.sourceforge.net/plplot/?rev=8502&view=rev Author: jbauck Date: 2008-07-03 04:29:44 -0700 (Thu, 03 Jul 2008) Log Message: ----------- Added Ada examples x29a.adb, xthick29a.adb, x30a.adb, xthick30a.adb. Note that x29a.adb and xthick29a.adb offset the major x-ticks on page 3 by one day compared to the C versions. This needs to be fixed. Added subprograms pltimefmt, plscmap1la, plgcol0a, plgcolbga, plscmap0a, plscmap1a, plscol0a, plscolbga and their "thick" corollaries to the Ada bindings. These relate to labeling dates on axes and alpha values. Modified Paths: -------------- trunk/bindings/ada/plplot.adb.cmake trunk/bindings/ada/plplot.ads.cmake trunk/bindings/ada/plplot_thin.ads.cmake trunk/bindings/ada/plplot_traditional.adb.cmake trunk/bindings/ada/plplot_traditional.ads.cmake trunk/examples/ada/CMakeLists.txt trunk/examples/ada/Makefile.examples.in trunk/plplot_test/test_ada.sh.in Added Paths: ----------- trunk/examples/ada/x29a.adb.cmake trunk/examples/ada/x30a.adb.cmake trunk/examples/ada/xthick29a.adb.cmake trunk/examples/ada/xthick30a.adb.cmake Modified: trunk/bindings/ada/plplot.adb.cmake =================================================================== --- trunk/bindings/ada/plplot.adb.cmake 2008-06-28 00:55:54 UTC (rev 8501) +++ trunk/bindings/ada/plplot.adb.cmake 2008-07-03 11:29:44 UTC (rev 8502) @@ -1158,7 +1158,7 @@ X_Number_Of_Subintervals : Natural := 0; Y_Option_String : String; Y_Major_Tick_Interval : Long_Float; - Y_Number_Of_Subintervals : Natural) is + Y_Number_Of_Subintervals : Natural := 0) is begin plbox (To_C(X_Option_String, True), X_Major_Tick_Interval, X_Number_Of_Subintervals, @@ -1457,6 +1457,16 @@ end Get_Color_RGB; + -- Returns 8 bit RGB values for given color from color map 0 and alpha value + -- plgcol0a + procedure Get_Color_RGB_And_Alpha + (Color_Index : Integer; + Red_Component, Green_Component, Blue_Component : out Integer; + a : out Long_Float) is + begin + plgcol0a(Color_Index, Red_Component, Green_Component, Blue_Component, a); + end Get_Color_RGB_And_Alpha; + -- Returns the background color by 8 bit RGB value -- plgcolbg procedure Get_Background_Color_RGB @@ -1466,6 +1476,17 @@ end Get_Background_Color_RGB; + -- Returns the background color by 8 bit RGB value and alpha value + -- plgcolbga + procedure Get_Background_Color_RGB_And_Alpha + (Red_Component, Green_Component, Blue_Component : out Integer; + Alpha : out Real_Vector) is + begin + plgcolbga(Red_Component, Green_Component, Blue_Component, + Alpha); + end; + + -- Returns the current compression setting -- plgcompression procedure Get_Compression_Level(Compression_Level : out Integer) is @@ -1528,7 +1549,7 @@ -- plgfont procedure Get_Font(Family, Style, Weight : out Integer) is begin - PLplot_Thin.plgfont(Family, Style, Weight); + plgfont(Family, Style, Weight); end; @@ -2107,6 +2128,16 @@ end Set_Color_Map_0; + -- Set color map 0 colors by 8 bit RGB values and alpha values + -- plscmap0a + procedure Set_Color_Map_0_And_Alpha + (Red_Components, Green_Components, Blue_Components : Integer_Array_1D; + Alpha : Real_Vector) is + begin + plscmap0a(Red_Components, Green_Components, Blue_Components, Alpha, Red_Components'Length); + end Set_Color_Map_0_And_Alpha; + + -- Set number of colors in cmap 0 -- plscmap0n procedure Set_Number_Of_Colors_Map_0(Number_Of_Colors : Integer) is @@ -2123,7 +2154,7 @@ PL_Red_Component, PL_Green_Component, PL_Blue_Component : Integer_Array_1D(Red_Component'range); begin -- Copy constrained color integers to unconstrained integers. - for i in Red_Component'range loop + for i in Red_Component'range loop -- Should use slices PL_Red_Component(i) := Red_Component(i); PL_Green_Component(i) := Green_Component(i); PL_Blue_Component(i) := Blue_Component(i); @@ -2132,6 +2163,24 @@ end Set_Color_Map_1_RGB; + -- Set color map 1 colors by 8 bit RGB values + -- plscmap1a + procedure Set_Color_Map_1_RGB_And_Alpha + (Red_Component, Green_Component, Blue_Component : Integer_0_255_Array; + Alpha : Real_Vector) is + + PL_Red_Component, PL_Green_Component, PL_Blue_Component : Integer_Array_1D(Red_Component'range); + begin + -- Copy constrained color integers to unconstrained integers. + for i in Red_Component'range loop -- Should use slices + PL_Red_Component(i) := Red_Component(i); + PL_Green_Component(i) := Green_Component(i); + PL_Blue_Component(i) := Blue_Component(i); + end loop; + plscmap1a(PL_Red_Component, PL_Green_Component, PL_Blue_Component, Alpha, PL_Red_Component'Length); + end Set_Color_Map_1_RGB_And_Alpha; + + -- Set color map 1 colors using a piece-wise linear relationship between -- intensity [0,1] (cmap 1 index) and position in HLS or RGB color space. -- plscmap1l @@ -2166,6 +2215,42 @@ end Set_Color_Map_1_Piecewise; + -- Set color map 1 colors using a piece-wise linear relationship between + -- intensity [0,1] (cmap 1 index) and position in HLS or RGB color space. + -- Will also linear interpolate alpha values. + -- plscmap1la + procedure Set_Color_Map_1_Piecewise_And_Alpha + (Color_Model : Color_Model_Type; -- HLS or RGB + Control_Points : Real_Vector; -- range 0.0 .. 1.0; not checked here + H_Or_R : Real_Vector; -- range 0.0 .. 1.0; not checked here + L_Or_G : Real_Vector; -- range 0.0 .. 1.0; not checked here + S_Or_B : Real_Vector; -- range 0.0 .. 1.0; not checked here + Alpha : Real_Vector; -- range 0.0 .. 1.0; not checked here + Reverse_Hue : Boolean_Array_1D) is -- False means red<->green<->blue<->red, True reverses + + PL_Color_Model : PLBOOL; + PL_Reverse_Hue : PL_Bool_Array (Reverse_Hue'range); + + begin + if Color_Model = RGB then + PL_Color_Model := PLtrue; + else + PL_Color_Model := PLfalse; + end if; + + for i in Reverse_Hue'range loop + if Reverse_Hue(i) then + PL_Reverse_Hue(i) := PLtrue; + else + PL_Reverse_Hue(i) := PLfalse; + end if; + end loop; + + plscmap1la(PL_Color_Model, Control_Points'Length, Control_Points, H_Or_R, L_Or_G, S_Or_B, Alpha, PL_Reverse_Hue); + end Set_Color_Map_1_Piecewise_And_Alpha; + + + -- Set number of colors in cmap 1 -- plscmap1n procedure Set_Number_Of_Colors_In_Color_Map_1(Number_Of_Colors : Integer) is @@ -2182,8 +2267,19 @@ begin plscol0(Plot_Color, Red_Component, Green_Component, Blue_Component); end Set_One_Color_Map_0; + + -- Set a given color from color map 0 by 8 bit RGB value and alpha value + -- plscol0a + procedure Set_One_Color_Map_0_And_Alpha + (Plot_Color : Plot_Color_Type; + Red_Component, Green_Component, Blue_Component : Integer; + Alpha : Long_Float) is + begin + plscol0a(Plot_Color, Red_Component, Green_Component, Blue_Component, Alpha); + end Set_One_Color_Map_0_And_Alpha; + -- Set the background color by 8 bit RGB value -- plscolbg procedure Set_Background_Color_RGB @@ -2193,6 +2289,16 @@ end Set_Background_Color_RGB; + -- Set the background color by 8 bit RGB value and alpha value + -- plscolbga + procedure Set_Background_Color_RGB_And_Alpha + (Red_Component, Green_Component, Blue_Component : Integer; + Alpha : Long_Float) is + begin + plscolbga(Red_Component, Green_Component, Blue_Component, Alpha); + end Set_Background_Color_RGB_And_Alpha; + + -- Used to globally turn color output on/off -- plscolor procedure Enable_Color_Output(Enable_Color : Boolean) is @@ -2333,7 +2439,7 @@ -- plsfont procedure Set_Font(Family, Style, Weight : Integer) is begin - PLplot_Thin.plsfont(Family, Style, Weight); + plsfont(Family, Style, Weight); end; @@ -2420,7 +2526,7 @@ Mask_Function_Pointer : Mask_Function_Pointer_Type; x_Min, x_Max, y_Min, y_Max : Long_Float; -- world mins and maxes Contour_Levels : Real_Vector; - Fill_Pattern_Pen_Width : Positive; + Fill_Pattern_Pen_Width : Natural; -- 0 is allowed Contour_Pen_Color : Natural; -- 0 for no contours Contour_Pen_Width : Natural; -- 0 for no contours Fill_Procedure_Pointer : Fill_Procedure_Pointer_Type; @@ -2751,6 +2857,14 @@ end Use_Text_Mode; + -- Set the format for date / time labels + -- pltimefmt + procedure Set_Date_Time_Label_Format(Format : String) is + begin + pltimefmt(To_C(Format)); + end Set_Date_Time_Label_Format; + + -- Sets the edges of the viewport with the given aspect ratio, leaving -- room for labels. -- plvasp Modified: trunk/bindings/ada/plplot.ads.cmake =================================================================== --- trunk/bindings/ada/plplot.ads.cmake 2008-06-28 00:55:54 UTC (rev 8501) +++ trunk/bindings/ada/plplot.ads.cmake 2008-07-03 11:29:44 UTC (rev 8502) @@ -127,7 +127,7 @@ Justified_Square_Box : constant Justification_Type := 2; -- Axis styles - subtype Axis_Style_Type is Integer range -2..33; -- Not all values are used. + subtype Axis_Style_Type is Integer range -2..63; -- Not all values are used. No_Box : constant Axis_Style_Type := -2; Box : constant Axis_Style_Type := -1; @@ -152,6 +152,21 @@ Log_XY_Major_Grid : constant Axis_Style_Type := 32; Log_XY_Minor_Grid : constant Axis_Style_Type := 33; + Date_Time_X_Linear_Box_Plus : constant Axis_Style_Type := 40; + Date_Time_X_Linear_Zero_Axes : constant Axis_Style_Type := 41; + Date_Time_X_Linear_Major_Grid : constant Axis_Style_Type := 42; + Date_Time_X_Linear_Minor_Grid : constant Axis_Style_Type := 43; + + Date_Time_Y_Linear_Box_Plus : constant Axis_Style_Type := 50; + Date_Time_Y_Linear_Zero_Axes : constant Axis_Style_Type := 51; + Date_Time_Y_Linear_Major_Grid : constant Axis_Style_Type := 52; + Date_Time_Y_Linear_Minor_Grid : constant Axis_Style_Type := 53; + + Date_Time_XY_Linear_Box_Plus : constant Axis_Style_Type := 60; + Date_Time_XY_Linear_Zero_Axes : constant Axis_Style_Type := 61; + Date_Time_XY_Linear_Major_Grid : constant Axis_Style_Type := 62; + Date_Time_XY_Linear_Minor_Grid : constant Axis_Style_Type := 63; + -- Integer constrained to 0..255 subtype Integer_0_255_Type is Integer range 0 .. 255; type Integer_0_255_Array is array (Integer range <>) of Integer_0_255_Type; @@ -639,7 +654,7 @@ X_Number_Of_Subintervals : Natural := 0; Y_Option_String : String; Y_Major_Tick_Interval : Long_Float; - Y_Number_Of_Subintervals : Natural); + Y_Number_Of_Subintervals : Natural := 0); Auto_Subintervals : Integer := 0; -- Intervals for minor ticks is automatic. @@ -831,12 +846,27 @@ Red_Component, Green_Component, Blue_Component : out Integer); + -- Returns 8 bit RGB values for given color from color map 0 and alpha value + -- plgcol0a + procedure Get_Color_RGB_And_Alpha + (Color_Index : Integer; + Red_Component, Green_Component, Blue_Component : out Integer; + a : out Long_Float); + + -- Returns the background color by 8 bit RGB value -- plgcolbg procedure Get_Background_Color_RGB (Red_Component, Green_Component, Blue_Component : out Integer); + -- Returns the background color by 8 bit RGB value and alpha value + -- plgcolbga + procedure Get_Background_Color_RGB_And_Alpha + (Red_Component, Green_Component, Blue_Component : out Integer; + Alpha : out Real_Vector); + + -- Returns the current compression setting -- plgcompression procedure Get_Compression_Level(Compression_Level : out Integer); @@ -1239,6 +1269,13 @@ procedure Set_Color_Map_0(Red_Components, Green_Components, Blue_Components : Integer_Array_1D); + -- Set color map 0 colors by 8 bit RGB values and alpha values + -- plscmap0a + procedure Set_Color_Map_0_And_Alpha + (Red_Components, Green_Components, Blue_Components : Integer_Array_1D; + Alpha : Real_Vector); + + -- Set number of colors in cmap 0 -- plscmap0n procedure Set_Number_Of_Colors_Map_0(Number_Of_Colors : Integer); @@ -1250,6 +1287,13 @@ (Red_Component, Green_Component, Blue_Component : Integer_0_255_Array); + -- Set color map 1 colors by 8 bit RGB and alpha values + -- plscmap1a + procedure Set_Color_Map_1_RGB_And_Alpha + (Red_Component, Green_Component, Blue_Component : Integer_0_255_Array; + Alpha : Real_Vector); + + -- Types for colors for color map 1. type Color_Model_Type is (HLS, RGB); -- Red, Green, Blue or Hue, Lightness, Saturation @@ -1266,6 +1310,20 @@ Reverse_Hue : Boolean_Array_1D); -- False means red<->green<->blue<->red, True reverses + -- Set color map 1 colors using a piece-wise linear relationship between + -- intensity [0,1] (cmap 1 index) and position in HLS or RGB color space. + -- Will also linear interpolate alpha values. + -- plscmap1la + procedure Set_Color_Map_1_Piecewise_And_Alpha + (Color_Model : Color_Model_Type; -- HLS or RGB + Control_Points : Real_Vector; -- range 0.0 .. 1.0; not checked here + H_Or_R : Real_Vector; -- range 0.0 .. 1.0; not checked here + L_Or_G : Real_Vector; -- range 0.0 .. 1.0; not checked here + S_Or_B : Real_Vector; -- range 0.0 .. 1.0; not checked here + Alpha : Real_Vector; -- range 0.0 .. 1.0; not checked here + Reverse_Hue : Boolean_Array_1D); -- False means red<->green<->blue<->red, True reverses + + -- Set number of colors in cmap 1 -- plscmap1n procedure Set_Number_Of_Colors_In_Color_Map_1(Number_Of_Colors : Integer); @@ -1277,12 +1335,28 @@ (Plot_Color : Plot_Color_Type; Red_Component, Green_Component, Blue_Component : Integer); + + -- Set a given color from color map 0 by 8 bit RGB value and alpha value + -- plscol0a + procedure Set_One_Color_Map_0_And_Alpha + (Plot_Color : Plot_Color_Type; + Red_Component, Green_Component, Blue_Component : Integer; + Alpha : Long_Float); + + -- Set the background color by 8 bit RGB value -- plscolbg procedure Set_Background_Color_RGB (Red_Component, Green_Component, Blue_Component : Integer); + -- Set the background color by 8 bit RGB value and alpha value + -- plscolbga + procedure Set_Background_Color_RGB_And_Alpha + (Red_Component, Green_Component, Blue_Component : Integer; + Alpha : Long_Float); + + -- Used to globally turn color output on/off -- plscolor procedure Enable_Color_Output(Enable_Color : Boolean); @@ -1411,7 +1485,7 @@ Mask_Function_Pointer : Mask_Function_Pointer_Type; x_Min, x_Max, y_Min, y_Max : Long_Float; -- world mins and maxes Contour_Levels : Real_Vector; - Fill_Pattern_Pen_Width : Positive; + Fill_Pattern_Pen_Width : Natural; -- 0 is allowed Contour_Pen_Color : Natural; -- 0 for no contours Contour_Pen_Width : Natural; -- 0 for no contours Fill_Procedure_Pointer : Fill_Procedure_Pointer_Type; @@ -1617,6 +1691,11 @@ procedure Use_Text_Mode; + -- Set the format for date / time labels + -- pltimefmt + procedure Set_Date_Time_Label_Format(Format : String); + + -- Sets the edges of the viewport with the given aspect ratio, leaving -- room for labels. -- plvasp @@ -1640,6 +1719,7 @@ Bottom_Edge : Long_Float := 0.0; Top_Edge : Long_Float := 1.0); + -- Defines a "standard" viewport with seven character heights for -- the left margin and four character heights everywhere else. -- plvsta Modified: trunk/bindings/ada/plplot_thin.ads.cmake =================================================================== --- trunk/bindings/ada/plplot_thin.ads.cmake 2008-06-28 00:55:54 UTC (rev 8501) +++ trunk/bindings/ada/plplot_thin.ads.cmake 2008-07-03 11:29:44 UTC (rev 8502) @@ -58,7 +58,6 @@ PLfalse : constant Integer := 0; PLtrue : constant Integer := 1; subtype PLBOOL is Integer range PLfalse..PLtrue; - --type PLUNICODE is range 0..2**32-1; type PLUNICODE is mod 2**32; subtype PL_Integer_Array is Integer_Array_1D; @@ -666,8 +665,15 @@ procedure plgcol0(icol0 : PLINT; r : out PLINT; g : out PLINT; b : out PLINT); pragma Import(C, plgcol0, "c_plgcol0"); + + + -- Returns 8 bit RGB values for given color from color map 0 and alpha value + procedure + plgcol0a(icol0 : PLINT; r, g, b: out PLINT; a : out PLFLT); + pragma Import(C, plgcol0a, "c_plgcol0a"); + -- Returns the background color by 8 bit RGB value procedure @@ -675,6 +681,13 @@ pragma Import(C, plgcolbg, "c_plgcolbg"); + -- Returns the background color by 8 bit RGB value and alpha value + + procedure + plgcolbga(r, g, b : out PLINT; a : out PL_Float_Array); + pragma Import(C, plgcolbga, "c_plgcolbga"); + + -- Returns the current compression setting procedure @@ -1120,6 +1133,13 @@ pragma Import(C, plscmap0, "c_plscmap0"); + -- Set color map 0 colors by 8 bit RGB values and alpha values + + procedure + plscmap0a(r, g, b : PL_Integer_Array; a : PL_Float_Array; ncol0 : PLINT); + pragma Import(C, plscmap0a, "c_plscmap0a"); + + -- Set number of colors in cmap 0 procedure @@ -1134,6 +1154,13 @@ pragma Import(C, plscmap1, "c_plscmap1"); + -- Set color map 1 colors by 8 bit RGB and alpha values + + procedure + plscmap1a(r, g, b : PL_Integer_Array; a : PL_Float_Array; ncol1 : PLINT); + pragma Import(C, plscmap1a, "c_plscmap1a"); + + -- Set color map 1 colors using a piece-wise linear relationship between -- intensity [0,1] (cmap 1 index) and position in HLS or RGB color space. @@ -1144,6 +1171,17 @@ pragma Import(C, plscmap1l, "c_plscmap1l"); + -- Set color map 1 colors using a piece-wise linear relationship between + -- intensity [0,1] (cmap 1 index) and position in HLS or RGB color space. + -- Will also linear interpolate alpha values. + + procedure + plscmap1la(itype : PLINT; npts : PLINT; + intensity, coord1, coord2, coord3, a : PL_Float_Array; + rev : PL_Bool_Array); + pragma Import(C, plscmap1la, "c_plscmap1la"); + + -- Set number of colors in cmap 1 procedure @@ -1158,6 +1196,13 @@ pragma Import(C, plscol0, "c_plscol0"); + -- Set a given color from color map 0 by 8 bit RGB value and alpha value + + procedure + plscol0a(icol0 : PLINT; r, g, b : PLINT; a : PLFLT); + pragma Import(C, plscol0a, "c_plscol0a"); + + -- Set the background color by 8 bit RGB value procedure @@ -1165,6 +1210,13 @@ pragma Import(C, plscolbg, "c_plscolbg"); + -- Set the background color by 8 bit RGB value and alpha value + + procedure + plscolbga(r, g, b : PLINT; a : PLFLT); + pragma Import(C, plscolbga, "c_plscolbga"); + + -- Used to globally turn color output on/off procedure @@ -1495,8 +1547,16 @@ procedure pltext; pragma Import(C, pltext, "c_pltext"); + + -- Set the format for date / time labels + procedure + pltimefmt(fmt : char_array); + pragma Import(C, pltimefmt, "c_pltimefmt"); + + + -- Sets the edges of the viewport with the given aspect ratio, leaving -- room for labels. Modified: trunk/bindings/ada/plplot_traditional.adb.cmake =================================================================== --- trunk/bindings/ada/plplot_traditional.adb.cmake 2008-06-28 00:55:54 UTC (rev 8501) +++ trunk/bindings/ada/plplot_traditional.adb.cmake 2008-07-03 11:29:44 UTC (rev 8502) @@ -1153,7 +1153,7 @@ X_Number_Of_Subintervals : Natural := 0; Y_Option_String : String; Y_Major_Tick_Interval : Long_Float; - Y_Number_Of_Subintervals : Natural) is + Y_Number_Of_Subintervals : Natural := 0) is begin PLplot_Thin.plbox (To_C(X_Option_String, True), X_Major_Tick_Interval, X_Number_Of_Subintervals, @@ -1427,6 +1427,15 @@ end plgcol0; + -- Returns 8 bit RGB values for given color from color map 0 and alpha value + procedure plgcol0a + (Color_Index : Integer; + Red_Component, Green_Component, Blue_Component : out Integer; + a : out Long_Float) is + begin + PLplot_Thin.plgcol0a(Color_Index, Red_Component, Green_Component, Blue_Component, a); + end plgcol0a; + -- Returns the background color by 8 bit RGB value procedure plgcolbg (Red_Component, Green_Component, Blue_Component : out Integer) is @@ -1435,6 +1444,16 @@ end plgcolbg; + -- Returns the background color by 8 bit RGB value and alpha value + procedure plgcolbga + (Red_Component, Green_Component, Blue_Component : out Integer; + Alpha : out Real_Vector) is + begin + PLplot_Thin.plgcolbga(Red_Component, Green_Component, Blue_Component, + Alpha); + end; + + -- Returns the current compression setting procedure plgcompression(Compression_Level : out Integer) is begin @@ -2019,6 +2038,15 @@ end plscmap0; + -- Set color map 0 colors by 8 bit RGB values and alpha values + procedure plscmap0a + (Red_Components, Green_Components, Blue_Components : Integer_Array_1D; + Alpha : Real_Vector) is + begin + PLplot_Thin.plscmap0a(Red_Components, Green_Components, Blue_Components, Alpha, Red_Components'Length); + end plscmap0a; + + -- Set number of colors in cmap 0 procedure plscmap0n(Number_Of_Colors : Integer) is begin @@ -2033,7 +2061,7 @@ PL_Red_Component, PL_Green_Component, PL_Blue_Component : Integer_Array_1D(Red_Component'range); begin -- Copy constrained color integers to unconstrained integers. - for i in Red_Component'range loop + for i in Red_Component'range loop -- Should use slices PL_Red_Component(i) := Red_Component(i); PL_Green_Component(i) := Green_Component(i); PL_Blue_Component(i) := Blue_Component(i); @@ -2042,6 +2070,23 @@ end plscmap1; + -- Set color map 1 colors by 8 bit RGB values + procedure plscmap1a + (Red_Component, Green_Component, Blue_Component : Integer_0_255_Array; + Alpha : Real_Vector) is + + PL_Red_Component, PL_Green_Component, PL_Blue_Component : Integer_Array_1D(Red_Component'range); + begin + -- Copy constrained color integers to unconstrained integers. + for i in Red_Component'range loop -- Should use slices + PL_Red_Component(i) := Red_Component(i); + PL_Green_Component(i) := Green_Component(i); + PL_Blue_Component(i) := Blue_Component(i); + end loop; + PLplot_Thin.plscmap1a(PL_Red_Component, PL_Green_Component, PL_Blue_Component, Alpha, PL_Red_Component'Length); + end plscmap1a; + + -- Set color map 1 colors using a piece-wise linear relationship between -- intensity [0,1] (cmap 1 index) and position in HLS or RGB color space. procedure plscmap1l @@ -2075,6 +2120,40 @@ end plscmap1l; + -- Set color map 1 colors using a piece-wise linear relationship between + -- intensity [0,1] (cmap 1 index) and position in HLS or RGB color space. + -- Will also linear interpolate alpha values. + procedure plscmap1la + (Color_Model : Color_Model_Type; -- HLS or RGB + Control_Points : Real_Vector; -- range 0.0 .. 1.0; not checked here + H_Or_R : Real_Vector; -- range 0.0 .. 1.0; not checked here + L_Or_G : Real_Vector; -- range 0.0 .. 1.0; not checked here + S_Or_B : Real_Vector; -- range 0.0 .. 1.0; not checked here + Alpha : Real_Vector; -- range 0.0 .. 1.0; not checked here + Reverse_Hue : Boolean_Array_1D) is -- False means red<->green<->blue<->red, True reverses + + PL_Color_Model : PLBOOL; + PL_Reverse_Hue : PL_Bool_Array (Reverse_Hue'range); + + begin + if Color_Model = RGB then + PL_Color_Model := PLtrue; + else + PL_Color_Model := PLfalse; + end if; + + for i in Reverse_Hue'range loop + if Reverse_Hue(i) then + PL_Reverse_Hue(i) := PLtrue; + else + PL_Reverse_Hue(i) := PLfalse; + end if; + end loop; + + PLplot_Thin.plscmap1la(PL_Color_Model, Control_Points'Length, Control_Points, H_Or_R, L_Or_G, S_Or_B, Alpha, PL_Reverse_Hue); + end plscmap1la; + + -- Set number of colors in cmap 1 procedure plscmap1n(Number_Of_Colors : Integer) is begin @@ -2089,8 +2168,18 @@ begin PLplot_Thin.plscol0(Plot_Color, Red_Component, Green_Component, Blue_Component); end plscol0; + + -- Set a given color from color map 0 by 8 bit RGB value and alpha value + procedure plscol0a + (Plot_Color : Plot_Color_Type; + Red_Component, Green_Component, Blue_Component : Integer; + Alpha : Long_Float) is + begin + PLplot_Thin.plscol0a(Plot_Color, Red_Component, Green_Component, Blue_Component, Alpha); + end plscol0a; + -- Set the background color by 8 bit RGB value procedure plscolbg (Red_Component, Green_Component, Blue_Component : Integer) is @@ -2099,6 +2188,15 @@ end plscolbg; + -- Set the background color by 8 bit RGB value and alpha value + procedure plscolbga + (Red_Component, Green_Component, Blue_Component : Integer; + Alpha : Long_Float) is + begin + PLplot_Thin.plscolbga(Red_Component, Green_Component, Blue_Component, Alpha); + end plscolbga; + + -- Used to globally turn color output on/off procedure plscolor(Enable_Color : Boolean) is @@ -2310,7 +2408,7 @@ Mask_Function_Pointer : Mask_Function_Pointer_Type; x_Min, x_Max, y_Min, y_Max : Long_Float; -- world mins and maxes Contour_Levels : Real_Vector; - Fill_Pattern_Pen_Width : Positive; + Fill_Pattern_Pen_Width : Natural; -- 0 is allowed Contour_Pen_Color : Natural; -- 0 for no contours Contour_Pen_Width : Natural; -- 0 for no contours Fill_Procedure_Pointer : Fill_Procedure_Pointer_Type; @@ -2619,6 +2717,13 @@ end pltext; + -- Set the format for date / time labels + procedure pltimefmt(Format : String) is + begin + PLplot_Thin.pltimefmt(To_C(Format)); + end pltimefmt; + + -- Sets the edges of the viewport with the given aspect ratio, leaving -- room for labels. procedure plvasp(Aspect_Ratio : Long_Float) is Modified: trunk/bindings/ada/plplot_traditional.ads.cmake =================================================================== --- trunk/bindings/ada/plplot_traditional.ads.cmake 2008-06-28 00:55:54 UTC (rev 8501) +++ trunk/bindings/ada/plplot_traditional.ads.cmake 2008-07-03 11:29:44 UTC (rev 8502) @@ -129,7 +129,7 @@ Justified_Square_Box : constant Justification_Type := 2; -- Axis styles - subtype Axis_Style_Type is Integer range -2..33; -- Not all values are used. + subtype Axis_Style_Type is Integer range -2..63; -- Not all values are used. No_Box : constant Axis_Style_Type := -2; Box : constant Axis_Style_Type := -1; @@ -154,6 +154,24 @@ Log_XY_Major_Grid : constant Axis_Style_Type := 32; Log_XY_Minor_Grid : constant Axis_Style_Type := 33; + Date_Time_X_Linear_Box_Plus : constant Axis_Style_Type := 40; + Date_Time_X_Linear_Zero_Axes : constant Axis_Style_Type := 41; + Date_Time_X_Linear_Major_Grid : constant Axis_Style_Type := 42; + Date_Time_X_Linear_Minor_Grid : constant Axis_Style_Type := 43; + + Date_Time_Y_Linear_Box_Plus : constant Axis_Style_Type := 50; + Date_Time_Y_Linear_Zero_Axes : constant Axis_Style_Type := 51; + Date_Time_Y_Linear_Major_Grid : constant Axis_Style_Type := 52; + Date_Time_Y_Linear_Minor_Grid : constant Axis_Style_Type := 53; + + Date_Time_XY_Linear_Box_Plus : constant Axis_Style_Type := 60; + Date_Time_XY_Linear_Zero_Axes : constant Axis_Style_Type := 61; + Date_Time_XY_Linear_Major_Grid : constant Axis_Style_Type := 62; + Date_Time_XY_Linear_Minor_Grid : constant Axis_Style_Type := 63; + + + + -- Integer constrained to 0..255 subtype Integer_0_255_Type is Integer range 0 .. 255; type Integer_0_255_Array is array (Integer range <>) of Integer_0_255_Type; @@ -632,7 +650,7 @@ X_Number_Of_Subintervals : Natural := 0; Y_Option_String : String; Y_Major_Tick_Interval : Long_Float; - Y_Number_Of_Subintervals : Natural); + Y_Number_Of_Subintervals : Natural := 0); Auto_Subintervals : Integer := 0; -- Intervals for minor ticks is automatic. @@ -799,11 +817,24 @@ Red_Component, Green_Component, Blue_Component : out Integer); + -- Returns 8 bit RGB values for given color from color map 0 and alpha value + procedure plgcol0a + (Color_Index : Integer; + Red_Component, Green_Component, Blue_Component : out Integer; + a : out Long_Float); + + -- Returns the background color by 8 bit RGB value procedure plgcolbg (Red_Component, Green_Component, Blue_Component : out Integer); + -- Returns the background color by 8 bit RGB value and alpha value + procedure plgcolbga + (Red_Component, Green_Component, Blue_Component : out Integer; + Alpha : out Real_Vector); + + -- Returns the current compression setting procedure plgcompression(Compression_Level : out Integer); @@ -1149,6 +1180,12 @@ procedure plscmap0(Red_Components, Green_Components, Blue_Components : Integer_Array_1D); + -- Set color map 0 colors by 8 bit RGB values and alpha values + procedure plscmap0a + (Red_Components, Green_Components, Blue_Components : Integer_Array_1D; + Alpha : Real_Vector); + + -- Set number of colors in cmap 0 procedure plscmap0n(Number_Of_Colors : Integer); @@ -1158,6 +1195,12 @@ (Red_Component, Green_Component, Blue_Component : Integer_0_255_Array); + -- Set color map 1 colors by 8 bit RGB and alpha values + procedure plscmap1a + (Red_Component, Green_Component, Blue_Component : Integer_0_255_Array; + Alpha : Real_Vector); + + -- Types for colors for color map 1. type Color_Model_Type is (HLS, RGB); -- Red, Green, Blue or Hue, Lightness, Saturation @@ -1173,6 +1216,19 @@ Reverse_Hue : Boolean_Array_1D); -- False means red<->green<->blue<->red, True reverses + -- Set color map 1 colors using a piece-wise linear relationship between + -- intensity [0,1] (cmap 1 index) and position in HLS or RGB color space. + -- Will also linear interpolate alpha values. + procedure plscmap1la + (Color_Model : Color_Model_Type; -- HLS or RGB + Control_Points : Real_Vector; -- range 0.0 .. 1.0; not checked here + H_Or_R : Real_Vector; -- range 0.0 .. 1.0; not checked here + L_Or_G : Real_Vector; -- range 0.0 .. 1.0; not checked here + S_Or_B : Real_Vector; -- range 0.0 .. 1.0; not checked here + Alpha : Real_Vector; -- range 0.0 .. 1.0; not checked here + Reverse_Hue : Boolean_Array_1D); -- False means red<->green<->blue<->red, True reverses + + -- Set number of colors in cmap 1 procedure plscmap1n(Number_Of_Colors : Integer); @@ -1182,11 +1238,25 @@ (Plot_Color : Plot_Color_Type; Red_Component, Green_Component, Blue_Component : Integer); + + -- Set a given color from color map 0 by 8 bit RGB value and alpha value + procedure plscol0a + (Plot_Color : Plot_Color_Type; + Red_Component, Green_Component, Blue_Component : Integer; + Alpha : Long_Float); + + -- Set the background color by 8 bit RGB value procedure plscolbg (Red_Component, Green_Component, Blue_Component : Integer); + -- Set the background color by 8 bit RGB value and alpha value + procedure plscolbga + (Red_Component, Green_Component, Blue_Component : Integer; + Alpha : Long_Float); + + -- Used to globally turn color output on/off procedure plscolor(Enable_Color : Boolean); @@ -1299,7 +1369,7 @@ Mask_Function_Pointer : Mask_Function_Pointer_Type; x_Min, x_Max, y_Min, y_Max : Long_Float; -- world mins and maxes Contour_Levels : Real_Vector; - Fill_Pattern_Pen_Width : Positive; + Fill_Pattern_Pen_Width : Natural; -- 0 is allowed Contour_Pen_Color : Natural; -- 0 for no contours Contour_Pen_Width : Natural; -- 0 for no contours Fill_Procedure_Pointer : Fill_Procedure_Pointer_Type; @@ -1480,6 +1550,10 @@ procedure pltext; + -- Set the format for date / time labels + procedure pltimefmt(Format : String); + + -- Sets the edges of the viewport with the given aspect ratio, leaving -- room for labels. procedure plvasp(Aspect_Ratio : Long_Float); @@ -1500,6 +1574,7 @@ Bottom_Edge : Long_Float := 0.0; Top_Edge : Long_Float := 1.0); + -- Defines a "standard" viewport with seven character heights for -- the left margin and four character heights everywhere else. procedure plvsta; Modified: trunk/examples/ada/CMakeLists.txt =================================================================== --- trunk/examples/ada/CMakeLists.txt 2008-06-28 00:55:54 UTC (rev 8501) +++ trunk/examples/ada/CMakeLists.txt 2008-07-03 11:29:44 UTC (rev 8502) @@ -44,6 +44,8 @@ "26" "27" "28" +"29" +"30" "thick01" "thick02" "thick03" @@ -69,6 +71,8 @@ "thick26" "thick27" "thick28" +"thick29" +"thick30" ) if(BUILD_TEST) Modified: trunk/examples/ada/Makefile.examples.in =================================================================== --- trunk/examples/ada/Makefile.examples.in 2008-06-28 00:55:54 UTC (rev 8501) +++ trunk/examples/ada/Makefile.examples.in 2008-07-03 11:29:44 UTC (rev 8502) @@ -55,6 +55,8 @@ x26a$(EXEEXT) \ x27a$(EXEEXT) \ x28a$(EXEEXT) \ + x29a$(EXEEXT) \ + x30a$(EXEEXT) \ xthick01a$(EXEEXT) \ xthick02a$(EXEEXT) \ xthick03a$(EXEEXT) \ @@ -79,7 +81,9 @@ xthick25a$(EXEEXT) \ xthick26a$(EXEEXT) \ xthick27a$(EXEEXT) \ - xthick28a$(EXEEXT) + xthick28a$(EXEEXT) \ + xthick29a$(EXEEXT) \ + xthick30a$(EXEEXT) all: $(EXECUTABLES_list) Added: trunk/examples/ada/x29a.adb.cmake =================================================================== --- trunk/examples/ada/x29a.adb.cmake (rev 0) +++ trunk/examples/ada/x29a.adb.cmake 2008-07-03 11:29:44 UTC (rev 8502) @@ -0,0 +1,173 @@ +-- $Id$ + +-- Sample plots using date / time formatting for axes + +-- Copyright (C) 2008 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.Numerics, + Ada.Numerics.Long_Elementary_Functions, + PLplot_Traditional, + PLplot_Auxiliary; +use + Ada.Numerics, + Ada.Numerics.Long_Elementary_Functions, + PLplot_Traditional, + PLplot_Auxiliary; + +-- 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; +@Ada_Is_2007_With_and_Use_Numerics@ + +procedure x29a is + -- Plot a model diurnal cycle of temperature + procedure plot1 is + x, y : Real_Vector(0 .. 144); + + -- Data points every 10 minutes for 1 day + xmin, xmax, ymin, ymax : Long_Float; + begin + xmin := 0.0; + xmax := 60.0 * 60.0 * 24.0; -- Number of seconds in a day + ymin := 10.0; + ymax := 20.0; + + for i in x'range loop + x(i) := xmax * Long_Float(i) / Long_Float(x'length); + y(i) := 15.0 - 5.0 * cos( 2.0 * pi * Long_Float(i) / Long_Float(x'length)); + end loop; + + pladv(0); + + plvsta; + plwind(xmin, xmax, ymin, ymax); + + -- Draw a box with ticks spaced every 3 hours in X and 1 degree C in Y. + plcol0(1); + + -- Set time format to be hours:minutes + pltimefmt("%H:%M"); + plbox("bcnstd", 3.0 * 60.0 * 60.0, 3, "bcnstv", 1.0, 5); + + plcol0(3); + pllab("Time (hours:mins)", "Temperature (degC)", "#frPLplot Example 29 - Daily temperature"); + plcol0(4); + plline(x, y); + end plot1; + + + -- Plot the number of hours of daylight as a function of day for a year + procedure plot2 is + xmin, xmax, ymin, ymax : Long_Float; + lat, p, d : Long_Float; + x, y : Real_Vector(0 .. 364); + begin + -- Latitude for London + lat := 51.5; + + xmin := 0.0; + xmax := Long_Float(x'length) * 60.0 * 60.0 * 24.0; + ymin := 0.0; + ymax := 24.0; + + -- Formula for hours of daylight from + -- "A Model Comparison for Daylength as a Function of Latitude and + -- Day of the Year", 1995, Ecological Modelling, 80, pp 87-95. + for j in x'range loop + x(j):= Long_Float(j) * 60.0 * 60.0 * 24.0; + p := arcsin(0.39795 * cos(0.2163108 + 2.0 * arctan(0.9671396 * tan(0.00860 * Long_Float(j-186))))); + d := 24.0 - (24.0 / pi) * + arccos((sin(0.8333 * pi / 180.0) + sin(lat * pi / 180.0) * sin(p)) / + (cos(lat * pi / 180.0) * cos(p))); + y(j):= d; + end loop; + + plcol0(1); + + -- Set time format to be abbreviated month name followed by day of month + pltimefmt("%b %d"); + plenv(xmin, xmax, ymin, ymax, 0, 40); + + plcol0(3); + pllab("Date", "Hours of daylight", "#frPLplot Example 29 - Hours of daylight at 51.5N"); + + plcol0(4); + plline(x, y); + end plot2; + + + procedure plot3 is + xmin, xmax, ymin, ymax : Long_Float; + x, y : Real_Vector(0 .. 61); + begin + -- The C version of this example accesses time.h. Ada's Calendar package + -- would surely work here, but let's just take the same shortcut as + -- in several of the other versions of this example in other languages. + + xmin := 1_133_398_800.0; + + xmax := xmin + Long_Float(x'length) * 60.0 * 60.0 * 24.0; + ymin := 0.0; + ymax := 5.0; + + for i in x'range loop + x(i) := xmin + Long_Float(i) * 60.0 * 60.0 * 24.0; + y(i) := 1.0 + sin(2.0 * pi * Long_Float(i) / 7.0 ) + + exp((Long_Float(Integer'min(i, x'length - i))) / 31.0); + end loop; + + pladv(0); + + plvsta; + plwind(xmin, xmax, ymin, ymax); + + plcol0(1); + + -- Set time format to be ISO 8601 standard YYYY-MM-DD. Note that this is + -- equivalent to %f for C99 compliant implementations of strftime. + pltimefmt("%Y-%m-%d"); + + -- Draw a box with ticks spaced every 14 days in X and 1 hour in Y. + plbox("bcnstd", 14.0 * 24.0 * 60.0 * 60.0, 14, "bcnstv", 1.0, 4); + + plcol0(3); + pllab("Date", "Hours of television watched", "#frPLplot Example 29 - Hours of television watched in Dec 2005 / Jan 2006"); + + plcol0(4); + + plpoin(x, y, 2); + plline(x, y); + + end plot3; + +begin + -- Parse command line arguments + plparseopts(PL_PARSE_FULL); + + -- Initialize plplot + plinit; + + plot1; + plot2; + plot3; + + -- Don't forget to call plend to finish off! + plend; +end x29a; Property changes on: trunk/examples/ada/x29a.adb.cmake ___________________________________________________________________ Name: svn:keywords + Author Date Id Revision Name: svn:eol-style + native Added: trunk/examples/ada/x30a.adb.cmake =================================================================== --- trunk/examples/ada/x30a.adb.cmake (rev 0) +++ trunk/examples/ada/x30a.adb.cmake 2008-07-03 11:29:44 UTC (rev 8502) @@ -0,0 +1,160 @@ +-- $Id$ + +-- Alpha color values demonstration + +-- Copyright (C) 2008 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 + System, + Ada.Numerics, + Ada.Numerics.Long_Elementary_Functions, + PLplot_Traditional, + PLplot_Auxiliary; +use + System, + Ada.Numerics, + Ada.Numerics.Long_Elementary_Functions, + PLplot_Traditional, + PLplot_Auxiliary; + +-- 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; +@Ada_Is_2007_With_and_Use_Numerics@ + +procedure x30a is + red : Integer_Array_1D(0 .. 3) := ( 0, 255, 0, 0); + green : Integer_Array_1D(0 .. 3) := ( 0, 0, 255, 0); + blue : Integer_Array_1D(0 .. 3) := ( 0, 0, 0, 255); + alpha : Real_Vector(0 .. 3) := (1.0, 1.0, 1.0, 1.0); + + px : Real_Vector(0 .. 3) := (0.1, 0.5, 0.5, 0.1); + py : Real_Vector(0 .. 3) := (0.1, 0.1, 0.5, 0.5); + + pos : Real_Vector(0 .. 1) := (0.0, 1.0); + rcoord : Real_Vector(0 .. 1) := (1.0, 1.0); + gcoord : Real_Vector(0 .. 1) := (0.0, 0.0); + bcoord : Real_Vector(0 .. 1) := (0.0, 0.0); + acoord : Real_Vector(0 .. 1) := (0.0, 1.0); + rev : Boolean_Array_1D(0 .. 1) := (False, False); + + icol, r, g, b : Integer; + a : Long_Float; + clevel : Real_Vector(0 .. 100); + z : Real_Matrix(0 .. 1, 0 .. 1); +begin + plparseopts(PL_PARSE_FULL); + plinit; + + plscmap0n(4); + plscmap0a(red, green, blue, alpha); + + -- Page 1: + -- This is a series of red, green and blue rectangles overlaid + -- on each other with gradually increasing transparency. + + -- Set up the window + pladv(0); + plvpor(0.0, 1.0, 0.0, 1.0); + plwind(0.0, 1.0, 0.0, 1.0); + plcol0(0); + plbox("", 1.0, 0, "", 1.0, 0); + + -- Draw the boxes + for i in 0 .. 8 loop + icol := i mod 3 + 1; + + -- Get a color, change its transparency and set it as the current color. + plgcol0a(icol, r, g, b, a); + plscol0a(icol, r, g, b, 1.0 - Long_Float(i) / 9.0); + plcol0(icol); + + -- Draw the rectangle + plfill(px, py); + + -- Shift the rectangles coordinates + for j in px'range loop + px(j) := px(j) + 0.5 / 9.0; + py(j) := py(j) + 0.5 / 9.0; + end loop; + end loop; + + -- Page 2: + -- This is a bunch of boxes colored red, green or blue with a single + -- large (red) box of linearly varying transparency overlaid. The + -- overlaid box is completely transparent at the bottom and completely + -- opaque at the top. + + -- Set up the window + pladv(0); + plvpor(0.1, 0.9, 0.1, 0.9); + plwind(0.0, 1.0, 0.0, 1.0); + + -- Draw the boxes. There are 25 of them drawn on a 5 x 5 grid. + for i in 0 .. 4 loop + -- Set box X position. + px(0) := 0.05 + 0.2 * Long_Float(i); + px(1) := px(0) + 0.1; + px(2) := px(1); + px(3) := px(0); + + -- We don't want the boxes to be transparent, so since we changed + -- the colors transparencies in the first example we have to change + -- the transparencies back to completely opaque. + icol := i mod 3 + 1; + plgcol0a(icol, r, g, b, a); + plscol0a(icol, r, g, b, 1.0); + plcol0(icol); + for j in 0 ..4 loop + -- Set box y position and draw the box. + py(0) := 0.05 + 0.2 * Long_Float(j); + py(1) := py(0); + py(2) := py(0) + 0.1; + py(3) := py(2); + plfill(px, py); + end loop; + end loop; + + -- The overlaid box is drawn using plshades with a color map that is + -- the same color but has a linearly varying transparency. + + -- Create the color map with 128 colors and use plscmap1la to initialize + -- the color values with a linear varying transparency (or alpha). + plscmap1n(128); + plscmap1la(RGB, pos, rcoord, gcoord, bcoord, acoord, rev); + + -- Create a 2 x 2 array that contains the z values (0.0 to 1.0) that will + -- used for the shade plot. plshades will use linear interpolation to + -- calculate the z values of all the intermediate points in this array. + z(0, 0) := 0.0; + z(1, 0) := 0.0; + z(0, 1) := 1.0; + z(1, 1) := 1.0; + + -- Set the color levels array. These levels are also between 0.0 and 1.0 + for i in clevel'range loop + clevel(i) := 0.01 * Long_Float(i); + end loop; + + -- Draw the shade plot with zmin := 0.0, zmax := 1.0 and x and y coordinate + -- ranges such that it fills the entire plotting area. + plshades(z, Null, 0.0, 1.0, 0.0, 1.0, clevel, 0, 0, 2, plfill'access, True, NULL, System.Null_Address); + + plend; +end x30a; Property changes on: trunk/examples/ada/x30a.adb.cmake ___________________________________________________________________ Name: svn:keywords + Author Date Id Revision Name: svn:eol-style + native Added: trunk/examples/ada/xthick29a.adb.cmake =================================================================== --- trunk/examples/ada/xthick29a.adb.cmake (rev 0) +++ trunk/examples/ada/xthick29a.adb.cmake 2008-07-03 11:29:44 UTC (rev 8502) @@ -0,0 +1,173 @@ +-- $Id$ + +-- Sample plots using date / time formatting for axes + +-- Copyright (C) 2008 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.Numerics, + Ada.Numerics.Long_Elementary_Functions, + PLplot, + PLplot_Auxiliary; +use + Ada.Numerics, + Ada.Numerics.Long_Elementary_Functions, + PLplot, + PLplot_Auxiliary; + +-- 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; +@Ada_Is_2007_With_and_Use_Numerics@ + +procedure xthick29a is + -- Plot a model diurnal cycle of temperature + procedure plot1 is + x, y : Real_Vector(0 .. 144); + + -- Data points every 10 minutes for 1 day + xmin, xmax, ymin, ymax : Long_Float; + begin + xmin := 0.0; + xmax := 60.0 * 60.0 * 24.0; -- Number of seconds in a day + ymin := 10.0; + ymax := 20.0; + + for i in x'range loop + x(i) := xmax * Long_Float(i) / Long_Float(x'length); + y(i) := 15.0 - 5.0 * cos( 2.0 * pi * Long_Float(i) / Long_Float(x'length)); + end loop; + + Advance_To_Subpage(Next_Subpage); + + Set_Viewport_Standard; + Set_Viewport_World(xmin, xmax, ymin, ymax); + + -- Draw a box with ticks spaced every 3 hours in X and 1 degree C in Y. + Set_Pen_Color(Red); + + -- Set time format to be hours:minutes + Set_Date_Time_Label_Format("%H:%M"); + Box_Around_Viewport("bcnstd", 3.0 * 60.0 * 60.0, 3, "bcnstv", 1.0, 5); + + Set_Pen_Color(Green); + Write_Labels("Time (hours:mins)", "Temperature (degC)", "#frPLplot Example 29 - Daily temperature"); + Set_Pen_Color(Aquamarine); + Draw_Curve(x, y); + end plot1; + + + -- Plot the number of hours of daylight as a function of day for a year + procedure plot2 is + xmin, xmax, ymin, ymax : Long_Float; + lat, p, d : Long_Float; + x, y : Real_Vector(0 .. 364); + begin + -- Latitude for London + lat := 51.5; + + xmin := 0.0; + xmax := Long_Float(x'length) * 60.0 * 60.0 * 24.0; + ymin := 0.0; + ymax := 24.0; + + -- Formula for hours of daylight from + -- "A Model Comparison for Daylength as a Function of Latitude and + -- Day of the Year", 1995, Ecological Modelling, 80, pp 87-95. + for j in x'range loop + x(j):= Long_Float(j) * 60.0 * 60.0 * 24.0; + p := arcsin(0.39795 * cos(0.2163108 + 2.0 * arctan(0.9671396 * tan(0.00860 * Long_Float(j-186))))); + d := 24.0 - (24.0 / pi) * + arccos((sin(0.8333 * pi / 180.0) + sin(lat * pi / 180.0) * sin(p)) / + (cos(lat * pi / 180.0) * cos(p))); + y(j):= d; + end loop; + + Set_Pen_Color(Red); + + -- Set time format to be abbreviated month name followed by day of month + Set_Date_Time_Label_Format("%b %d"); + Set_Environment(xmin, xmax, ymin, ymax, 0, 40); + + Set_Pen_Color(Green); + Write_Labels("Date", "Hours of daylight", "#frPLplot Example 29 - Hours of daylight at 51.5N"); + + Set_Pen_Color(Aquamarine); + Draw_Curve(x, y); + end plot2; + + + procedure plot3 is + xmin, xmax, ymin, ymax : Long_Float; + x, y : Real_Vector(0 .. 61); + begin + -- The C version of this example accesses time.h. Ada's Calendar package + -- would surely work here, but let's just take the same shortcut as + -- in several of the other versions of this example in other languages. + + xmin := 1_133_398_800.0; + + xmax := xmin + Long_Float(x'length) * 60.0 * 60.0 * 24.0; + ymin := 0.0; + ymax := 5.0; + + for i in x'range loop + x(i) := xmin + Long_Float(i) * 60.0 * 60.0 * 24.0; + y(i) := 1.0 + sin(2.0 * pi * Long_Float(i) / 7.0 ) + + exp((Long_Float(Integer'min(i, x'length - i))) / 31.0); + end loop; + + Advance_To_Subpage(Next_Subpage); + + Set_Viewport_Standard; + Set_Viewport_World(xmin, xmax, ymin, ymax); + + Set_Pen_Color(Red); + + -- Set time format to be ISO 8601 standard YYYY-MM-DD. Note that this is + -- equivalent to %f for C99 compliant implementations of strftime. + Set_Date_Time_Label_Format("%Y-%m-%d"); + + -- Draw a box with ticks spaced every 14 days in X and 1 hour in Y. + Box_Around_Viewport("bcnstd", 14.0 * 24.0 * 60.0 * 60.0, 14, "bcnstv", 1.0, 4); + + Set_Pen_Color(Green); + Write_Labels("Date", "Hours of television watched", "#frPLplot Example 29 - Hours of television watched in Dec 2005 / Jan 2006"); + + Set_Pen_Color(Aquamarine); + + Draw_Points(x, y, 2); + Draw_Curve(x, y); + + end plot3; + +begin + -- Parse command line arguments + Parse_Command_Line_Arguments(Parse_Full); + + -- Initialize plplot + Initialize_PLplot; + + plot1; + plot2; + plot3; + + -- Don't forget to call End_PLplot to finish off! + End_PLplot; +end xthick29a; Property changes on: trunk/examples/ada/xthick29a.adb.cmake ___________________________________________________________________ Name: svn:keywords + Author Date Id Revision Name: svn:eol-style + native Added: trunk/examples/ada/xthick30a.adb.cmake =================================================================== --- trunk/examples/ada/xthick30a.adb.cmake (rev 0) +++ trunk/examples/ada/xthick30a.adb.cmake 2008-07-03 11:29:44 UTC (rev 8502) @@ -0,0 +1,160 @@ +-- $Id$ + +-- Alpha color values demonstration + +-- Copyright (C) 2008 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 + System, + Ada.Numerics, + Ada.Numerics.Long_Elementary_Functions, + PLplot, + PLplot_Auxiliary; +use + System, + Ada.Numerics, + Ada.Numerics.Long_Elementary_Functions, + PLplot, + PLplot_Auxiliary; + +-- 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; +@Ada_Is_2007_With_and_Use_Numerics@ + +procedure xthick30a is + red : Integer_Array_1D(0 .. 3) := ( 0, 255, 0, 0); + green : Integer_Array_1D(0 .. 3) := ( 0, 0, 255, 0); + blue : Integer_Array_1D(0 .. 3) := ( 0, 0, 0, 255); + alpha : Real_Vector(0 .. 3) := (1.0, 1.0, 1.0, 1.0); + + px : Real_Vector(0 .. 3) := (0.1, 0.5, 0.5, 0.1); + py : Real_Vector(0 .. 3) := (0.1, 0.1, 0.5, 0.5); + + pos : Real_Vector(0 .. 1) := (0.0, 1.0); + rcoord : Real_Vector(0 .. 1) := (1.0, 1.0); + gcoord : Real_Vector(0 .. 1) := (0.0, 0.0); + bcoord : Real_Vector(0 .. 1) := (0.0, 0.0); + acoord : Real_Vector(0 .. 1) := (0.0, 1.0); + rev : Boolean_Array_1D(0 .. 1) := (False, False); + + icol, r, g, b : Integer; + a : Long_Float; + clevel : Real_Vector(0 .. 100); + z : Real_Matrix(0 .. 1, 0 .. 1); +begin + Parse_Command_Line_Arguments(Parse_Full); + Initialize_PLplot; + + Set_Number_Of_Colors_Map_0(4); + Set_Color_Map_0_And_Alpha(red, green, blue, alpha); + + -- Page 1: + -- This is a series of red, green and blue rectangles overlaid + -- on each other with gradually increasing transparency. + + -- Set up the window + Advance_To_Subpage(Next_Subpage); + Set_Viewport_Normalized(0.0, 1.0, 0.0, 1.0); + Set_Viewport_World(0.0, 1.0, 0.0, 1.0); + Set_Pen_Color(Black); + Box_Around_Viewport("", 1.0, 0, "", 1.0, 0); + + -- Draw the boxes + for i in 0 .. 8 loop + icol := i mod 3 + 1; + + -- Get a color, change its transparency and set it as the current color. + Get_Color_RGB_And_Alpha(icol, r, g, b, a); + Set_One_Color_Map_0_And_Alpha(icol, r, g, b, 1.0 - Long_Float(i) / 9.0); + Set_Pen_Color(icol); + + -- Draw the rectangle + Fill_Polygon(px, py); + + -- Shift the rectangles coordinates + for j in px'range loop + px(j) := px(j) + 0.5 / 9.0; + py(j) := py(j) + 0.5 / 9.0; + end loop; + end loop; + + -- Page 2: + -- This is a bunch of boxes colored red, green or blue with a single + -- large (red) box of linearly varying transparency overlaid. The + -- overlaid box is completely transparent at the bottom and completely + -- opaque at the top. + + -- Set up the window + Advance_To_Subpage(Next_Subpage); + Set_Viewport_Normalized(0.1, 0.9, 0.1, 0.9); + Set_Viewport_World(0.0, 1.0, 0.0, 1.0); + + -- Draw the boxes. There are 25 of them drawn on a 5 x 5 grid. + for i in 0 .. 4 loop + -- Set box X position. + px(0) := 0.05 + 0.2 * Long_Float(i); + px(1) := px(0) + 0.1; + px(2) := px(1); + px(3) := px(0); + + -- We don't want the boxes to be transparent, so since we changed + -- the colors transparencies in the first example we have to change + -- the transparencies back to completely opaque. + icol := i mod 3 + 1; + Get_Color_RGB_And_Alpha(icol, r, g, b, a); + Set_One_Color_Map_0_And_Alpha(icol, r, g, b, 1.0); + Set_Pen_Color(icol); + for j in 0 ..4 loop + -- Set box y position and draw the box. + py(0) := 0.05 + 0.2 * Long_Float(j); + py(1) := py(0); + py(2) := py(0) + 0.1; + py(3) := py(2); + Fill_Polygon(px, py); + end loop; + end loop; + + -- The overlaid box is drawn using Shade_Regions with a color map that is + -- the same color but has a linearly varying transparency. + + -- Create the color map with 128 colors and use Set_Color_Map_1_RGBla to initialize + -- th... [truncated message content] |
From: <jb...@us...> - 2008-07-04 10:53:10
|
Revision: 8503 http://plplot.svn.sourceforge.net/plplot/?rev=8503&view=rev Author: jbauck Date: 2008-07-04 03:53:18 -0700 (Fri, 04 Jul 2008) Log Message: ----------- In x02a.adb and xthick02a.adb, replaced three instances of 0.4999999 with 0.499999999999999; now agree with C version at Postscript level. And some tweaks: * Changed one instance of argument "a" to "Alpha" in plplot.ads, plplot.adb. * Corrected error in type of final argument to plgcolbga and thick corollary. * Removed several unnecessary "with" and "use" of Ada.Text_IO. * Constrained the range of Alpha (translucency) variables to 0.0 .. 1.0. However, when multiple alpha values are passed in a array as in e.g. plscmap1a, they are currently left unchecked (that is, array elements can be any Long_Float value). (The same situation exists with several instances of Hue, Saturation, and Lightness components.) Modified Paths: -------------- trunk/bindings/ada/plplot.adb.cmake trunk/bindings/ada/plplot.ads.cmake trunk/bindings/ada/plplot_thin.ads.cmake trunk/bindings/ada/plplot_traditional.adb.cmake trunk/bindings/ada/plplot_traditional.ads.cmake trunk/examples/ada/x02a.adb.cmake trunk/examples/ada/x10a.adb.cmake trunk/examples/ada/x12a.adb.cmake trunk/examples/ada/x21a.adb.cmake trunk/examples/ada/xthick02a.adb.cmake trunk/examples/ada/xthick09a.adb.cmake trunk/examples/ada/xthick10a.adb.cmake trunk/examples/ada/xthick12a.adb.cmake trunk/examples/ada/xthick21a.adb.cmake Modified: trunk/bindings/ada/plplot.adb.cmake =================================================================== --- trunk/bindings/ada/plplot.adb.cmake 2008-07-03 11:29:44 UTC (rev 8502) +++ trunk/bindings/ada/plplot.adb.cmake 2008-07-04 10:53:18 UTC (rev 8503) @@ -582,10 +582,10 @@ procedure Simple_Mesh_3D (x, y : Real_Vector; -- data definition points z : Real_Matrix; -- z(x, y) = z(x(i), y(j)) - x_Min : Long_Float := 0.0; -- user coordinate limits - x_Max : Long_Float := 0.0; - y_Min : Long_Float := 0.0; - y_Max : Long_Float := 0.0; + x_Min : Long_Float := 0.0; -- user coordinate limits + x_Max : Long_Float := 0.0; -- If x_Min = x_Max = 0.0 then plot + y_Min : Long_Float := 0.0; -- x-limits are found automatically. + y_Max : Long_Float := 0.0; -- Ditto y_Min and y_Max. Altitude : Long_Float := 30.0; -- viewing elevation angle in degrees Azimuth : Long_Float := 30.0; -- viewing azimuth in degrees X_Label : String := "x"; @@ -631,10 +631,10 @@ procedure Simple_Surface_3D (x, y : Real_Vector; -- data definition points z : Real_Matrix; -- z(x, y) = z(x(i), y(j)) - x_Min : Long_Float := 0.0; -- user coordinate limits - x_Max : Long_Float := 0.0; - y_Min : Long_Float := 0.0; - y_Max : Long_Float := 0.0; + x_Min : Long_Float := 0.0; -- user coordinate limits + x_Max : Long_Float := 0.0; -- If x_Min = x_Max = 0.0 then plot + y_Min : Long_Float := 0.0; -- x-limits are found automatically. + y_Max : Long_Float := 0.0; -- Ditto y_Min and y_Max. Altitude : Long_Float := 30.0; -- viewing elevation angle in degrees Azimuth : Long_Float := 30.0; -- viewing azimuth in degrees X_Label : String := "x"; @@ -1462,9 +1462,9 @@ procedure Get_Color_RGB_And_Alpha (Color_Index : Integer; Red_Component, Green_Component, Blue_Component : out Integer; - a : out Long_Float) is + Alpha : out Long_Float_0_1_Type) is begin - plgcol0a(Color_Index, Red_Component, Green_Component, Blue_Component, a); + plgcol0a(Color_Index, Red_Component, Green_Component, Blue_Component, Alpha); end Get_Color_RGB_And_Alpha; -- Returns the background color by 8 bit RGB value @@ -1480,7 +1480,7 @@ -- plgcolbga procedure Get_Background_Color_RGB_And_Alpha (Red_Component, Green_Component, Blue_Component : out Integer; - Alpha : out Real_Vector) is + Alpha : out Long_Float_0_1_Type) is begin plgcolbga(Red_Component, Green_Component, Blue_Component, Alpha); @@ -2080,7 +2080,7 @@ end Replot; - -- Set line color by red, green, blue from 0. to 1. + -- Set line color by red, green, blue from 0.0 to 1.0 -- plrgb procedure Set_Line_Color_RGB_0_1(Red_Component, Blue_Component, Green_Component : Long_Float_0_1_Type) is begin @@ -2274,7 +2274,7 @@ procedure Set_One_Color_Map_0_And_Alpha (Plot_Color : Plot_Color_Type; Red_Component, Green_Component, Blue_Component : Integer; - Alpha : Long_Float) is + Alpha : Long_Float_0_1_Type) is begin plscol0a(Plot_Color, Red_Component, Green_Component, Blue_Component, Alpha); end Set_One_Color_Map_0_And_Alpha; @@ -2293,7 +2293,7 @@ -- plscolbga procedure Set_Background_Color_RGB_And_Alpha (Red_Component, Green_Component, Blue_Component : Integer; - Alpha : Long_Float) is + Alpha : Long_Float_0_1_Type) is begin plscolbga(Red_Component, Green_Component, Blue_Component, Alpha); end Set_Background_Color_RGB_And_Alpha; Modified: trunk/bindings/ada/plplot.ads.cmake =================================================================== --- trunk/bindings/ada/plplot.ads.cmake 2008-07-03 11:29:44 UTC (rev 8502) +++ trunk/bindings/ada/plplot.ads.cmake 2008-07-04 10:53:18 UTC (rev 8503) @@ -449,10 +449,10 @@ procedure Simple_Mesh_3D (x, y : Real_Vector; -- data definition points z : Real_Matrix; -- z(x, y) = z(x(i), y(j)) - x_Min : Long_Float := 0.0; -- user coordinate limits - x_Max : Long_Float := 0.0; - y_Min : Long_Float := 0.0; - y_Max : Long_Float := 0.0; + x_Min : Long_Float := 0.0; -- user coordinate limits + x_Max : Long_Float := 0.0; -- If x_Min = x_Max = 0.0 then plot + y_Min : Long_Float := 0.0; -- x-limits are found automatically. + y_Max : Long_Float := 0.0; -- Ditto y_Min and y_Max. Altitude : Long_Float := 30.0; -- viewing elevation angle in degrees Azimuth : Long_Float := 30.0; -- viewing azimuth in degrees X_Label : String := "x"; @@ -465,10 +465,10 @@ procedure Simple_Surface_3D (x, y : Real_Vector; -- data definition points z : Real_Matrix; -- z(x, y) = z(x(i), y(j)) - x_Min : Long_Float := 0.0; -- user coordinate limits - x_Max : Long_Float := 0.0; - y_Min : Long_Float := 0.0; - y_Max : Long_Float := 0.0; + x_Min : Long_Float := 0.0; -- user coordinate limits + x_Max : Long_Float := 0.0; -- If x_Min = x_Max = 0.0 then plot + y_Min : Long_Float := 0.0; -- x-limits are found automatically. + y_Max : Long_Float := 0.0; -- Ditto y_Min and y_Max. Altitude : Long_Float := 30.0; -- viewing elevation angle in degrees Azimuth : Long_Float := 30.0; -- viewing azimuth in degrees X_Label : String := "x"; @@ -851,7 +851,7 @@ procedure Get_Color_RGB_And_Alpha (Color_Index : Integer; Red_Component, Green_Component, Blue_Component : out Integer; - a : out Long_Float); + Alpha : out Long_Float_0_1_Type); -- Returns the background color by 8 bit RGB value @@ -864,7 +864,7 @@ -- plgcolbga procedure Get_Background_Color_RGB_And_Alpha (Red_Component, Green_Component, Blue_Component : out Integer; - Alpha : out Real_Vector); + Alpha : out Long_Float_0_1_Type); -- Returns the current compression setting @@ -1236,7 +1236,7 @@ procedure Replot; - -- Set line color by red, green, blue from 0. to 1. + -- Set line color by red, green, blue from 0.0 to 1.0 -- plrgb procedure Set_Line_Color_RGB_0_1(Red_Component, Blue_Component, Green_Component : Long_Float_0_1_Type); @@ -1341,7 +1341,7 @@ procedure Set_One_Color_Map_0_And_Alpha (Plot_Color : Plot_Color_Type; Red_Component, Green_Component, Blue_Component : Integer; - Alpha : Long_Float); + Alpha : Long_Float_0_1_Type); -- Set the background color by 8 bit RGB value @@ -1354,7 +1354,7 @@ -- plscolbga procedure Set_Background_Color_RGB_And_Alpha (Red_Component, Green_Component, Blue_Component : Integer; - Alpha : Long_Float); + Alpha : Long_Float_0_1_Type); -- Used to globally turn color output on/off Modified: trunk/bindings/ada/plplot_thin.ads.cmake =================================================================== --- trunk/bindings/ada/plplot_thin.ads.cmake 2008-07-03 11:29:44 UTC (rev 8502) +++ trunk/bindings/ada/plplot_thin.ads.cmake 2008-07-04 10:53:18 UTC (rev 8503) @@ -684,7 +684,7 @@ -- Returns the background color by 8 bit RGB value and alpha value procedure - plgcolbga(r, g, b : out PLINT; a : out PL_Float_Array); + plgcolbga(r, g, b : out PLINT; a : out PLFLT); pragma Import(C, plgcolbga, "c_plgcolbga"); Modified: trunk/bindings/ada/plplot_traditional.adb.cmake =================================================================== --- trunk/bindings/ada/plplot_traditional.adb.cmake 2008-07-03 11:29:44 UTC (rev 8502) +++ trunk/bindings/ada/plplot_traditional.adb.cmake 2008-07-04 10:53:18 UTC (rev 8503) @@ -586,10 +586,10 @@ procedure Simple_Mesh_3D (x, y : Real_Vector; -- data definition points z : Real_Matrix; -- z(x, y) = z(x(i), y(j)) - x_Min : Long_Float := 0.0; -- user coordinate limits - x_Max : Long_Float := 0.0; - y_Min : Long_Float := 0.0; - y_Max : Long_Float := 0.0; + x_Min : Long_Float := 0.0; -- user coordinate limits + x_Max : Long_Float := 0.0; -- If x_Min = x_Max = 0.0 then plot + y_Min : Long_Float := 0.0; -- x-limits are found automatically. + y_Max : Long_Float := 0.0; -- Ditto y_Min and y_Max. Altitude : Long_Float := 30.0; -- viewing elevation angle in degrees Azimuth : Long_Float := 30.0; -- viewing azimuth in degrees X_Label : String := "x"; @@ -635,10 +635,10 @@ procedure Simple_Surface_3D (x, y : Real_Vector; -- data definition points z : Real_Matrix; -- z(x, y) = z(x(i), y(j)) - x_Min : Long_Float := 0.0; -- user coordinate limits - x_Max : Long_Float := 0.0; - y_Min : Long_Float := 0.0; - y_Max : Long_Float := 0.0; + x_Min : Long_Float := 0.0; -- user coordinate limits; + x_Max : Long_Float := 0.0; -- If x_Min = x_Max = 0.0 then plot + y_Min : Long_Float := 0.0; -- x-limits are found automatically. + y_Max : Long_Float := 0.0; -- Ditto y_Min and y_Max. Altitude : Long_Float := 30.0; -- viewing elevation angle in degrees Azimuth : Long_Float := 30.0; -- viewing azimuth in degrees X_Label : String := "x"; @@ -1431,9 +1431,9 @@ procedure plgcol0a (Color_Index : Integer; Red_Component, Green_Component, Blue_Component : out Integer; - a : out Long_Float) is + Alpha : out Long_Float_0_1_Type) is begin - PLplot_Thin.plgcol0a(Color_Index, Red_Component, Green_Component, Blue_Component, a); + PLplot_Thin.plgcol0a(Color_Index, Red_Component, Green_Component, Blue_Component, Alpha); end plgcol0a; -- Returns the background color by 8 bit RGB value @@ -1447,7 +1447,7 @@ -- Returns the background color by 8 bit RGB value and alpha value procedure plgcolbga (Red_Component, Green_Component, Blue_Component : out Integer; - Alpha : out Real_Vector) is + Alpha : out Long_Float_0_1_Type) is begin PLplot_Thin.plgcolbga(Red_Component, Green_Component, Blue_Component, Alpha); @@ -1997,7 +1997,7 @@ end plreplot; - -- Set line color by red, green, blue from 0. to 1. + -- Set line color by red, green, blue from 0.0 to 1.0 procedure plrgb(Red_Component, Blue_Component, Green_Component : Long_Float_0_1_Type) is begin PLplot_Thin.plrgb(Red_Component, Blue_Component, Green_Component); @@ -2174,7 +2174,7 @@ procedure plscol0a (Plot_Color : Plot_Color_Type; Red_Component, Green_Component, Blue_Component : Integer; - Alpha : Long_Float) is + Alpha : Long_Float_0_1_Type) is begin PLplot_Thin.plscol0a(Plot_Color, Red_Component, Green_Component, Blue_Component, Alpha); end plscol0a; @@ -2191,7 +2191,7 @@ -- Set the background color by 8 bit RGB value and alpha value procedure plscolbga (Red_Component, Green_Component, Blue_Component : Integer; - Alpha : Long_Float) is + Alpha : Long_Float_0_1_Type) is begin PLplot_Thin.plscolbga(Red_Component, Green_Component, Blue_Component, Alpha); end plscolbga; Modified: trunk/bindings/ada/plplot_traditional.ads.cmake =================================================================== --- trunk/bindings/ada/plplot_traditional.ads.cmake 2008-07-03 11:29:44 UTC (rev 8502) +++ trunk/bindings/ada/plplot_traditional.ads.cmake 2008-07-04 10:53:18 UTC (rev 8503) @@ -168,10 +168,7 @@ Date_Time_XY_Linear_Zero_Axes : constant Axis_Style_Type := 61; Date_Time_XY_Linear_Major_Grid : constant Axis_Style_Type := 62; Date_Time_XY_Linear_Minor_Grid : constant Axis_Style_Type := 63; - - - -- Integer constrained to 0..255 subtype Integer_0_255_Type is Integer range 0 .. 255; type Integer_0_255_Array is array (Integer range <>) of Integer_0_255_Type; @@ -454,10 +451,10 @@ procedure Simple_Mesh_3D (x, y : Real_Vector; -- data definition points z : Real_Matrix; -- z(x, y) = z(x(i), y(j)) - x_Min : Long_Float := 0.0; -- user coordinate limits - x_Max : Long_Float := 0.0; - y_Min : Long_Float := 0.0; - y_Max : Long_Float := 0.0; + x_Min : Long_Float := 0.0; -- user coordinate limits + x_Max : Long_Float := 0.0; -- If x_Min = x_Max = 0.0 then plot + y_Min : Long_Float := 0.0; -- x-limits are found automatically. + y_Max : Long_Float := 0.0; -- Ditto y_Min and y_Max. Altitude : Long_Float := 30.0; -- viewing elevation angle in degrees Azimuth : Long_Float := 30.0; -- viewing azimuth in degrees X_Label : String := "x"; @@ -470,10 +467,10 @@ procedure Simple_Surface_3D (x, y : Real_Vector; -- data definition points z : Real_Matrix; -- z(x, y) = z(x(i), y(j)) - x_Min : Long_Float := 0.0; -- user coordinate limits - x_Max : Long_Float := 0.0; - y_Min : Long_Float := 0.0; - y_Max : Long_Float := 0.0; + x_Min : Long_Float := 0.0; -- user coordinate limits + x_Max : Long_Float := 0.0; -- If x_Min = x_Max = 0.0 then plot + y_Min : Long_Float := 0.0; -- x-limits are found automatically. + y_Max : Long_Float := 0.0; -- Ditto y_Min and y_Max. Altitude : Long_Float := 30.0; -- viewing elevation angle in degrees Azimuth : Long_Float := 30.0; -- viewing azimuth in degrees X_Label : String := "x"; @@ -821,7 +818,7 @@ procedure plgcol0a (Color_Index : Integer; Red_Component, Green_Component, Blue_Component : out Integer; - a : out Long_Float); + Alpha : out Long_Float_0_1_Type); -- Returns the background color by 8 bit RGB value @@ -832,7 +829,7 @@ -- Returns the background color by 8 bit RGB value and alpha value procedure plgcolbga (Red_Component, Green_Component, Blue_Component : out Integer; - Alpha : out Real_Vector); + Alpha : out Long_Float_0_1_Type); -- Returns the current compression setting @@ -1152,7 +1149,7 @@ procedure plreplot; - -- Set line color by red, green, blue from 0. to 1. + -- Set line color by red, green, blue from 0.0 to 1.0 procedure plrgb(Red_Component, Blue_Component, Green_Component : Long_Float_0_1_Type); @@ -1243,7 +1240,7 @@ procedure plscol0a (Plot_Color : Plot_Color_Type; Red_Component, Green_Component, Blue_Component : Integer; - Alpha : Long_Float); + Alpha : Long_Float_0_1_Type); -- Set the background color by 8 bit RGB value @@ -1254,7 +1251,7 @@ -- Set the background color by 8 bit RGB value and alpha value procedure plscolbga (Red_Component, Green_Component, Blue_Component : Integer; - Alpha : Long_Float); + Alpha : Long_Float_0_1_Type); -- Used to globally turn color output on/off Modified: trunk/examples/ada/x02a.adb.cmake =================================================================== --- trunk/examples/ada/x02a.adb.cmake 2008-07-03 11:29:44 UTC (rev 8502) +++ trunk/examples/ada/x02a.adb.cmake 2008-07-04 10:53:18 UTC (rev 8503) @@ -136,9 +136,9 @@ -- approximately like C to match that example. -0.5 produces -- at least one -1 result (rather than zero) so we subtract -- something with a slightly smaller absolute value. - r(i+16) := Integer((r1 * 255.0)-0.4999999); - g(i+16) := Integer((g1 * 255.0)-0.4999999); - b(i+16) := Integer((b1 * 255.0)-0.4999999); + r(i+16) := Integer((r1 * 255.0) - 0.499999999999999); + g(i+16) := Integer((g1 * 255.0) - 0.499999999999999); + b(i+16) := Integer((b1 * 255.0) - 0.499999999999999); end loop; -- Load default cmap0 colors into our custom set. Modified: trunk/examples/ada/x10a.adb.cmake =================================================================== --- trunk/examples/ada/x10a.adb.cmake 2008-07-03 11:29:44 UTC (rev 8502) +++ trunk/examples/ada/x10a.adb.cmake 2008-07-04 10:53:18 UTC (rev 8503) @@ -21,13 +21,11 @@ -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA with - Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, PLplot_Traditional, PLplot_Auxiliary; use - Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, PLplot_Traditional, Modified: trunk/examples/ada/x12a.adb.cmake =================================================================== --- trunk/examples/ada/x12a.adb.cmake 2008-07-03 11:29:44 UTC (rev 8502) +++ trunk/examples/ada/x12a.adb.cmake 2008-07-04 10:53:18 UTC (rev 8503) @@ -21,7 +21,6 @@ -- 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, @@ -30,7 +29,6 @@ PLplot_Auxiliary; use - Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Modified: trunk/examples/ada/x21a.adb.cmake =================================================================== --- trunk/examples/ada/x21a.adb.cmake 2008-07-03 11:29:44 UTC (rev 8502) +++ trunk/examples/ada/x21a.adb.cmake 2008-07-04 10:53:18 UTC (rev 8503) @@ -30,7 +30,6 @@ -- Approximation plots. with - Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Numerics.Float_Random, @@ -42,7 +41,6 @@ PLplot_Traditional, PLplot_Auxiliary; use - Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Numerics.Float_Random, Modified: trunk/examples/ada/xthick02a.adb.cmake =================================================================== --- trunk/examples/ada/xthick02a.adb.cmake 2008-07-03 11:29:44 UTC (rev 8502) +++ trunk/examples/ada/xthick02a.adb.cmake 2008-07-04 10:53:18 UTC (rev 8503) @@ -136,9 +136,9 @@ -- approximately like C to match that example. -0.5 produces -- at least one -1 result (rather than zero) so we subtract -- something with a slightly smaller absolute value. - r(i+16) := Integer((r1 * 255.0)-0.4999999); - g(i+16) := Integer((g1 * 255.0)-0.4999999); - b(i+16) := Integer((b1 * 255.0)-0.4999999); + r(i+16) := Integer((r1 * 255.0) - 0.499999999999999); + g(i+16) := Integer((g1 * 255.0) - 0.499999999999999); + b(i+16) := Integer((b1 * 255.0) - 0.499999999999999); end loop; -- Load default cmap0 colors into our custom set. Modified: trunk/examples/ada/xthick09a.adb.cmake =================================================================== --- trunk/examples/ada/xthick09a.adb.cmake 2008-07-03 11:29:44 UTC (rev 8502) +++ trunk/examples/ada/xthick09a.adb.cmake 2008-07-04 10:53:18 UTC (rev 8503) @@ -22,13 +22,11 @@ with System, - Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, PLplot, PLplot_Auxiliary; use - Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, System, Modified: trunk/examples/ada/xthick10a.adb.cmake =================================================================== --- trunk/examples/ada/xthick10a.adb.cmake 2008-07-03 11:29:44 UTC (rev 8502) +++ trunk/examples/ada/xthick10a.adb.cmake 2008-07-04 10:53:18 UTC (rev 8503) @@ -21,12 +21,10 @@ -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA with - Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, PLplot; use - Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, PLplot; Modified: trunk/examples/ada/xthick12a.adb.cmake =================================================================== --- trunk/examples/ada/xthick12a.adb.cmake 2008-07-03 11:29:44 UTC (rev 8502) +++ trunk/examples/ada/xthick12a.adb.cmake 2008-07-04 10:53:18 UTC (rev 8503) @@ -21,7 +21,6 @@ -- 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, @@ -29,7 +28,6 @@ PLplot_Auxiliary, PLplot; use - Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Modified: trunk/examples/ada/xthick21a.adb.cmake =================================================================== --- trunk/examples/ada/xthick21a.adb.cmake 2008-07-03 11:29:44 UTC (rev 8502) +++ trunk/examples/ada/xthick21a.adb.cmake 2008-07-04 10:53:18 UTC (rev 8503) @@ -30,7 +30,6 @@ -- Approximation plots. with - Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Numerics.Float_Random, @@ -42,7 +41,6 @@ PLplot, PLplot_Auxiliary; use - Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Numerics.Float_Random, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2008-07-04 18:41:32
|
Revision: 8504 http://plplot.svn.sourceforge.net/plplot/?rev=8504&view=rev Author: airwin Date: 2008-07-04 11:41:41 -0700 (Fri, 04 Jul 2008) Log Message: ----------- Change HAVE_SNPRINTF and _HAVE_SNPRINTF to PL_HAVE_SNPRINTF and _PL_HAVE_SNPRINTF to avoid nameclashes with headers for other packages. Modified Paths: -------------- trunk/cmake/modules/plplot.cmake trunk/config.h.cmake trunk/include/plplotP.h trunk/src/plctrl.c Modified: trunk/cmake/modules/plplot.cmake =================================================================== --- trunk/cmake/modules/plplot.cmake 2008-07-04 10:53:18 UTC (rev 8503) +++ trunk/cmake/modules/plplot.cmake 2008-07-04 18:41:41 UTC (rev 8504) @@ -190,11 +190,11 @@ check_function_exists(_isnan _HAVE_ISNAN) set(HAVE_ISNAN ${_HAVE_ISNAN} CACHE INTERNAL "Have function _isnan") endif(NOT HAVE_ISNAN) -check_function_exists(snprintf HAVE_SNPRINTF) -if(NOT HAVE_SNPRINTF) - check_function_exists(_snprintf _HAVE_SNPRINTF) - set(HAVE_SNPRINTF ${_HAVE_SNPRINTF} CACHE INTERNAL "Have function _sprintf") -endif(NOT HAVE_SNPRINTF) +check_function_exists(snprintf PL_HAVE_SNPRINTF) +if(NOT PL_HAVE_SNPRINTF) + check_function_exists(_snprintf _PL_HAVE_SNPRINTF) + set(PL_HAVE_SNPRINTF ${_PL_HAVE_SNPRINTF} CACHE INTERNAL "Have function _sprintf") +endif(NOT PL_HAVE_SNPRINTF) # ======================================================================= # Language bindings Modified: trunk/config.h.cmake =================================================================== --- trunk/config.h.cmake 2008-07-04 10:53:18 UTC (rev 8503) +++ trunk/config.h.cmake 2008-07-04 18:41:41 UTC (rev 8504) @@ -65,10 +65,14 @@ #cmakedefine HAVE_ISNAN /* Define if snprintf is available */ -#cmakedefine HAVE_SNPRINTF +#ifndef PL_HAVE_SNPRINTF +#cmakedefine PL_HAVE_SNPRINTF +#endif /* Define if _snprintf is available */ -#cmakedefine _HAVE_SNPRINTF +#ifndef _PL_HAVE_SNPRINTF +#cmakedefine _PL_HAVE_SNPRINTF +#endif /* Define if [incr], [Tcl] is available */ #cmakedefine HAVE_ITCL Modified: trunk/include/plplotP.h =================================================================== --- trunk/include/plplotP.h 2008-07-04 10:53:18 UTC (rev 8503) +++ trunk/include/plplotP.h 2008-07-04 18:41:41 UTC (rev 8504) @@ -246,21 +246,21 @@ /* Declarations for save string functions */ -#ifdef HAVE_SNPRINTF +#ifdef PL_HAVE_SNPRINTF /* In case only _snprintf is declared (as for Visual C++ and Borland compiler toolset) we redefine the function names */ - #ifdef _HAVE_SNPRINTF + #ifdef _PL_HAVE_SNPRINTF #define snprintf _snprintf #define snscanf _snscanf - #endif /* _HAVE_SNPRINTF */ -#else /* !HAVE_SNPRINTF */ + #endif /* _PL_HAVE_SNPRINTF */ +#else /* !PL_HAVE_SNPRINTF */ /* declare dummy functions which just call the unsafe functions ignoring the size of the string */ int plsnprintf( char *buffer, int n, const char *format, ... ); int plsnscanf( const char *buffer, int n, const char *format, ... ); #define snprintf plsnprintf #define snscanf plsnscanf -#endif /* HAVE_SNPRINTF */ +#endif /* PL_HAVE_SNPRINTF */ /*--------------------------------------------------------------------------*\ * PLPLOT control macros Modified: trunk/src/plctrl.c =================================================================== --- trunk/src/plctrl.c 2008-07-04 10:53:18 UTC (rev 8503) +++ trunk/src/plctrl.c 2008-07-04 18:41:41 UTC (rev 8504) @@ -2102,7 +2102,7 @@ return dest; } -#ifndef HAVE_SNPRINTF +#ifndef PL_HAVE_SNPRINTF /*--------------------------------------------------------------------------*\ * plsnprintf() * @@ -2145,4 +2145,4 @@ return ret; } -#endif /* HAVE_SNPRINTF */ +#endif /* PL_HAVE_SNPRINTF */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jb...@us...> - 2008-07-08 09:22:33
|
Revision: 8511 http://plplot.svn.sourceforge.net/plplot/?rev=8511&view=rev Author: jbauck Date: 2008-07-08 02:22:36 -0700 (Tue, 08 Jul 2008) Log Message: ----------- Fixed indexing error in x16a.adb and xthick16a.adb that caused bad distortion on the fifth plot. Fixed a rounding problem in the Ada versions of pltr1 and pltr2 in plplot_thin.adb: Ada converts floats to integers by rounding while C does so by truncation. Subtracting 0.5 - 10^-16 before converting seems to work at lest for 64-bit floats but in general there is no foolproof fix for this problem. This bug caused thousands of subtle differences between the Ada and C versions of Postscript files for Example 16. Modified Paths: -------------- trunk/bindings/ada/plplot_thin.adb.cmake trunk/bindings/ada/plplot_thin.ads.cmake trunk/examples/ada/x02a.adb.cmake trunk/examples/ada/x16a.adb.cmake trunk/examples/ada/xthick16a.adb.cmake Modified: trunk/bindings/ada/plplot_thin.adb.cmake =================================================================== --- trunk/bindings/ada/plplot_thin.adb.cmake 2008-07-07 09:22:18 UTC (rev 8510) +++ trunk/bindings/ada/plplot_thin.adb.cmake 2008-07-08 09:22:36 UTC (rev 8511) @@ -136,8 +136,8 @@ -- pltr0, pltr1, and pltr2 had to be re-written in Ada in order to make the -- callback work while also passing the data structure along, e.g. - -- pltr_data in the formal names below. The machinery surround this ide also - -- allows for easy user- defined plot transformation subprograms to be + -- pltr_data in the formal names below. The machinery surroundinging this idea + -- also allows for user-defined plot transformation subprograms to be easily -- written. -- Identity transformation. Re-write of pltr0 in plcont.c in Ada. @@ -160,9 +160,11 @@ ul, ur, vl, vr : PLINT; du, dv : PLFLT; xl, xr, yl, yr : PLFLT; - package Transformation_Data_Type_Address_Conversions is new System.Address_To_Access_Conversions(Transformation_Data_Type); -- temp + nx, ny : PLINT; + + -- Tell the program what structure the data beginning at pltr_data has. + package Transformation_Data_Type_Address_Conversions is new System.Address_To_Access_Conversions(Transformation_Data_Type); Transformation_Data_Pointer : Transformation_Data_Type_Address_Conversions.Object_Pointer; - nx, ny : Integer; begin Transformation_Data_Pointer := Transformation_Data_Type_Address_Conversions.To_Pointer(pltr_data); @@ -170,11 +172,17 @@ nx := Transformation_Data_Pointer.nx; ny := Transformation_Data_Pointer.ny; - ul := Integer(x); + -- Ada converts floats to integers by rounding while C does so by + -- truncation. There is no fool-proof way to fix that but this is pretty + -- close: Add a bit less than 1/2 to the float before converting. A good + -- number to use appears to be about 0.5 - 10^-16 which _might_ + -- be an exact fix for 64-bit floats since they have about 16 digits + -- of accuracy. This kludge was first used in Ada example 2, x02a.adb. + ul := Integer(x - 0.499999999999999); ur := ul + 1; du := x - Long_Float(ul); - vl := Integer(y); + vl := Integer(y - 0.499999999999999); vr := vl + 1; dv := y - Long_Float(vl); @@ -227,13 +235,18 @@ begin TD := Transformation_Data_Type_2_Address_Conversions.To_Pointer(pltr_data); - - - ul := Integer(x); + + -- Ada converts floats to integers by rounding while C does so by + -- truncation. There is no fool-proof way to fix that but this is pretty + -- close: Add a bit less than 1/2 to the float before converting. A good + -- number to use appears to be about 0.5 - 10^-16 which _might_ + -- be an exact fix for 64-bit floats since they have about 16 digits + -- of accuracy. This kludge was first used in Ada example 2, x02a.adb. + ul := Integer(x - 0.499999999999999); ur := ul + 1; du := x - Long_Float(ul); - vl := Integer(y); + vl := Integer(y - 0.499999999999999); vr := vl + 1; dv := y - Long_Float(vl); @@ -270,7 +283,7 @@ tx := TD.xg(TD.nx - 1, 0); ty := TD.yg(TD.nx - 1, 0); elsif y > ymax then -Put_Line(TD.nx'img & TD.ny'img); +--Put_Line(TD.nx'img & TD.ny'img); tx := TD.xg(TD.nx - 1, TD.ny - 1); ty := TD.yg(TD.nx - 1, TD.ny - 1); else Modified: trunk/bindings/ada/plplot_thin.ads.cmake =================================================================== --- trunk/bindings/ada/plplot_thin.ads.cmake 2008-07-07 09:22:18 UTC (rev 8510) +++ trunk/bindings/ada/plplot_thin.ads.cmake 2008-07-08 09:22:36 UTC (rev 8511) @@ -1658,8 +1658,8 @@ -- pltr0, pltr1, and pltr2 had to be re-written in Ada in order to make the -- callback work while also passing the data structure along, e.g. - -- pltr_data in the formal names below. The machinery surround this ide also - -- allows for easy user- defined plot transformation subprograms to be + -- pltr_data in the formal names below. The machinery surrounding this idea + -- also allows for easy user- defined plot transformation subprograms to be -- written. -- Identity transformation. Re-write of pltr0 in plcont.c in Ada. Modified: trunk/examples/ada/x02a.adb.cmake =================================================================== --- trunk/examples/ada/x02a.adb.cmake 2008-07-07 09:22:18 UTC (rev 8510) +++ trunk/examples/ada/x02a.adb.cmake 2008-07-08 09:22:36 UTC (rev 8511) @@ -132,10 +132,12 @@ plhlsrgb(h, l, s, r1, g1, b1); - -- Ada rounds to nearest integer. We want to truncate - -- approximately like C to match that example. -0.5 produces - -- at least one -1 result (rather than zero) so we subtract - -- something with a slightly smaller absolute value. + -- Ada converts floats to integers by rounding while C does so by + -- truncation. There is no fool-proof way to fix that but this is pretty + -- close: Add a bit less than 1/2 to the float before converting. A good + -- number to use appears to be about 0.5 - 10^-16 which _might_ + -- be an exact fix for 64-bit floats since they have about 16 digits + -- of accuracy. r(i+16) := Integer((r1 * 255.0) - 0.499999999999999); g(i+16) := Integer((g1 * 255.0) - 0.499999999999999); b(i+16) := Integer((b1 * 255.0) - 0.499999999999999); Modified: trunk/examples/ada/x16a.adb.cmake =================================================================== --- trunk/examples/ada/x16a.adb.cmake 2008-07-07 09:22:18 UTC (rev 8510) +++ trunk/examples/ada/x16a.adb.cmake 2008-07-08 09:22:36 UTC (rev 8511) @@ -87,7 +87,7 @@ begin tx := tr(0) * x + tr(1) * y + tr(2); ty := tr(3) * x + tr(4) * y + tr(5); - end; + end mypltr; -- Masking function @@ -153,7 +153,7 @@ argy := y * pi / 2.0; distort := 0.4; - cgrid1.xg(i) := x + distort * cos(argx); + cgrid1.xg(i) := x + distort * cos(argx); -- This gets assigned j times. cgrid1.yg(j) := y - distort * cos(argy); cgrid2.xg(i, j) := x + distort * cos(argx) * cos(argy); @@ -161,9 +161,9 @@ cgrid2.zg(i, j) := 0.0; -- Not used, but initialize anway. end loop; end loop; - + -- Plot using identity transform - pladv(0); + pladv(0); -- page 1 plvpor(0.1, 0.9, 0.1, 0.9); plwind(-1.0, 1.0, -1.0, 1.0); @@ -181,7 +181,7 @@ pllab("distance", "altitude", "Bogon density"); -- Plot using 1d coordinate transform - pladv(0); + pladv(0); -- page 2 plvpor(0.1, 0.9, 0.1, 0.9); plwind(-1.0, 1.0, -1.0, 1.0); @@ -199,7 +199,7 @@ pllab("distance", "altitude", "Bogon density"); -- Plot using 2d coordinate transform - pladv(0); + pladv(0); -- page 3 plvpor(0.1, 0.9, 0.1, 0.9); plwind(-1.0, 1.0, -1.0, 1.0); @@ -218,7 +218,7 @@ pllab("distance", "altitude", "Bogon density, with streamlines"); -- Plot using 2d coordinate transform - pladv(0); + pladv(0); -- page 4 plvpor(0.1, 0.9, 0.1, 0.9); plwind(-1.0, 1.0, -1.0, 1.0); @@ -262,20 +262,20 @@ -- end if; -- Example with polar coordinates. - pladv(0); + pladv(0); -- page 5 plvpor(0.1, 0.9, 0.1, 0.9); plwind(-1.0, 1.0, -1.0, 1.0); plpsty(0); -- Build new coordinate matrices. - for i in cgrid2.xg'range loop + for i in cgrid2.xg'range(1) loop r := Long_Float(i) / Long_Float(nx - 1); - for j in cgrid2.yg'range loop - t := (2.0 * pi /(Long_Float(ny) - 1.0)) * Long_Float(j); - cgrid2.xg(i, j) := r * cos(t); - cgrid2.yg(i, j) := r * sin(t); - z(i, j) := exp(-r * r) * cos(5.0 * pi * r) * cos(5.0 * t); + for j in cgrid2.xg'range(2) loop + t := (2.0 * pi /(Long_Float(ny) - 1.0)) * Long_Float(j); + cgrid2.xg(i, j) := r * cos(t); + cgrid2.yg(i, j) := r * sin(t); + z(i, j) := exp(-r * r) * cos(5.0 * pi * r) * cos(5.0 * t); end loop; end loop; @@ -287,7 +287,7 @@ shedge(i) := zmin + (zmax - zmin) * Long_Float(i) / Long_Float(ns); end loop; - -- Now we can shade the interior region. + -- Now we can shade the interior region. plshades(z, Null, -1.0, 1.0, -1.0, 1.0, shedge, fill_width, cont_color, cont_width, Modified: trunk/examples/ada/xthick16a.adb.cmake =================================================================== --- trunk/examples/ada/xthick16a.adb.cmake 2008-07-07 09:22:18 UTC (rev 8510) +++ trunk/examples/ada/xthick16a.adb.cmake 2008-07-08 09:22:36 UTC (rev 8511) @@ -269,9 +269,9 @@ Select_Fill_Pattern(0); -- Build new coordinate matrices. - for i in cgrid2.xg'range loop + for i in cgrid2.xg'range(1) loop r := Long_Float(i) / Long_Float(nx - 1); - for j in cgrid2.yg'range loop + for j in cgrid2.xg'range(2) loop t := (2.0 * pi /(Long_Float(ny) - 1.0)) * Long_Float(j); cgrid2.xg(i, j) := r * cos(t); cgrid2.yg(i, j) := r * sin(t); @@ -287,7 +287,7 @@ shedge(i) := zmin + (zmax - zmin) * Long_Float(i) / Long_Float(ns); end loop; - -- Now we can shade the interior region. + -- Now we can shade the interior region. Shade_Regions(z, Null, -1.0, 1.0, -1.0, 1.0, shedge, fill_width, cont_color, cont_width, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jb...@us...> - 2008-07-10 11:14:41
|
Revision: 8512 http://plplot.svn.sourceforge.net/plplot/?rev=8512&view=rev Author: jbauck Date: 2008-07-10 04:14:50 -0700 (Thu, 10 Jul 2008) Log Message: ----------- In Ada examples x29a.adb and xthick29a.adb, changed xmin to 1_133_395_200.0 from 1_133_398_800.0 which I got from the Fortran, Java, and Python versions of this example; when used in Ada, it is too large by 3600 seconds. Changed 0.499999999999999 to 0.5 in the Ada versions of pltr1 and pltr2 in plplot_thin.adb, at Alan Irwin's suggestion to not finesse the rounding problem too much (C truncates floats to integers while Ada rounds). Modified Paths: -------------- trunk/bindings/ada/plplot_thin.adb.cmake trunk/bindings/ada/plplot_thin.ads.cmake trunk/examples/ada/x29a.adb.cmake trunk/examples/ada/xthick29a.adb.cmake Modified: trunk/bindings/ada/plplot_thin.adb.cmake =================================================================== --- trunk/bindings/ada/plplot_thin.adb.cmake 2008-07-08 09:22:36 UTC (rev 8511) +++ trunk/bindings/ada/plplot_thin.adb.cmake 2008-07-10 11:14:50 UTC (rev 8512) @@ -173,16 +173,15 @@ ny := Transformation_Data_Pointer.ny; -- Ada converts floats to integers by rounding while C does so by - -- truncation. There is no fool-proof way to fix that but this is pretty - -- close: Add a bit less than 1/2 to the float before converting. A good - -- number to use appears to be about 0.5 - 10^-16 which _might_ - -- be an exact fix for 64-bit floats since they have about 16 digits - -- of accuracy. This kludge was first used in Ada example 2, x02a.adb. - ul := Integer(x - 0.499999999999999); + -- truncation. There is no fool-proof way to fix that. Here, we simply + -- subtract 0.5 before doing the conversion. There is some possibility + -- that subtracting 0.5 - 10^-16 = 0.499999999999999 might work better + -- for 64-bit floats. + ul := Integer(x - 0.5); ur := ul + 1; du := x - Long_Float(ul); - vl := Integer(y - 0.499999999999999); + vl := Integer(y - 0.5); vr := vl + 1; dv := y - Long_Float(vl); @@ -237,16 +236,15 @@ TD := Transformation_Data_Type_2_Address_Conversions.To_Pointer(pltr_data); -- Ada converts floats to integers by rounding while C does so by - -- truncation. There is no fool-proof way to fix that but this is pretty - -- close: Add a bit less than 1/2 to the float before converting. A good - -- number to use appears to be about 0.5 - 10^-16 which _might_ - -- be an exact fix for 64-bit floats since they have about 16 digits - -- of accuracy. This kludge was first used in Ada example 2, x02a.adb. - ul := Integer(x - 0.499999999999999); + -- truncation. There is no fool-proof way to fix that. Here, we simply + -- subtract 0.5 before doing the conversion. There is some possibility + -- that subtracting 0.5 - 10^-16 = 0.499999999999999 might work better + -- for 64-bit floats. + ul := Integer(x - 0.5); ur := ul + 1; du := x - Long_Float(ul); - vl := Integer(y - 0.499999999999999); + vl := Integer(y - 0.5); vr := vl + 1; dv := y - Long_Float(vl); @@ -283,7 +281,6 @@ tx := TD.xg(TD.nx - 1, 0); ty := TD.yg(TD.nx - 1, 0); elsif y > ymax then ---Put_Line(TD.nx'img & TD.ny'img); tx := TD.xg(TD.nx - 1, TD.ny - 1); ty := TD.yg(TD.nx - 1, TD.ny - 1); else Modified: trunk/bindings/ada/plplot_thin.ads.cmake =================================================================== --- trunk/bindings/ada/plplot_thin.ads.cmake 2008-07-08 09:22:36 UTC (rev 8511) +++ trunk/bindings/ada/plplot_thin.ads.cmake 2008-07-10 11:14:50 UTC (rev 8512) @@ -1556,7 +1556,6 @@ pragma Import(C, pltimefmt, "c_pltimefmt"); - -- Sets the edges of the viewport with the given aspect ratio, leaving -- room for labels. Modified: trunk/examples/ada/x29a.adb.cmake =================================================================== --- trunk/examples/ada/x29a.adb.cmake 2008-07-08 09:22:36 UTC (rev 8511) +++ trunk/examples/ada/x29a.adb.cmake 2008-07-10 11:14:50 UTC (rev 8512) @@ -36,6 +36,19 @@ --with Ada.Numerics.Long_Real_Arrays; use Ada.Numerics.Long_Real_Arrays; @Ada_Is_2007_With_and_Use_Numerics@ +------------------------------------------------------------------------------ +-- Draws several plots which demonstrate the use of date / time formats for +-- the axis labels. +-- Time formatting is done using the system strftime routine. See the +-- documentation of this for full details of the available formats. +-- +-- 1) Plotting temperature over a day (using hours / minutes) +-- 2) Plotting +-- +-- Note: Times are stored as seconds since the epoch (usually 1st Jan 1970). +-- +------------------------------------------------------------------------------ + procedure x29a is -- Plot a model diurnal cycle of temperature procedure plot1 is @@ -118,10 +131,12 @@ x, y : Real_Vector(0 .. 61); begin -- The C version of this example accesses time.h. Ada's Calendar package - -- would surely work here, but let's just take the same shortcut as - -- in several of the other versions of this example in other languages. + -- would surely work here, but let's just take the same shortcut as is used + -- in several of the other versions of this example in other languages. + -- However, the correct value for xmin here is 1_133_395_200.0 not + -- 1_133_398_800.0 as in those examples. - xmin := 1_133_398_800.0; + xmin := 1_133_395_200.0; xmax := xmin + Long_Float(x'length) * 60.0 * 60.0 * 24.0; ymin := 0.0; Modified: trunk/examples/ada/xthick29a.adb.cmake =================================================================== --- trunk/examples/ada/xthick29a.adb.cmake 2008-07-08 09:22:36 UTC (rev 8511) +++ trunk/examples/ada/xthick29a.adb.cmake 2008-07-10 11:14:50 UTC (rev 8512) @@ -118,10 +118,12 @@ x, y : Real_Vector(0 .. 61); begin -- The C version of this example accesses time.h. Ada's Calendar package - -- would surely work here, but let's just take the same shortcut as - -- in several of the other versions of this example in other languages. + -- would surely work here, but let's just take the same shortcut as is used + -- in several of the other versions of this example in other languages. + -- However, the correct value for xmin here is 1_133_395_200.0 not + -- 1_133_398_800.0 as in those examples. - xmin := 1_133_398_800.0; + xmin := 1_133_395_200.0; xmax := xmin + Long_Float(x'length) * 60.0 * 60.0 * 24.0; ymin := 0.0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jb...@us...> - 2008-07-11 23:31:58
|
Revision: 8516 http://plplot.svn.sourceforge.net/plplot/?rev=8516&view=rev Author: jbauck Date: 2008-07-11 16:32:07 -0700 (Fri, 11 Jul 2008) Log Message: ----------- Revert rounding style in Ada versions of pltr1 and pltr2 to avoid index constraint errors at run-time. Fix date-related comment in Ada examples 29. Modified Paths: -------------- trunk/bindings/ada/plplot_thin.adb.cmake trunk/bindings/ada/plplot_traditional.adb.cmake trunk/examples/ada/x29a.adb.cmake trunk/examples/ada/xthick29a.adb.cmake Modified: trunk/bindings/ada/plplot_thin.adb.cmake =================================================================== --- trunk/bindings/ada/plplot_thin.adb.cmake 2008-07-11 22:55:17 UTC (rev 8515) +++ trunk/bindings/ada/plplot_thin.adb.cmake 2008-07-11 23:32:07 UTC (rev 8516) @@ -174,14 +174,13 @@ -- Ada converts floats to integers by rounding while C does so by -- truncation. There is no fool-proof way to fix that. Here, we simply - -- subtract 0.5 before doing the conversion. There is some possibility - -- that subtracting 0.5 - 10^-16 = 0.499999999999999 might work better - -- for 64-bit floats. - ul := Integer(x - 0.5); + -- subtract 0.499999999999999 before doing the conversion. Subtracting + -- 0.5 results in index constraint errors being raised. + ul := Integer(x - 0.499999999999999); ur := ul + 1; du := x - Long_Float(ul); - vl := Integer(y - 0.5); + vl := Integer(y - 0.499999999999999); vr := vl + 1; dv := y - Long_Float(vl); @@ -237,14 +236,13 @@ -- Ada converts floats to integers by rounding while C does so by -- truncation. There is no fool-proof way to fix that. Here, we simply - -- subtract 0.5 before doing the conversion. There is some possibility - -- that subtracting 0.5 - 10^-16 = 0.499999999999999 might work better - -- for 64-bit floats. - ul := Integer(x - 0.5); + -- subtract 0.499999999999999 before doing the conversion. Subtracting + -- 0.5 results in index constraint errors being raised. + ul := Integer(x - 0.499999999999999); ur := ul + 1; du := x - Long_Float(ul); - vl := Integer(y - 0.5); + vl := Integer(y - 0.499999999999999); vr := vl + 1; dv := y - Long_Float(vl); Modified: trunk/bindings/ada/plplot_traditional.adb.cmake =================================================================== --- trunk/bindings/ada/plplot_traditional.adb.cmake 2008-07-11 22:55:17 UTC (rev 8515) +++ trunk/bindings/ada/plplot_traditional.adb.cmake 2008-07-11 23:32:07 UTC (rev 8516) @@ -1468,6 +1468,18 @@ PLplot_Thin.plgdev(PL_Device_Name); Device_Name := To_Ada(PL_Device_Name, True); end plgdev; + + + -- Make a function version of plgdev so that the caller can use it whereever + -- a String type is expected without fooling around with conversions between + -- Ada string types. See Example 14 for useage. + -- THIS IS NOT IN THE C API. + function plgdev return String is + PL_Device_Name : char_array(0..79); + begin + PLplot_Thin.plgdev(PL_Device_Name); + return To_Ada(PL_Device_Name, True); + end plgdev; -- Retrieve current window into device space Modified: trunk/examples/ada/x29a.adb.cmake =================================================================== --- trunk/examples/ada/x29a.adb.cmake 2008-07-11 22:55:17 UTC (rev 8515) +++ trunk/examples/ada/x29a.adb.cmake 2008-07-11 23:32:07 UTC (rev 8516) @@ -132,7 +132,7 @@ xmin, xmax, ymin, ymax : Long_Float; x, y : Real_Vector(0 .. 61); begin - -- Find the number of seconds since January 1, 1970 to December 12, 2005. + -- Find the number of seconds since January 1, 1970 to December 1, 2005. -- Should be 1_133_395_200.0. xmin := Long_Float(Time_Of(2005, 12, 1, 0.0) - Time_Of(1970, 1, 1, 0.0)); Modified: trunk/examples/ada/xthick29a.adb.cmake =================================================================== --- trunk/examples/ada/xthick29a.adb.cmake 2008-07-11 22:55:17 UTC (rev 8515) +++ trunk/examples/ada/xthick29a.adb.cmake 2008-07-11 23:32:07 UTC (rev 8516) @@ -119,7 +119,7 @@ xmin, xmax, ymin, ymax : Long_Float; x, y : Real_Vector(0 .. 61); begin - -- Find the number of seconds since January 1, 1970 to December 12, 2005. + -- Find the number of seconds since January 1, 1970 to December 1, 2005. -- Should be 1_133_395_200.0. xmin := Long_Float(Time_Of(2005, 12, 1, 0.0) - Time_Of(1970, 1, 1, 0.0)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |