From: <ai...@us...> - 2008-07-19 18:51:22
|
Revision: 8540 http://plplot.svn.sourceforge.net/plplot/?rev=8540&view=rev Author: airwin Date: 2008-07-19 18:48:22 +0000 (Sat, 19 Jul 2008) Log Message: ----------- AWI for Hezekiah M. Carty. Use newly implementedplparseopts in all the ocaml examples Modified Paths: -------------- trunk/examples/ocaml/x01.ml trunk/examples/ocaml/x02.ml trunk/examples/ocaml/x03.ml trunk/examples/ocaml/x11.ml trunk/examples/ocaml/x19.ml Modified: trunk/examples/ocaml/x01.ml =================================================================== --- trunk/examples/ocaml/x01.ml 2008-07-19 18:42:41 UTC (rev 8539) +++ trunk/examples/ocaml/x01.ml 2008-07-19 18:48:22 UTC (rev 8540) @@ -244,8 +244,8 @@ (* NOT IMPLEMENTED YET (* Parse and process command line arguments *) plMergeOpts(options, "x01c options", notes); - plparseopts(&argc, argv, PL_PARSE_FULL); *) + ignore (plparseopts Sys.argv [|PL_PARSE_FULL|]); (* Get version number, just for kicks *) let plplot_version = plgver () in Modified: trunk/examples/ocaml/x02.ml =================================================================== --- trunk/examples/ocaml/x02.ml 2008-07-19 18:42:41 UTC (rev 8539) +++ trunk/examples/ocaml/x02.ml 2008-07-19 18:48:22 UTC (rev 8540) @@ -128,10 +128,8 @@ \*--------------------------------------------------------------------------*) let main () = - (* NOT IMPLEMENTED (* Parse and process command line arguments *) - (void) plparseopts(&argc, argv, PL_PARSE_FULL); - *) + ignore (plparseopts Sys.argv [|PL_PARSE_FULL|]); (* Initialize plplot *) plinit (); Modified: trunk/examples/ocaml/x03.ml =================================================================== --- trunk/examples/ocaml/x03.ml 2008-07-19 18:42:41 UTC (rev 8539) +++ trunk/examples/ocaml/x03.ml 2008-07-19 18:48:22 UTC (rev 8540) @@ -35,10 +35,8 @@ let x0 = Array.init 361 (fun i -> cos (dtr *. float_of_int i)) in let y0 = Array.init 361 (fun i -> sin (dtr *. float_of_int i)) in - (* NOT SUPPORTED YET (* Parse and process command line arguments *) - (void) plparseopts(&argc, argv, PL_PARSE_FULL); - *) + ignore (plparseopts Sys.argv [|PL_PARSE_FULL|]); (* Initialize plplot *) plinit (); Modified: trunk/examples/ocaml/x11.ml =================================================================== --- trunk/examples/ocaml/x11.ml 2008-07-19 18:42:41 UTC (rev 8539) +++ trunk/examples/ocaml/x11.ml 2008-07-19 18:48:22 UTC (rev 8540) @@ -48,6 +48,9 @@ \*--------------------------------------------------------------------------*) let () = + (* Parse and process command line arguments *) + ignore (plparseopts Sys.argv [|PL_PARSE_FULL|]); + (* Initialize plplot *) plinit (); Modified: trunk/examples/ocaml/x19.ml =================================================================== --- trunk/examples/ocaml/x19.ml 2008-07-19 18:42:41 UTC (rev 8539) +++ trunk/examples/ocaml/x19.ml 2008-07-19 18:48:22 UTC (rev 8540) @@ -54,6 +54,9 @@ let miny = -70.0 in let maxy = 80.0 in + (* Parse and process command line arguments *) + ignore (plparseopts Sys.argv [|PL_PARSE_FULL|]); + plinit(); (* Cartesian plots *) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2008-08-23 19:38:06
|
Revision: 8706 http://plplot.svn.sourceforge.net/plplot/?rev=8706&view=rev Author: andrewross Date: 2008-08-23 19:38:14 +0000 (Sat, 23 Aug 2008) Log Message: ----------- Update properties for ocaml examples to expand keywords. Property Changed: ---------------- trunk/examples/ocaml/x01.ml trunk/examples/ocaml/x02.ml trunk/examples/ocaml/x03.ml trunk/examples/ocaml/x04.ml trunk/examples/ocaml/x05.ml trunk/examples/ocaml/x06.ml trunk/examples/ocaml/x07.ml trunk/examples/ocaml/x08.ml trunk/examples/ocaml/x09.ml trunk/examples/ocaml/x10.ml trunk/examples/ocaml/x12.ml trunk/examples/ocaml/x13.ml trunk/examples/ocaml/x15.ml trunk/examples/ocaml/x18.ml trunk/examples/ocaml/x21.ml trunk/examples/ocaml/x24.ml trunk/examples/ocaml/x25.ml trunk/examples/ocaml/x26.ml trunk/examples/ocaml/x27.ml trunk/examples/ocaml/x30.ml Property changes on: trunk/examples/ocaml/x01.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Property changes on: trunk/examples/ocaml/x02.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Property changes on: trunk/examples/ocaml/x03.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Property changes on: trunk/examples/ocaml/x04.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Property changes on: trunk/examples/ocaml/x05.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Property changes on: trunk/examples/ocaml/x06.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Property changes on: trunk/examples/ocaml/x07.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Property changes on: trunk/examples/ocaml/x08.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Property changes on: trunk/examples/ocaml/x09.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Property changes on: trunk/examples/ocaml/x10.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Property changes on: trunk/examples/ocaml/x12.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Property changes on: trunk/examples/ocaml/x13.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Property changes on: trunk/examples/ocaml/x15.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Property changes on: trunk/examples/ocaml/x18.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Property changes on: trunk/examples/ocaml/x21.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Property changes on: trunk/examples/ocaml/x24.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Property changes on: trunk/examples/ocaml/x25.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Property changes on: trunk/examples/ocaml/x26.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Property changes on: trunk/examples/ocaml/x27.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Property changes on: trunk/examples/ocaml/x30.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2008-09-01 05:03:40
|
Revision: 8739 http://plplot.svn.sourceforge.net/plplot/?rev=8739&view=rev Author: airwin Date: 2008-09-01 05:03:45 +0000 (Mon, 01 Sep 2008) Log Message: ----------- Update the relevant examples to reflect the recently renamed functions. Modified Paths: -------------- trunk/examples/ocaml/x09.ml trunk/examples/ocaml/x16.ml trunk/examples/ocaml/x19.ml trunk/examples/ocaml/x20.ml trunk/examples/ocaml/x22.ml Modified: trunk/examples/ocaml/x09.ml =================================================================== --- trunk/examples/ocaml/x09.ml 2008-09-01 05:02:19 UTC (rev 8738) +++ trunk/examples/ocaml/x09.ml 2008-09-01 05:03:45 UTC (rev 8739) @@ -89,9 +89,9 @@ plcol0 2; (* TODO FIXME XXX: This is not correct because pltr2 is not properly implemented in OCaml at this point. *) - set_pltr (fun x y -> pltr2 x y xg yg); + plset_pltr (fun x y -> pltr2 x y xg yg); plcont z 1 rpts 1 thetapts lev; - unset_pltr (); + plunset_pltr (); plcol0 1; pllab "" "" "Polar Contour Plot"; () @@ -213,7 +213,7 @@ plbox "" 0.0 0 "" 0.0 0; plcol0 ncollin; - set_pltr (fun x y -> pltr2 x y xg yg); + plset_pltr (fun x y -> pltr2 x y xg yg); if !nlevelneg > 0 then ( (* Negative contours *) pllsty 2; @@ -225,7 +225,7 @@ pllsty 1; plcont z 1 prpts 1 pthetapts (Array.sub clevelpos 0 !nlevelpos); ); - unset_pltr (); + plunset_pltr (); (* Draw outer boundary *) let px = Array.make pperimeterpts 0.0 in @@ -298,7 +298,7 @@ pl_setcontlabelparam 0.006 0.3 0.1 1; plenv (-1.0) 1.0 (-1.0) 1.0 0 0; plcol0 2; - set_pltr mypltr; + plset_pltr mypltr; plcont z 1 xpts 1 ypts clevel; plstyl mark space; plcol0 3; @@ -311,7 +311,7 @@ (* Plot using 1d coordinate transform *) plenv (-1.0) 1.0 (-1.0) 1.0 0 0; plcol0 2; - set_pltr (fun x y -> pltr1 x y cgrid1_xg cgrid1_yg); + plset_pltr (fun x y -> pltr1 x y cgrid1_xg cgrid1_yg); plcont z 1 xpts 1 ypts clevel; plstyl mark space; @@ -324,7 +324,7 @@ (* Plot using 2d coordinate transform *) plenv (-1.0) 1.0 (-1.0) 1.0 0 0; plcol0 2; - set_pltr (fun x y -> pltr2 x y cgrid2_xg cgrid2_yg); + plset_pltr (fun x y -> pltr2 x y cgrid2_xg cgrid2_yg); plcont z 1 xpts 1 ypts clevel; plstyl mark space; @@ -335,7 +335,7 @@ pllab "X Coordinate" "Y Coordinate" "Streamlines of flow"; (* Unset the plotting coordinate transformation function *) - unset_pltr (); + plunset_pltr (); pl_setcontlabelparam 0.006 0.3 0.1 0; polar (); Modified: trunk/examples/ocaml/x16.ml =================================================================== --- trunk/examples/ocaml/x16.ml 2008-09-01 05:02:19 UTC (rev 8738) +++ trunk/examples/ocaml/x16.ml 2008-09-01 05:03:45 UTC (rev 8739) @@ -141,7 +141,7 @@ plpsty 0; - set_pltr (fun x y -> pltr1 x y xg1 yg1); + plset_pltr (fun x y -> pltr1 x y xg1 yg1); plshades z (-1.0) 1.0 (-1.0) 1.0 shedge fill_width cont_color cont_width 1; plcol0 1; @@ -156,7 +156,7 @@ plpsty 0; - set_pltr (fun x y -> pltr2 x y xg2 yg2); + plset_pltr (fun x y -> pltr2 x y xg2 yg2); plshades z (-1.0) 1.0 (-1.0) 1.0 shedge fill_width cont_color cont_width 0; plcol0 1; @@ -191,9 +191,9 @@ plpsty 0; - set_defined zdefined; + plset_defined zdefined; plshades z (-1.0) 1.0 (-1.0) 1.0 shedge fill_width cont_color cont_width 0; - unset_defined (); + plunset_defined (); plcol0 1; plbox "bcnst" 0.0 0 "bcnstv" 0.0 0; Modified: trunk/examples/ocaml/x19.ml =================================================================== --- trunk/examples/ocaml/x19.ml 2008-09-01 05:02:19 UTC (rev 8738) +++ trunk/examples/ocaml/x19.ml 2008-09-01 05:03:45 UTC (rev 8739) @@ -88,7 +88,7 @@ plenv (-75.) 75. (-75.) 75. 1 (-1); (* Now we set mapform19 as our callback. It will be used for every following plmap and plmeridians call until set to something else. *) - set_mapform mapform19; + plset_mapform mapform19; plmap "globe" minx maxx miny maxy; pllsty 2; Modified: trunk/examples/ocaml/x20.ml =================================================================== --- trunk/examples/ocaml/x20.ml 2008-09-01 05:02:19 UTC (rev 8738) +++ trunk/examples/ocaml/x20.ml 2008-09-01 05:03:45 UTC (rev 8739) @@ -228,7 +228,7 @@ (* OCaml supports arbitrary coordinate transform callbacks, so take advantage of that to use mypltr directly and skip the use of pltr2. *) - set_pltr (fun x y -> mypltr x y stretch); + plset_pltr (fun x y -> mypltr x y stretch); (* Comment the above line, and uncomment the following section to use pltr2 *) (* let xg = Array.make_matrix (int_of_float width + 1) (int_of_float height + 1) 0.0 in @@ -240,7 +240,7 @@ yg.(i).(j) <- yy; done done; - set_pltr (fun x y -> pltr2 x y xg yg); + plset_pltr (fun x y -> pltr2 x y xg yg); *) plimagefr img_f 0.0 width 0.0 height 0.0 0.0 img_min img_max; Modified: trunk/examples/ocaml/x22.ml =================================================================== --- trunk/examples/ocaml/x22.ml 2008-09-01 05:02:19 UTC (rev 8738) +++ trunk/examples/ocaml/x22.ml 2008-09-01 05:03:45 UTC (rev 8739) @@ -74,7 +74,7 @@ plenv xmin xmax ymin ymax 0 0; pllab "(x)" "(y)" "#frPLplot Example 22 - circulation"; plcol0 2; - set_pltr (fun x y -> pltr2 x y xg yg); + plset_pltr (fun x y -> pltr2 x y xg yg); plvect u v 0.0; plcol0 1; () @@ -121,7 +121,7 @@ plenv xmin xmax ymin ymax 0 0; pllab "(x)" "(y)" "#frPLplot Example 22 - constriction"; plcol0 2; - set_pltr (fun x y -> pltr2 x y xg yg); + plset_pltr (fun x y -> pltr2 x y xg yg); plvect u v (-0.5); plcol0 1; () @@ -211,7 +211,7 @@ in plcol0 3; pllsty 2; - set_pltr (fun x y -> pltr2 x y xg yg); + plset_pltr (fun x y -> pltr2 x y xg yg); plcont z 1 nr 1 ntheta clevel; pllsty 1; plcol0 1; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2008-09-29 10:50:32
|
Revision: 8832 http://plplot.svn.sourceforge.net/plplot/?rev=8832&view=rev Author: andrewross Date: 2008-09-29 10:50:22 +0000 (Mon, 29 Sep 2008) Log Message: ----------- Fix some warning messages in the ocaml examples. Warnings (bogus) still remain for example 23 about a non-exhaustive pattern matching that I am unsure how to fix. Modified Paths: -------------- trunk/examples/ocaml/x20.ml trunk/examples/ocaml/x22.ml trunk/examples/ocaml/x28.ml Modified: trunk/examples/ocaml/x20.ml =================================================================== --- trunk/examples/ocaml/x20.ml 2008-09-28 19:22:45 UTC (rev 8831) +++ trunk/examples/ocaml/x20.ml 2008-09-29 10:50:22 UTC (rev 8832) @@ -81,7 +81,7 @@ (* save plot *) let save_plot fname = let cur_strm = plgstrm () in (* get current stream *) - let new_strm = plmkstrm () in (* create a new one *) + let _ = plmkstrm () in (* create a new one *) plsdev "psc"; (* new device type. Use a known existing driver *) plsfnam fname; (* file name *) Modified: trunk/examples/ocaml/x22.ml =================================================================== --- trunk/examples/ocaml/x22.ml 2008-09-28 19:22:45 UTC (rev 8831) +++ trunk/examples/ocaml/x22.ml 2008-09-29 10:50:22 UTC (rev 8832) @@ -241,7 +241,6 @@ circulation (); - let narr = 6 in let fill = 0 in (* Set arrow style using arrow_x and arrow_y then Modified: trunk/examples/ocaml/x28.ml =================================================================== --- trunk/examples/ocaml/x28.ml 2008-09-28 19:22:45 UTC (rev 8831) +++ trunk/examples/ocaml/x28.ml 2008-09-29 10:50:22 UTC (rev 8832) @@ -50,9 +50,6 @@ let zmax = 1.0 in let zmid = 0.5 *. (zmax +. zmin) in let zrange = zmax -. zmin in - (* p1string must be exactly one character + the null termination - character. *) - let p1string = "O" in let pstring = "The future of our civilization depends on software freedom." in @@ -297,7 +294,6 @@ string and also the maximum value of omega for the given number of characters in pstring. *) let domega = 2.0 *. pi /. float_of_int (String.length pstring) in - let omega = 0.0 in (* 3D function is a helix of the given radius and pitch *) let radius = 0.5 in let pitch = 1.0 /. (2.0 *. pi) in This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2008-12-16 22:54:51
|
Revision: 9155 http://plplot.svn.sourceforge.net/plplot/?rev=9155&view=rev Author: andrewross Date: 2008-12-16 22:27:09 +0000 (Tue, 16 Dec 2008) Log Message: ----------- Update ocaml examples 1, 3, 9 and 13 consistent with C versions. Modified Paths: -------------- trunk/examples/ocaml/x01.ml trunk/examples/ocaml/x03.ml trunk/examples/ocaml/x09.ml trunk/examples/ocaml/x13.ml Modified: trunk/examples/ocaml/x01.ml =================================================================== --- trunk/examples/ocaml/x01.ml 2008-12-16 22:18:07 UTC (rev 9154) +++ trunk/examples/ocaml/x01.ml 2008-12-16 22:27:09 UTC (rev 9155) @@ -238,8 +238,6 @@ \*--------------------------------------------------------------------------*) let main fontset = (* plplot initialization *) - (* Divide page into 2x2 plots unless user overrides *) - plssub 2 2; (* NOT IMPLEMENTED YET (* Parse and process command line arguments *) @@ -252,7 +250,8 @@ fprintf stdout "PLplot library version: %s\n" plplot_version; (* Initialize plplot *) - plinit (); + (* Divide page into 2x2 plots *) + plstar 2 2; (* Select font set as per input flag *) plfontld (if fontset then 1 else 0); Modified: trunk/examples/ocaml/x03.ml =================================================================== --- trunk/examples/ocaml/x03.ml 2008-12-16 22:18:07 UTC (rev 9154) +++ trunk/examples/ocaml/x03.ml 2008-12-16 22:27:09 UTC (rev 9155) @@ -38,6 +38,10 @@ (* Parse and process command line arguments *) ignore (plparseopts Sys.argv [PL_PARSE_FULL]); + (* Set orientation to landscape - note not all device drivers + * support this, in particular most interactive drivers do not *) + plsori 1; + (* Initialize plplot *) plinit (); Modified: trunk/examples/ocaml/x09.ml =================================================================== --- trunk/examples/ocaml/x09.ml 2008-12-16 22:18:07 UTC (rev 9154) +++ trunk/examples/ocaml/x09.ml 2008-12-16 22:27:09 UTC (rev 9155) @@ -293,6 +293,7 @@ done; (* Plot using identity transform *) + pl_setcontlabelformat 4 3; pl_setcontlabelparam 0.006 0.3 0.1 1; plenv (-1.0) 1.0 (-1.0) 1.0 0 0; plcol0 2; Modified: trunk/examples/ocaml/x13.ml =================================================================== --- trunk/examples/ocaml/x13.ml 2008-12-16 22:18:07 UTC (rev 9154) +++ trunk/examples/ocaml/x13.ml 2008-12-16 22:27:09 UTC (rev 9155) @@ -29,7 +29,12 @@ (* Initialize plplot *) plinit (); - plenv 0.0 10.0 0.0 10.0 1 (-2); + pladv 0; + (* Ensure window has aspect ratio of one so circle is + * plotted as a circle. *) + plvasp 1.0; + plwind 0. 10. 0. 10.; + (* plenv 0.0 10.0 0.0 10.0 1 (-2); *) plcol0 2; (* All theta quantities scaled by 2*M_PI/500 to be integers to avoid floating point logic problems. *) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2008-12-23 22:58:01
|
Revision: 9220 http://plplot.svn.sourceforge.net/plplot/?rev=9220&view=rev Author: airwin Date: 2008-12-23 22:34:51 +0000 (Tue, 23 Dec 2008) Log Message: ----------- AWI for Hezekiah M. Carty. Update OCaml examples 15, 29 and 31 to match up with the current state of the C examples so that clean ctest compare results are produced. Modified Paths: -------------- trunk/examples/ocaml/x15.ml trunk/examples/ocaml/x29.ml trunk/examples/ocaml/x31.ml Modified: trunk/examples/ocaml/x15.ml =================================================================== --- trunk/examples/ocaml/x15.ml 2008-12-23 16:44:41 UTC (rev 9219) +++ trunk/examples/ocaml/x15.ml 2008-12-23 22:34:51 UTC (rev 9220) @@ -91,6 +91,22 @@ let max_width = 0 in let sh_width = 2 in + let inc = + [| + [|450|]; [|-450|]; [|0|]; [|900|]; + [|300|]; [|450;-450|]; [|0; 900|]; [|0; 450|]; + [|450; -450|]; [|0; 900|]; + |] + in + let del = + [| + [|2000|]; [|2000|]; [|2000|]; + [|2000|]; [|2000|]; [|2000; 2000|]; + [|2000; 2000|]; [|2000; 2000|]; [|4000; 4000|]; + [|4000; 2000|]; + |] + in + pladv 0; plvpor 0.1 0.9 0.1 0.9; plwind (-1.0) 1.0 (-1.0) 1.0; @@ -100,7 +116,7 @@ let shade_min = zmin +. (zmax -. zmin) *. float_of_int i /. 10.0 in let shade_max = zmin +. (zmax -. zmin) *. float_of_int (i + 1) /. 10.0 in let sh_color = float_of_int (i + 6) in - plpsty ((i + 2) mod 8 + 1); + plpat inc.(i) del.(i); plshade z (-1.0) 1.0 (-1.0) 1.0 @@ -116,6 +132,54 @@ () (*--------------------------------------------------------------------------*\ + * plot3 + * + * Illustrates shaded regions in 3d, using a different fill pattern for + * each region. +\*--------------------------------------------------------------------------*) + +let plot3 () = + let xx = + [| + [|-1.0; 1.0; 1.0; -1.0; -1.0|]; + [|-1.0; 1.0; 1.0; -1.0; -1.0|]; + |] + in + let yy = + [| + [|1.0; 1.0; 0.0; 0.0; 1.0|]; + [|-1.0; -1.0; 0.0; 0.0; -1.0|]; + |] + in + let zz = + [| + [|0.0; 0.0; 1.0; 1.0; 0.0|]; + [|0.0; 0.0; 1.0; 1.0; 0.0|]; + |] + in + + pladv 0; + plvpor 0.1 0.9 0.1 0.9; + plwind (-1.0) 1.0 (-1.0) 1.0; + plw3d 1.0 1.0 1.0 (-1.0) 1.0 (-1.0) 1.0 0.0 1.5 30.0 (-40.0); + + (* Plot using identity transform *) + plcol0 1; + plbox3 "bntu" "X" 0.0 0 "bntu" "Y" 0.0 0 "bcdfntu" "Z" 0.5 0; + plcol0 2; + pllab "" "" "3-d polygon filling"; + + plcol0 3; + plpsty 1; + plline3 xx.(0) yy.(0) zz.(0); + let sub a = Array.sub a 0 4 in + plfill3 (sub xx.(0)) (sub yy.(0)) (sub zz.(0)); + plpsty 2; + plline3 xx.(1) yy.(1) zz.(1); + plfill3 (sub xx.(1)) (sub yy.(1)) (sub zz.(1)); + () + +(*--------------------------------------------------------------------------*\ * Does a variety of shade plots. \*--------------------------------------------------------------------------*) let () = @@ -144,6 +208,7 @@ plot1 z zmin zmax; plot2 z zmin zmax; + plot3 (); plend (); () Modified: trunk/examples/ocaml/x29.ml =================================================================== --- trunk/examples/ocaml/x29.ml 2008-12-23 16:44:41 UTC (rev 9219) +++ trunk/examples/ocaml/x29.ml 2008-12-23 22:34:51 UTC (rev 9220) @@ -30,7 +30,7 @@ (* Plot a model diurnal cycle of temperature *) let plot1 () = (* Data points every 10 minutes for 1 day *) - let npts = 145 in + let npts = 73 in let xmin = 0.0 in let xmax = 60.0 *. 60.0 *. 24.0 in (* Number of seconds in a day *) @@ -46,8 +46,21 @@ 15.0 -. 5.0 *. cos (2.0 *. pi *. (float_of_int i /. float_of_int npts)) ) in + + (* Set x error bars to +/- 5 minute *) + let xerr1 = Array.map (fun xi -> xi -. 60.0 *. 5.0) x in + let xerr2 = Array.map (fun xi -> xi +. 60.0 *. 5.0) x in + (* Set y error bars to +/- 0.1 deg C *) + let yerr1 = Array.map (fun yi -> yi -. 0.1) y in + let yerr2 = Array.map (fun yi -> yi +. 0.1) y in + pladv 0; + (* Rescale major ticks marks by 0.5 *) + plsmaj 0.0 0.5; + (* Rescale minor ticks and error bar marks by 0.5 *) + plsmin 0.0 0.5; + plvsta (); plwind xmin xmax ymin ymax; @@ -63,6 +76,15 @@ plcol0 4; plline x y; + + plcol0 2; + plerrx xerr1 xerr2 y; + plcol0 3; + plerry x yerr1 yerr2; + + (* Rescale major / minor tick marks back to default *) + plsmin 0.0 1.0; + plsmaj 0.0 1.0; () (* Plot the number of hours of daylight as a function of day for a year *) @@ -101,6 +123,7 @@ plcol0 1; (* Set time format to be abbreviated month name followed by day of month *) pltimefmt "%b %d"; + plprec 1 1; plenv xmin xmax ymin ymax 0 40; @@ -110,6 +133,8 @@ plcol0 4; plline x y; + + plprec 0 0; () let plot3 () = @@ -152,6 +177,8 @@ plcol0 4; + (* Rescale symbol size (used by plpoin) by 0.5 *) + plssym 0.0 0.5; plpoin x y 2; plline x y; () Modified: trunk/examples/ocaml/x31.ml =================================================================== --- trunk/examples/ocaml/x31.ml 2008-12-23 16:44:41 UTC (rev 9219) +++ trunk/examples/ocaml/x31.ml 2008-12-23 22:34:51 UTC (rev 9220) @@ -1,169 +1,222 @@ (* $Id$ - set/get tester + Copyright (C) 2008 Alan W. Irwin + Copyright (C) 2008 Andrew Ross + Copyright (C) 2008 Hezekiah M. Carty + + set/get tester + + 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 + *) +open Printf open Plplot -open Printf -(*--------------------------------------------------------------------------*\ - * Demonstrates absolute positioning of graphs on a page. - \*--------------------------------------------------------------------------*) - -let main () = +let () = let r1 = [|0; 255|] in let g1 = [|255; 0|] in let b1 = [|0; 0|] in let a1 = [|1.0; 1.0|] in + let status = ref 0 in + let failed_if t s = + if t then ( + eprintf s; + status := 1; + ); + in + (* Parse and process command line arguments *) ignore (plparseopts Sys.argv [PL_PARSE_FULL]); - (* Test setting / getting page size *) - let xp, yp, xleng, yleng, xoff, yoff = plgpage () in - let xp2 = xp *. 0.9 in - let yp2 = yp *. 0.9 in - let xleng2 = int_of_float (float_of_int xleng *. 0.9) in - let yleng2 = int_of_float (float_of_int yleng *. 0.9) in - plspage xp2 yp2 xleng2 yleng2 xoff yoff; - let xp, yp, xleng, yleng, xoff, yoff = plgpage () in - if xp <> xp2 || yp <> yp2 || xleng <> xleng2 || yleng <> yleng2 then ( - failwith "plgpage test failed\n"; - ); + (* Test setting / getting compression parameter across plinit. *) + let compression1 = 95 in + plscompression compression1; - plscompression 1; - let compression = plgcompression () in - if (compression <> 1) then ( - failwith "plgcompression test failed\n" - ); + (* Test setting / getting familying parameters across plinit *) + let fam1 = 0 in + let num1 = 10 in + let bmax1 = 1000 in + plsfam fam1 num1 bmax1; - let fam, num, bmax = plgfam () in - plsfam 1 1 100000; - let fam1, num1, bmax1 = plgfam () in - if fam1 <> 1 || num1 <> 1 || bmax1 <> 100000 then ( - failwith "plgfam test failed\n"; - ); - plsfam fam num bmax; + (* Test setting / getting page parameters across plinit *) + let xp1 = 200. in + let yp1 = 200. in + let xleng1 = 400 in + let yleng1 = 200 in + let xoff1 = 10 in + let yoff1 = 20 in + plspage xp1 yp1 xleng1 yleng1 xoff1 yoff1; (* Initialize plplot *) plinit (); + (* Test if device initialization screwed around with the preset + compression parameter. *) + let compression2 = plgcompression () in + printf "Output various PLplot parameters\n"; + printf "compression parameter = %d\n" compression2; + failed_if + (compression2 <> compression1) + "plgcompression test failed\n"; + + (* Test if device initialization screwed around with any of the + preset familying values. *) + let fam2, num2, bmax2 = plgfam () in + printf "family parameters: fam, num, bmax = %d %d %d\n" fam2 num2 bmax2; + failed_if + (fam2 <> fam1 || num2 <> num1 || bmax2 <> bmax1) + "plgfam test failed\n"; + + (* Test if device initialization screwed around with any of the + preset page values. *) + let xp2, yp2, xleng2, yleng2, xoff2, yoff2 = plgpage () in + printf + "page parameters: xp, yp, xleng, yleng, xoff, yoff = %f %f %d %d %d %d\n" + xp2 yp2 xleng2 yleng2 xoff2 yoff2; + failed_if + (xp2 <> xp1 || yp2 <> yp1 || xleng2 <> xleng1 || yleng2 <> yleng1 || + xoff2 <> xoff1 || yoff2 <> yoff1) + "plgpage test failed\n"; + + + (* Exercise plscolor, plscol0, plscmap1, and plscmap1a to make sure + they work without any obvious error messages. *) plscolor 1; - plscol0 1 255 0 0; - plscmap1 r1 g1 b1; plscmap1a r1 g1 b1 a1; - let level = plglevel () in - if level <> 1 then ( - let err = - sprintf "plglevel test failed. Level is %d, but 1 expected.\n" level - in - failwith err; - ); + let level2 = plglevel () in + printf "level parameter = %d\n" level2; + failed_if (level2 != 1) "plglevel test failed.\n"; pladv 0; - plvpor 0.0 1.0 0.0 1.0; + plvpor 0.01 0.99 0.02 0.49; + let xmin, xmax, ymin, ymax = plgvpd () in + printf + "plvpor: xmin, xmax, ymin, ymax = %f %f %f %f\n" + xmin xmax ymin ymax; + failed_if + (xmin <> 0.01 || xmax <> 0.99 || ymin <> 0.02 || ymax <> 0.49) + "plgvpd test failed\n"; + let xmid = 0.5 *. (xmin +. xmax) in + let ymid = 0.5 *. (ymin +. ymax) in + plwind 0.2 0.3 0.4 0.5; let xmin, xmax, ymin, ymax = plgvpw () in - if xmin <> 0.2 || xmax <> 0.3 || ymin <> 0.4 || ymax <> 0.5 then ( - failwith "plgvpw test failed\n"; - ); + printf + "plwind: xmin, xmax, ymin, ymax = %f %f %f %f\n" + xmin xmax ymin ymax; + failed_if + (xmin <> 0.2 || xmax <> 0.3 || ymin <> 0.4 || ymax <> 0.5) + "plgvpw test failed\n"; - let xmin, xmax, ymin, ymax = plgvpd () in - if xmin <> 0.0 || xmax <> 1.0 || ymin <> 0.0 || ymax <> 1.0 then ( - failwith "plgvpd test failed\n"; - ); + (* Get world coordinates for middle of viewport *) + let wx, wy, win = plcalc_world xmid ymid in + printf "world parameters: wx, wy, win = %f %f %d\n" wx wy win; + failed_if + ( + abs_float (wx -. 0.5 *. (xmin +. xmax)) > 1.0E-5 || + abs_float (wy -. 0.5 *. (ymin +. ymax)) > 1.0E-5 + ) + "plcalc_world test failed\n"; - (* Get world coordinates for 0.5,0.5 which is in the middle of - the window *) - let wx, wy, win = plcalc_world 0.5 0.5 in - if abs_float (wx -. 0.25) > 1.0E-5 || abs_float (wy -. 0.45) > 1.0E-5 then ( - failwith "plcalc_world test failed\n"; - ); - - (* Retrieve and print the name of the output file (if any) *) + (* Retrieve and print the name of the output file (if any). + This goes to stderr not stdout since it will vary between tests and + we want stdout to be identical for compare test. *) let fnam = plgfnam () in - printf "Output file name is %s\n" fnam; + if String.length fnam = 0 then + printf "No output file name is set\n" + else + printf"Output file name read\n"; + eprintf "Output file name is %s\n" fnam; (* Set and get the number of digits used to display axis labels *) (* Note digits is currently ignored in pls[xyz]ax and therefore it does not make sense to test the returned value *) plsxax 3 0; - let digmax, _ = plgxax () in - if digmax <> 3 then ( - failwith "plgxax test failed\n"; - ); + let digmax, digits = plgxax () in + printf "x axis parameters: digmax, digits = %d %d\n" digmax digits; + failed_if (digmax <> 3) "plgxax test failed\n"; - plsyax 3 0; - let digmax, _ = plgyax () in - if digmax <> 3 then ( - failwith "plgyax test failed\n"; - ); + plsyax 4 0; + let digmax, digits = plgyax () in + printf "y axis parameters: digmax, digits = %d %d\n" digmax digits; + failed_if (digmax <> 4) "plgyax test failed\n"; - plszax 3 0; - let digmax, _ = plgzax () in - if digmax <> 3 then ( - failwith "plgzax test failed\n"; - ); + plszax 5 0; + let digmax, digits = plgzax () in + printf "z axis parameters: digmax, digits = %d %d\n" digmax digits; + failed_if (digmax <> 5) "plgzax test failed\n"; - (* TODO: Add PL_NOTSET definition to the OCaml bindings? *) - plsdidev 0.05 (-42.0) 0.0 0.0; + plsdidev 0.05 (-42.0) 0.1 0.2; let mar, aspect, jx, jy = plgdidev () in - if mar <> 0.05 || jx <> 0.0 || jy <> 0.0 then ( - failwith "plgdidev test failed\n"; - ); + printf + "device-space window parameters: mar, aspect, jx, jy = %f %f %f %f\n" + mar aspect jx jy; + failed_if + (mar <> 0.05 || jx <> 0.1 || jy <> 0.2) + "plgdidev test failed\n"; plsdiori 1.0; let ori = plgdiori () in - if ori <> 1.0 then ( - failwith "plgdiori test failed\n"; - ); + printf "ori parameter = %f\n" ori; + failed_if (ori <> 1.0) "plgdiori test failed\n"; - plsdiplt 0.1 0.1 0.9 0.9; + plsdiplt 0.1 0.2 0.9 0.8; let xmin, ymin, xmax, ymax = plgdiplt () in - if xmin <> 0.1 || xmax <> 0.9 || ymin <> 0.1 || ymax <> 0.9 then ( - failwith "plgdiplt test failed\n"; - ); + printf + "plot-space window parameters: xmin, ymin, xmax, ymax = %f %f %f %f\n" + xmin ymin xmax ymax; + failed_if + (xmin <> 0.1 || xmax <> 0.9 || ymin <> 0.2 || ymax <> 0.8) + "plgdiplt test failed\n"; plsdiplz 0.1 0.1 0.9 0.9; - let xmin, ymin, xmax, ymax = plgdiplt () in - if - xmin <> 0.1 +. 0.8 *. 0.1 || - xmax <> 0.1 +. 0.8 *. 0.9 || - ymin <> 0.1 +. 0.8 *. 0.1 || - ymax <> 0.1 +. 0.8 *. 0.9 - then ( - failwith "plsdiplz test failed\n"; - ); + let zxmin, zymin, zxmax, zymax = plgdiplt () in + printf + "zoomed plot-space window parameters: xmin, ymin, xmax, ymax = %f %f %f %f\n" + zxmin zymin zxmax zymax; + failed_if ( + abs_float (zxmin -. (xmin +. (xmax -. xmin) *. 0.1)) > 1.0E-5 || + abs_float (zxmax -. (xmin +. (xmax -. xmin) *. 0.9)) > 1.0E-5 || + abs_float (zymin -. (ymin +. (ymax -. ymin) *. 0.1)) > 1.0E-5 || + abs_float (zymax -. (ymin +. (ymax -. ymin) *. 0.9)) > 1.0E-5 + ) "plsdiplz test failed\n"; - plscolbg 0 0 0; + plscolbg 10 20 30; let r, g, b = plgcolbg () in - if r <> 0 || g <> 0 || b <> 0 then ( - failwith "plgcolbg test failed\n"; - ); + printf "background colour parameters: r, g, b = %d %d %d\n" r g b; + failed_if (r <> 10 || g <> 20 || b <> 30) "plgcolbg test failed\n"; - plscolbga 0 0 0 1.0; + plscolbga 20 30 40 0.5; let r, g, b, a = plgcolbga () in - if r <> 0 || g <> 0 || b <> 0 || a <> 1.0 then ( - failwith "plgcolbga test failed\n"; - ); + printf + "background/transparency colour parameters: r, g, b, a = %d %d %d %f\n" + r g b a; + failed_if + (r <> 20 || g <> 30 || b <> 40 || a <> 0.5) + "plgcolbga test failed\n"; - () + plend (); -let () = - let () = - try - main () - with - | Failure err -> - prerr_string err; - plend (); - exit 1; - () - in - plend (); + exit !status; () This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2008-12-31 06:16:12
|
Revision: 9236 http://plplot.svn.sourceforge.net/plplot/?rev=9236&view=rev Author: airwin Date: 2008-12-31 06:16:01 +0000 (Wed, 31 Dec 2008) Log Message: ----------- Make properties consistent with other x*.ml files. Property Changed: ---------------- trunk/examples/ocaml/x15.ml trunk/examples/ocaml/x22.ml Property changes on: trunk/examples/ocaml/x15.ml ___________________________________________________________________ Added: svn:eol-style + native Property changes on: trunk/examples/ocaml/x22.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2008-12-31 06:19:04
|
Revision: 9237 http://plplot.svn.sourceforge.net/plplot/?rev=9237&view=rev Author: airwin Date: 2008-12-31 06:18:54 +0000 (Wed, 31 Dec 2008) Log Message: ----------- AWI for Hezekiah M. Carty. Add example 14 implementation that produces the same results for the two different files as the corresponding C example. Modified Paths: -------------- trunk/examples/ocaml/CMakeLists.txt trunk/examples/ocaml/Makefile.examples.in Added Paths: ----------- trunk/examples/ocaml/x14.ml Modified: trunk/examples/ocaml/CMakeLists.txt =================================================================== --- trunk/examples/ocaml/CMakeLists.txt 2008-12-31 06:16:01 UTC (rev 9236) +++ trunk/examples/ocaml/CMakeLists.txt 2008-12-31 06:18:54 UTC (rev 9237) @@ -34,6 +34,7 @@ "11" "12" "13" + "14" "15" "16" "18" Modified: trunk/examples/ocaml/Makefile.examples.in =================================================================== --- trunk/examples/ocaml/Makefile.examples.in 2008-12-31 06:16:01 UTC (rev 9236) +++ trunk/examples/ocaml/Makefile.examples.in 2008-12-31 06:18:54 UTC (rev 9237) @@ -46,6 +46,7 @@ x11ocaml$(EXEEXT) \ x12ocaml$(EXEEXT) \ x13ocaml$(EXEEXT) \ + x14ocaml$(EXEEXT) \ x15ocaml$(EXEEXT) \ x16ocaml$(EXEEXT) \ x18ocaml$(EXEEXT) \ Added: trunk/examples/ocaml/x14.ml =================================================================== --- trunk/examples/ocaml/x14.ml (rev 0) +++ trunk/examples/ocaml/x14.ml 2008-12-31 06:18:54 UTC (rev 9237) @@ -0,0 +1,305 @@ +(* $Id$ + + Demo of multiple stream/window capability (requires Tk or Tcl-DP). + + Maurice LeBrun + IFS, University of Texas at Austin + + Copyright (C) 2004 Alan W. Irwin + Copyright (C) 2008 Hezekiah M. Carty + + 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 + +*) + +open Printf +open Plplot + +let pi = atan 1.0 *. 4.0 + +let space0 = [||] +let mark0 = [||] +let space1 = [|1500|] +let mark1 = [|1500|] + +let plot1 xscale yscale xoff yoff = + let x = + Array.init 60 (fun i -> xoff +. xscale *. float_of_int (i + 1) /. 60.0) + in + let y = Array.init 60 (fun i -> yoff +. yscale *. x.(i)**2.0) in + + let xmin = x.(0) in + let xmax = x.(59) in + let ymin = y.(0) in + let ymax = y.(59) in + + let xs = Array.init 6 (fun i -> x.(i * 10 + 3)) in + let ys = Array.init 6 (fun i -> y.(i * 10 + 3)) in + + (* Set up the viewport and window using PLENV. The range in X is *) + (* 0.0 to 6.0, and the range in Y is 0.0 to 30.0. The axes are *) + (* scaled separately (just = 0), and we just draw a labelled *) + (* box (axis = 0). *) + + plcol0 1; + plenv xmin xmax ymin ymax 0 0; + plcol0 6; + pllab "(x)" "(y)" "#frPLplot Example 1 - y=x#u2"; + + (* Plot the data points *) + plcol0 9; + plpoin xs ys 9; + + (* Draw the line through the data *) + plcol0 4; + plline x y; + plflush (); + () + +let plot2 () = + (* Set up the viewport and window using PLENV. The range in X is -2.0 to + 10.0, and the range in Y is -0.4 to 2.0. The axes are scaled separately + (just = 0), and we draw a box with axes (axis = 1). *) + plcol0 1; + plenv (-2.0) 10.0 (-0.4) 1.2 0 1; + plcol0 2; + pllab "(x)" "sin(x)/x" "#frPLplot Example 1 - Sinc Function"; + + (* Fill up the arrays *) + let x = Array.init 100 (fun i -> (float_of_int i -. 19.0) /. 6.0) in + let y = + Array.map (fun xi -> if xi <> 0.0 then sin xi /. xi else 1.0) x + in + + (* Draw the line *) + plcol0 3; + plline x y; + plflush (); + () + +let plot3 () = + (* For the final graph we wish to override the default tick intervals, and + so do not use PLENV *) + pladv 0; + + (* Use standard viewport, and define X range from 0 to 360 degrees, Y range + from -1.2 to 1.2. *) + plvsta (); + plwind 0.0 360.0 (-1.2) 1.2; + + (* Draw a box with ticks spaced 60 degrees apart in X, and 0.2 in Y. *) + plcol0 1; + plbox "bcnst" 60.0 2 "bcnstv" 0.2 2; + + (* Superimpose a dashed line grid, with 1.5 mm marks and spaces. *) + plstyl mark1 space1; + plcol0 2; + plbox "g" 30.0 0 "g" 0.2 0; + plstyl mark0 space0; + + plcol0 3; + pllab "Angle (degrees)" "sine" "#frPLplot Example 1 - Sine function"; + + let x = Array.init 101 (fun i -> 3.6 *. float_of_int i) in + let y = Array.map (fun xi -> sin (xi *. pi /. 180.0)) x in + + plcol0 4; + plline x y; + plflush (); + () + +let plot4 () = + let dtr d = float_of_int d *. pi /. 180.0 in + let x0 = Array.init 361 (fun i -> cos (dtr i)) in + let y0 = Array.init 361 (fun i -> sin (dtr i)) in + + (* Set up viewport and window, but do not draw box *) + plenv (-1.3) 1.3 (-1.3) 1.3 1 (-2); + for i = 1 to 10 do + let x = Array.map (fun xj -> 0.1 *. float_of_int i *. xj) x0 in + let y = Array.map (fun yj -> 0.1 *. float_of_int i *. yj) y0 in + + (* Draw circles for polar grid *) + plline x y; + done; + + plcol0 2; + for i = 0 to 11 do + let theta = 30 * i in + let dx = cos (dtr theta) in + let dy = sin (dtr theta) in + + (* Draw radial spokes for polar grid *) + pljoin 0.0 0.0 dx dy; + let text = sprintf "%d" theta in + + (* Write labels for angle *) + + (* Slightly off zero to avoid floating point logic flips at 90 and 270 deg. *) + if dx >= -0.00001 then + plptex dx dy dx dy (-0.15) text + else + plptex dx dy (-.dx) (-.dy) 1.15 text; + done; + + (* Draw the graph *) + let rs = Array.init 361 (fun i -> sin (dtr (5 * i))) in + let x = Array.mapi (fun i xi -> xi *. rs.(i)) x0 in + let y = Array.mapi (fun i yi -> yi *. rs.(i)) y0 in + plcol0 3; + plline x y; + + plcol0 4; + plmtex "t" 2.0 0.5 0.5 "#frPLplot Example 3 - r(#gh)=sin 5#gh"; + plflush (); + () + +(* Demonstration of contour plotting *) +let xpts = 35 +let ypts = 46 +let xspa = 2.0 /. float_of_int (xpts - 1) +let yspa = 2.0 /. float_of_int (ypts - 1) + +let tr = [|xspa; 0.0; -1.0; 0.0; yspa; -1.0|] + +let mypltr x y = + tr.(0) *. x +. tr.(1) *. y +. tr.(2), + tr.(3) *. x +. tr.(4) *. y +. tr.(5) + +let clevel = [|-1.0; -0.8; -0.6; -0.4; -0.2; 0.0; 0.2; 0.4; 0.6; 0.8; 1.0|] + +let plot5 () = + let mark = [|1500|] in + let space = [|1500|] in + + (* Set up function arrays *) + let z = Array.make_matrix xpts ypts 0.0 in + let w = Array.make_matrix xpts ypts 0.0 in + + for i = 0 to xpts - 1 do + let xx = float_of_int (i - (xpts / 2)) /. float_of_int (xpts / 2) in + for j = 0 to ypts - 1 do + let yy = + float_of_int (j - (ypts / 2)) /. float_of_int (ypts / 2) -. 1.0 + in + z.(i).(j) <- xx *. xx -. yy *. yy; + w.(i).(j) <- 2.0 *. xx *. yy; + done + done; + + plenv (-1.0) 1.0 (-1.0) 1.0 0 0; + plcol0 2; + plset_pltr mypltr; + plcont z 1 xpts 1 ypts clevel; + plstyl mark space; + plcol0 3; + plcont w 1 xpts 1 ypts clevel; + plcol0 1; + pllab "X Coordinate" "Y Coordinate" "Streamlines of flow"; + plflush (); + () + +(*--------------------------------------------------------------------------*\ + * Plots several simple functions from other example programs. + * + * This version sends the output of the first 4 plots (one page) to two + * independent streams. +\*--------------------------------------------------------------------------*) +let () = + let geometry_master = "500x410+100+200" in + let geometry_slave = "500x410+650+200" in + + (* plplot initialization *) + (* Parse and process command line arguments *) + ignore (plparseopts Sys.argv [PL_PARSE_FULL]); + + let driver = plgdev () in + + printf "Demo of multiple output streams via the %s driver.\n" driver; + printf "Running with the second stream as slave to the first.\n"; + printf "\n"; + + (* Set up first stream *) + ignore (plsetopt "geometry" geometry_master); + + plsdev driver; + plssub 2 2; + plinit (); + + (* Start next stream *) + plsstrm 1; + + (* Turn off pause to make this a slave (must follow master) *) + plsetopt "geometry" geometry_slave; + plspause false; + plsdev driver; + plinit (); + + (* Set up the data & plot *) + (* Original case *) + plsstrm 0; + + let xscale = 6.0 in + let yscale = 1.0 in + let xoff = 0.0 in + let yoff = 0.0 in + plot1 xscale yscale xoff yoff; + + (* Set up the data & plot *) + let xscale = 1.0 in + let yscale = 1.0e+6 in + plot1 xscale yscale xoff yoff; + + (* Set up the data & plot *) + let xscale = 1.0 in + let yscale = 1.e-6 in + let digmax = 2 in + plsyax digmax 0; + plot1 xscale yscale xoff yoff; + + (* Set up the data & plot *) + let xscale = 1.0 in + let yscale = 0.0014 in + let yoff = 0.0185 in + let digmax = 5 in + plsyax digmax 0; + plot1 xscale yscale xoff yoff; + + (* To slave *) + (* The pleop() ensures the eop indicator gets lit. *) + plsstrm 1; + plot4 (); + pleop (); + + (* Back to master *) + plsstrm 0; + plot2 (); + plot3 (); + + (* To slave *) + plsstrm 1; + plot5 (); + pleop (); + + (* Back to master to wait for user to advance *) + plsstrm 0; + pleop (); + + (* Call plend to finish off. *) + plend (); + () + Property changes on: trunk/examples/ocaml/x14.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2009-08-09 15:53:00
|
Revision: 10224 http://plplot.svn.sourceforge.net/plplot/?rev=10224&view=rev Author: airwin Date: 2009-08-09 15:52:51 +0000 (Sun, 09 Aug 2009) Log Message: ----------- Use same CMakeLists.txt file for the core build (if BUILD_TEST=ON) and install of the OCaml examples and the install-tree build of the OCaml examples. Modified Paths: -------------- trunk/examples/ocaml/CMakeLists.txt Removed Paths: ------------- trunk/examples/ocaml/CMakeLists.txt_installed_examples_ocaml Modified: trunk/examples/ocaml/CMakeLists.txt =================================================================== --- trunk/examples/ocaml/CMakeLists.txt 2009-08-08 21:05:19 UTC (rev 10223) +++ trunk/examples/ocaml/CMakeLists.txt 2009-08-09 15:52:51 UTC (rev 10224) @@ -4,6 +4,7 @@ # # # Copyright (C) 2008 Andrew Ross +# Copyright (C) 2009 Alan W. Irwin # # This file is part of PLplot. # @@ -20,6 +21,12 @@ # along with PLplot; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# N.B. This file is used for both the core build (which installs the examples +# and optionally [depending on BUILD_TEST} builds them) and the installed +# examples build. The core build has BUILD_TEST OFF or ON at user option +# and CORE_BUILD always ON. The installed examples build always has +# BUILD_TEST ON and CORE_BUILD OFF. + set(ocaml_STRING_INDICES "01" "02" @@ -54,14 +61,50 @@ "31" ) -set(ocaml_SRCS) -set(ocaml_EXTRA_CLEAN_FILES) -foreach(STRING_INDEX ${ocaml_STRING_INDICES}) - set(EXECUTABLE_NAME x${STRING_INDEX}ocaml) - set(SOURCE_FILE x${STRING_INDEX}.ml) - set(ocaml_SRCS ${ocaml_SRCS} ${SOURCE_FILE}) - set(ocaml_EXTRA_CLEAN_FILES ${ocaml_EXTRA_CLEAN_FILES} x${STRING_INDEX}.cmo x${STRING_INDEX}.cmi) - if(BUILD_TEST) +if(CORE_BUILD) + set(ocaml_SRCS) + foreach(STRING_INDEX ${ocaml_STRING_INDICES}) + set(SOURCE_FILE x${STRING_INDEX}.ml) + set(ocaml_SRCS ${ocaml_SRCS} ${SOURCE_FILE}) + endforeach(STRING_INDEX ${ocaml_STRING_INDICES}) + + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/Makefile.examples.in + ${CMAKE_CURRENT_BINARY_DIR}/Makefile.examples + ) + + install(FILES ${ocaml_SRCS} + DESTINATION ${DATA_DIR}/examples/ocaml + ) + + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Makefile.examples + DESTINATION ${DATA_DIR}/examples/ocaml + RENAME Makefile + ) + + install(FILES CMakeLists.txt + DESTINATION ${DATA_DIR}/examples/ocaml + ) + +endif(CORE_BUILD) + +if(BUILD_TEST) + set(ocaml_EXTRA_CLEAN_FILES) + if(CORE_BUILD) + set(I_OPTION ${CMAKE_BINARY_DIR}/bindings/ocaml/${OCAML_BUILD_DIR}) + set(ccopt_OPTION "-L ${CMAKE_BINARY_DIR}/src -Wl,-rpath -Wl,${CMAKE_BINARY_DIR}/src ") + set(core_DEPENDS plplot${LIB_TAG}) + else(CORE_BUILD) + set(I_OPTION ${OCAML_INSTALL_DIR}/plplot) + set(ccopt_OPTION "-L ${CMAKE_INSTALL_LIBDIR} -Wl,-rpath -Wl,${CMAKE_INSTALL_LIBDIR} ") + set(core_DEPENDS) + endif(CORE_BUILD) + + set_property(GLOBAL PROPERTY TARGETS_examples_ocaml) + foreach(STRING_INDEX ${ocaml_STRING_INDICES}) + set(EXECUTABLE_NAME x${STRING_INDEX}ocaml) + set(SOURCE_FILE x${STRING_INDEX}.ml) + set(ocaml_EXTRA_CLEAN_FILES ${ocaml_EXTRA_CLEAN_FILES} x${STRING_INDEX}.cmo x${STRING_INDEX}.cmi) # Copy source code to build tree since ocamlc is a bit broken and will # otherwise litter the source tree with intermediate files add_custom_command( @@ -74,12 +117,12 @@ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE_NAME} COMMAND ${OCAMLC} -g - -I ${CMAKE_BINARY_DIR}/bindings/ocaml/${OCAML_BUILD_DIR} - -ccopt "-L ${CMAKE_BINARY_DIR}/src -Wl,-rpath -Wl,${CMAKE_BINARY_DIR}/src " + -I ${I_OPTION} + -ccopt ${ccopt_OPTION} plplot.cma -o ${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE_NAME} ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_FILE} - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_FILE} plplot${LIB_TAG} + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_FILE} ${core_DEPENDS} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} VERBATIM ) @@ -87,27 +130,7 @@ target_${EXECUTABLE_NAME} ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE_NAME} ) - endif(BUILD_TEST) -endforeach(STRING_INDEX ${ocaml_STRING_INDICES}) - -configure_file( -${CMAKE_CURRENT_SOURCE_DIR}/Makefile.examples.in -${CMAKE_CURRENT_BINARY_DIR}/Makefile.examples -) - -set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${ocaml_EXTRA_CLEAN_FILES}") - -install(FILES ${ocaml_SRCS} - DESTINATION ${DATA_DIR}/examples/ocaml - ) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Makefile.examples - DESTINATION ${DATA_DIR}/examples/ocaml - RENAME Makefile - ) - -install(FILES CMakeLists.txt_installed_examples_ocaml - DESTINATION ${DATA_DIR}/examples/ocaml - RENAME CMakeLists.txt - ) - + set_property(GLOBAL APPEND PROPERTY TARGETS_examples_ocaml target_${EXECUTABLE_NAME}) + endforeach(STRING_INDEX ${ocaml_STRING_INDICES}) + set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${ocaml_EXTRA_CLEAN_FILES}") +endif(BUILD_TEST) Deleted: trunk/examples/ocaml/CMakeLists.txt_installed_examples_ocaml =================================================================== --- trunk/examples/ocaml/CMakeLists.txt_installed_examples_ocaml 2009-08-08 21:05:19 UTC (rev 10223) +++ trunk/examples/ocaml/CMakeLists.txt_installed_examples_ocaml 2009-08-09 15:52:51 UTC (rev 10224) @@ -1,86 +0,0 @@ -# -*- mode: cmake -*- -# ocaml/CMakeLists.txt for installed PLplot examples -### Process this file with cmake to produce Makefile -# -# -# Copyright (C) 2009 Alan W. Irwin -# -# This file is part of PLplot. -# -# PLplot is free software; you can redistribute it and/or modify -# it under the terms of the GNU Library General Public License as published -# by the Free Software Foundation; version 2 of the License. -# -# 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 - -set(ocaml_STRING_INDICES - "01" - "02" - "03" - "04" - "05" - "06" - "07" - "08" - "09" - "10" - "11" - "12" - "13" - "14" - "15" - "16" - "17" - "18" - "19" - "20" - "21" - "22" - "23" - "24" - "25" - "26" - "27" - "28" - "29" - "30" - "31" - ) - -foreach(STRING_INDEX ${ocaml_STRING_INDICES}) - set(EXECUTABLE_NAME x${STRING_INDEX}ocaml) - set(SOURCE_FILE x${STRING_INDEX}.ml) - # Copy source code to build tree since ocamlc is a bit broken and will - # otherwise litter the source tree with intermediate files - add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_FILE} - COMMAND ${CMAKE_COMMAND} - -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE_FILE} ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_FILE} - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE_FILE} - ) - add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE_NAME} - COMMAND ${OCAMLC} - -g - -I ${OCAML_INSTALL_DIR}/plplot - -ccopt "-L ${CMAKE_INSTALL_LIBDIR} -Wl,-rpath -Wl,${CMAKE_INSTALL_LIBDIR} " - plplot.cma - -o ${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE_NAME} - ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_FILE} - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_FILE} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - VERBATIM - ) - add_custom_target( - target_${EXECUTABLE_NAME} ALL - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE_NAME} - ) - set_property(GLOBAL APPEND PROPERTY TARGETS_examples_ocaml target_${EXECUTABLE_NAME}) -endforeach(STRING_INDEX ${ocaml_STRING_INDICES}) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hez...@us...> - 2009-09-08 18:08:25
|
Revision: 10387 http://plplot.svn.sourceforge.net/plplot/?rev=10387&view=rev Author: hezekiahcarty Date: 2009-09-08 18:08:19 +0000 (Tue, 08 Sep 2009) Log Message: ----------- Add an example using the new OCaml Plplot.Plot module This is based on the standard PLplot example 1, but it is not identical. I do not currently plan to make the Plplot.Plot and Plplot.Quick_plot examples perfectly mirror their standard example counterparts. Modified Paths: -------------- trunk/examples/ocaml/CMakeLists.txt Added Paths: ----------- trunk/examples/ocaml/xplot01.ml Modified: trunk/examples/ocaml/CMakeLists.txt =================================================================== --- trunk/examples/ocaml/CMakeLists.txt 2009-09-08 18:06:02 UTC (rev 10386) +++ trunk/examples/ocaml/CMakeLists.txt 2009-09-08 18:08:19 UTC (rev 10387) @@ -59,6 +59,7 @@ "29" "30" "31" + "plot01" ) if(CORE_BUILD) Added: trunk/examples/ocaml/xplot01.ml =================================================================== --- trunk/examples/ocaml/xplot01.ml (rev 0) +++ trunk/examples/ocaml/xplot01.ml 2009-09-08 18:08:19 UTC (rev 10387) @@ -0,0 +1,238 @@ +(* + Simple line plot and multiple windows demo, using the Plot module. + + Copyright (C) 2008, 2009 Hezekiah M. Carty + + 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 + +*) + +open Plplot +open Printf + +module P = Plot + +type ex1_params = { + xscale : float; + yscale : float; + xoff : float; + yoff : float; +} + +let pi = atan 1.0 *. 4.0 + +(* This function will be called just before PLplot is initialized. *) +let pre () = + P.load_palette (P.Indexed "cmap0_alternate.pal"); + ignore (plparseopts Sys.argv [PL_PARSE_FULL]); + () + +let plot1 ?stream ?fontset (do_test, test_xor) params = + let x = + Array.init 60 ( + fun i -> + params.xoff +. params.xscale *. (float_of_int i +. 1.0) /. 60.0 + ) + in + let y = + Array.init 60 ( + fun i -> + params.yoff +. params.yscale *. x.(i) ** 2.0 + ) + in + + let xmin = x.(0) in + let xmax = x.(59) in + let ymin = y.(0) in + let ymax = y.(59) in + + (* If no stream was provided, initialize a new one. *) + let stream = + match stream, fontset with + | None, Some fs -> ( + (* Initialize plplot *) + (* Divide page into 2x2 plots *) + (* plplot initialization *) + let stream = + P.init ~pre ~pages:(2, 2) xmin xmax ymin ymax + P.Greedy (P.Window P.Cairo) + in + + (* Select font set as per input flag *) + P.with_stream ~stream (fun () -> plfontld (if fs then 1 else 0)); + stream + ) + | Some s, None -> ( + (* Set up the viewport and window. The range in X is + 0.0 to 6.0, and the range in Y is 0.0 to 30.0. The axes are + scaled separately, and we just draw a labelled box. *) + P.set_color ~stream:s P.Black; + P.start_page ~stream:s xmin xmax ymin ymax P.Greedy; + s + ) + | _ -> invalid_arg "Provide a stream or font option, not both" + in + + let xs = Array.init 6 (fun i -> x.(i * 10 + 3)) in + let ys = Array.init 6 (fun i -> y.(i * 10 + 3)) in + + P.set_color ~stream P.Blue; + P.label ~stream "(x)" "(y)" "#frPLplot Example 1 - y=x#u2"; + + P.plot ~stream [ + (* Plot the data points *) + P.points P.Green xs ys 9; + (* Draw the line through the data *) + P.lines P.Red x y; + ]; + + (* Show the axes *) + P.finish_page ~stream 0.0 0.0; + + (* All done. *) + stream + +let plot2 stream = + (* Set up the viewport and window. The range in X is -2.0 to + 10.0, and the range in Y is -0.4 to 2.0. The axes are scaled separately, + and we draw a box with axes. *) + P.set_color ~stream P.Black; + P.start_page ~stream (-2.0) 10.0 (-0.4) 1.2 P.Greedy; + + P.set_color ~stream P.Blue; + P.label ~stream "(x)" "sin(x)/x" "#frPLplot Example 1 - Sinc Function"; + + (* Fill up the arrays *) + let x = Array.init 100 (fun i -> (float_of_int i -. 19.0) /. 6.0) in + let y = + Array.init 100 ( + fun i -> + if x.(i) <> 0.0 then + sin x.(i) /. x.(i) + else + 1.0 + ) + in + + (* Draw the line *) + (* TODO: Add width support to Plot.lines *) + P.plot ~stream [P.lines P.Brown x y]; + + (* Show the axes *) + P.finish_page ~stream 0.0 0.0; + + (* All done. *) + () + +let plot3 stream = + let space1 = 1500 in + let mark1 = 1500 in + + (* Use standard viewport, and define X range from 0 to 360 degrees, Y range + from -1.2 to 1.2.*) + P.start_page ~stream 0.0 360.0 (-1.2) 1.2 P.Greedy; + + (* Superimpose a dashed line grid, with 1.5 mm marks and spaces. *) + P.with_stream ~stream ( + fun () -> + plstyl [|mark1|] [|space1|]; + P.set_color P.Yellow; + P.plot_axes 30.0 0 0.2 0 [P.Major_grid] [P.Major_grid]; + plstyl [||] [||]; + ); + + P.set_color ~stream P.Red; + P.label ~stream "Angle (degrees)" "sine" + "#frPLplot Example 1 - Sine function"; + + let x = Array.init 101 (fun i -> 3.6 *. float_of_int i) in + let y = Array.init 101 (fun i -> sin (x.(i) *. pi /. 180.0)) in + + P.plot ~stream [P.lines P.Red x y]; + + (* For the final graph we wish to override the default axis attributes, + including tick intervals. + Draw a box with ticks spaced 60 degrees apart in X, and 0.2 in Y. *) + let stream = + { + stream with + P.x_axis = [P.Frame0; P.Frame1; P.Label; P.Minor_ticks; P.Major_ticks]; + P.y_axis = [ + P.Frame0; P.Frame1; P.Label; P.Minor_ticks; P.Major_ticks; + P.Vertical_label + ]; + } + in + + P.finish_page ~stream 60.0 0.2; + + (* All done. *) + () + +(*--------------------------------------------------------------------------*\ + * main + * + * Generates several simple line plots. Demonstrates: + * - subwindow capability + * - setting up the window, drawing plot, and labelling + * - changing the color + * - automatic axis rescaling to exponential notation + * - placing the axes in the middle of the box + * - gridded coordinate axes +\*--------------------------------------------------------------------------*) +let main fontset = + (* Get version number, just for kicks *) + let plplot_version = plgver () in + fprintf stdout "PLplot library version: %s\n" plplot_version; + + (* Set up the data *) + (* Original case *) + let plot1_params = + { + xscale = 6.0; + yscale = 1.0; + xoff = 0.0; + yoff = 0.0; + } + in + (* Do a plot, and receive a new stream *) + let stream = plot1 ~fontset (false, false) plot1_params in + + (* Set up the data *) + let plot1_params = + { + plot1_params with + xscale = 1.0; + yscale = 0.0014; + yoff = 0.0185; + } + in + (* Do a plot *) + let digmax = 5 in + P.with_stream ~stream (fun () -> plsyax digmax 0); + let stream = plot1 ~stream (true, true) plot1_params in + + plot2 stream; + + plot3 stream; + + (* Don't forget to finish off! Each function does the needed end-of-page + steps, so all we need to do here is wrap up the plotting session. *) + P.finish ~stream ~f:(fun () -> ()) 0.0 0.0; + () + +let () = main true This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2009-09-21 02:35:22
|
Revision: 10445 http://plplot.svn.sourceforge.net/plplot/?rev=10445&view=rev Author: airwin Date: 2009-09-21 02:35:09 +0000 (Mon, 21 Sep 2009) Log Message: ----------- Apply patch from Hez to put in proper sleeps for example 17 to make the results look interactive. Tweak build so that unix.cma (which is now needed by example 17) is only linked in for example 17. Modified Paths: -------------- trunk/examples/ocaml/CMakeLists.txt trunk/examples/ocaml/x17.ml Modified: trunk/examples/ocaml/CMakeLists.txt =================================================================== --- trunk/examples/ocaml/CMakeLists.txt 2009-09-21 01:59:00 UTC (rev 10444) +++ trunk/examples/ocaml/CMakeLists.txt 2009-09-21 02:35:09 UTC (rev 10445) @@ -107,6 +107,12 @@ set(ocaml_EXTRA_CLEAN_FILES ${ocaml_EXTRA_CLEAN_FILES} x${STRING_INDEX}.cmo x${STRING_INDEX}.cmi) # Copy source code to build tree since ocamlc is a bit broken and will # otherwise litter the source tree with intermediate files + if(STRING_INDEX STREQUAL "17") + set(unix_bytecode_lib unix.cma) + else(STRING_INDEX STREQUAL "17") + set(unix_bytecode_lib) + endif(STRING_INDEX STREQUAL "17") + add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_FILE} COMMAND ${CMAKE_COMMAND} @@ -120,6 +126,7 @@ -I ${I_OPTION} -ccopt ${ccopt_OPTION} plplot.cma + ${unix_bytecode_lib} -o ${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE_NAME} ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_FILE} DEPENDS Modified: trunk/examples/ocaml/x17.ml =================================================================== --- trunk/examples/ocaml/x17.ml 2009-09-21 01:59:00 UTC (rev 10444) +++ trunk/examples/ocaml/x17.ml 2009-09-21 02:35:09 UTC (rev 10445) @@ -26,6 +26,10 @@ let pi = atan 1.0 *. 4.0 +(** [sleep time] sleeps for [time] seconds. *) +let sleep time = + ignore (Unix.select [] [] [] time) + let () = let nsteps = 1000 in @@ -127,17 +131,8 @@ let dt = 0.1 in for n = 0 to nsteps - 1 do - (* TODO : Add some sort of sleeping here -#ifdef PL_HAVE_USLEEP - usleep(10000); /* wait a little (10 ms) to simulate time elapsing */ -#else -# ifdef HAS_POLL - poll(0,0,10); -# else - { int i; for( i=0; i<1000000; i++ ); } -# endif -#endif - *) + (* Wait a little (10 ms) to simulate time elapsing *) + sleep 1e-2; let t = float_of_int n *. dt in let noise = plrandd () -. 0.5 in y1 := !y1 +. noise; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hez...@us...> - 2009-09-21 19:22:49
|
Revision: 10449 http://plplot.svn.sourceforge.net/plplot/?rev=10449&view=rev Author: hezekiahcarty Date: 2009-09-21 19:22:41 +0000 (Mon, 21 Sep 2009) Log Message: ----------- Build the install tree OCaml examples with ocamlopt if it is available Modified Paths: -------------- trunk/examples/ocaml/CMakeLists.txt trunk/examples/ocaml/Makefile.examples.in Modified: trunk/examples/ocaml/CMakeLists.txt =================================================================== --- trunk/examples/ocaml/CMakeLists.txt 2009-09-21 18:30:09 UTC (rev 10448) +++ trunk/examples/ocaml/CMakeLists.txt 2009-09-21 19:22:41 UTC (rev 10449) @@ -69,6 +69,16 @@ list(APPEND ocaml_SRCS x${STRING_INDEX}.ml) endforeach(STRING_INDEX ${ocaml_STRING_INDICES}) + # Use ocamlopt if it is available, otherwise ocamlc. + # Make sure the libraries match the compiler. + set(OCAML_EXAMPLE_COMPILER ${OCAMLC}) + set(OCAML_EXAMPLE_LIBEXT cma) + set(OCAML_EXAMPLE_CLEAN "*.cm?") + if (OCAMLOPT) + set(OCAML_EXAMPLE_COMPILER ${OCAMLOPT}) + set(OCAML_EXAMPLE_LIBEXT cmxa) + set(OCAML_EXAMPLE_CLEAN "*.cm? *.o") + endif (OCAMLOPT) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/Makefile.examples.in ${CMAKE_CURRENT_BINARY_DIR}/Makefile.examples Modified: trunk/examples/ocaml/Makefile.examples.in =================================================================== --- trunk/examples/ocaml/Makefile.examples.in 2009-09-21 18:30:09 UTC (rev 10448) +++ trunk/examples/ocaml/Makefile.examples.in 2009-09-21 19:22:41 UTC (rev 10449) @@ -21,7 +21,7 @@ # along with the file PLplot; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -OCAMLC = @OCAMLC@ +OCAMLC = @OCAML_EXAMPLE_COMPILER@ EXEEXT = @EXEEXT@ @pkg_config_true@LIB_TAG = @LIB_TAG@ @@ -29,8 +29,8 @@ @pkg_config_true@RPATHCMD = -ccopt "@RPATHCMD@" OCAML_CFLAGS = -g -I @OCAML_INSTALL_DIR@/plplot -@pkg_config_true@OCAML_LIBS = $(RPATHCMD) -ccopt "-L@CMAKE_INSTALL_LIBDIR@" plplot.cma -@pkg_config_false@OCAML_LIBS = -ccopt "-L@CMAKE_INSTALL_LIBDIR@" plplot.cma +@pkg_config_true@OCAML_LIBS = $(RPATHCMD) -ccopt "-L@CMAKE_INSTALL_LIBDIR@" plplot.@OCAML_EXAMPLE_LIBEXT@ unix.@OCAML_EXAMPLE_LIBEXT@ +@pkg_config_false@OCAML_LIBS = -ccopt "-L@CMAKE_INSTALL_LIBDIR@" plplot.@OCAML_EXAMPLE_LIBEXT@ unix.@OCAML_EXAMPLE_LIBEXT@ EXECUTABLES_list = \ x01ocaml$(EXEEXT) \ @@ -68,7 +68,7 @@ all: $(EXECUTABLES_list) clean: - rm -f $(EXECUTABLES_list) *.cm? + rm -f $(EXECUTABLES_list) @OCAML_EXAMPLE_CLEAN@ .mlocaml$(EXEEXT): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hez...@us...> - 2009-09-30 19:39:20
|
Revision: 10500 http://plplot.svn.sourceforge.net/plplot/?rev=10500&view=rev Author: hezekiahcarty Date: 2009-09-30 19:39:01 +0000 (Wed, 30 Sep 2009) Log Message: ----------- Add CMake logic to build Plcairo examples; Add first Plcairo example This example illustrates a simple use of PLplot + OCaml + Cairo + Gtk to display plot output in a GUI window. Modified Paths: -------------- trunk/examples/ocaml/CMakeLists.txt Added Paths: ----------- trunk/examples/ocaml/xgtk_interface.ml Modified: trunk/examples/ocaml/CMakeLists.txt =================================================================== --- trunk/examples/ocaml/CMakeLists.txt 2009-09-30 19:37:38 UTC (rev 10499) +++ trunk/examples/ocaml/CMakeLists.txt 2009-09-30 19:39:01 UTC (rev 10500) @@ -63,6 +63,11 @@ "plot01" ) +set(plcairo_STRING_INDICES + "gtk_interface" + ) + +# PLplot examples if(CORE_BUILD) set(ocaml_SRCS) foreach(STRING_INDEX ${ocaml_STRING_INDICES}) @@ -135,9 +140,9 @@ # Copy source code to build tree since ocamlc is a bit broken and will # otherwise litter the source tree with intermediate files if(STRING_INDEX STREQUAL "17") - set(unix_bytecode_lib unix.${ocaml_lib_extension}) + set(unix_lib unix.${ocaml_lib_extension}) else(STRING_INDEX STREQUAL "17") - set(unix_bytecode_lib) + set(unix_lib) endif(STRING_INDEX STREQUAL "17") add_custom_command( @@ -146,6 +151,7 @@ -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE_FILE} ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_FILE} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE_FILE} ) + add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE_NAME} COMMAND ${ocaml_compiler} @@ -153,7 +159,7 @@ -I ${I_OPTION} -ccopt ${ccopt_OPTION} plplot.${ocaml_lib_extension} - ${unix_bytecode_lib} + ${unix_lib} -o ${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE_NAME} ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_FILE} DEPENDS @@ -174,3 +180,119 @@ endforeach(STRING_INDEX ${ocaml_STRING_INDICES}) set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${ocaml_EXTRA_CLEAN_FILES}") endif(BUILD_TEST) + +# Plcairo examples +if(CORE_BUILD AND OCAML_HAS_CAIRO AND OCAML_HAS_GTK) + set(ocaml_SRCS) + foreach(STRING_INDEX ${plcairo_STRING_INDICES}) + list(APPEND ocaml_SRCS x${STRING_INDEX}.ml) + endforeach(STRING_INDEX ${plcairo_STRING_INDICES}) + + # Use ocamlopt if it is available, otherwise ocamlc. + # Make sure the libraries match the compiler. + if (OCAMLOPT) + set(OCAML_EXAMPLE_COMPILER opt) + set(OCAML_EXAMPLE_LIBEXT cmxa) + set(OCAML_EXAMPLE_CLEAN "*.cm? *.o") + else (OCAMLOPT) + set(OCAML_EXAMPLE_COMPILER c) + set(OCAML_EXAMPLE_LIBEXT cma) + set(OCAML_EXAMPLE_CLEAN "*.cm?") + endif (OCAMLOPT) + + #configure_file( + # ${CMAKE_CURRENT_SOURCE_DIR}/Makefile.examples.in + # ${CMAKE_CURRENT_BINARY_DIR}/Makefile.examples + # ) + + install(FILES ${ocaml_SRCS} + DESTINATION ${DATA_DIR}/examples/ocaml + ) + + #install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Makefile.examples + # DESTINATION ${DATA_DIR}/examples/ocaml + # RENAME Makefile + # ) + + #install(FILES CMakeLists.txt + # DESTINATION ${DATA_DIR}/examples/ocaml + # ) + +endif(CORE_BUILD) + +if(BUILD_TEST) + # Default to using ocaml if ocamlopt is not available. Make sure the proper + # files are cleaned up after a build, depending on the compiler used. + if (OCAMLOPT) + set(ocaml_compiler opt) + set(ocaml_lib_extension cmxa) + set(ocaml_cleanup_extensions cmx cmi o) + else (OCAMLOPT) + set(ocaml_compiler c) + set(ocaml_lib_extension cma) + set(ocaml_cleanup_extensions cmo cmi) + endif (OCAMLOPT) + + set(ocaml_EXTRA_CLEAN_FILES) + if(CORE_BUILD) + set(I_OPTION_PLPLOT ${CMAKE_BINARY_DIR}/bindings/ocaml) + set(I_OPTION_PLCAIRO ${CMAKE_BINARY_DIR}/bindings/ocaml/plcairo) + set(ccopt_OPTION "-L ${CMAKE_BINARY_DIR}/src -Wl,-rpath -Wl,${CMAKE_BINARY_DIR}/src ") + else(CORE_BUILD) + set(I_OPTION_PLPLOT ${OCAML_INSTALL_DIR}/plplot) + set(I_OPTION_PLCAIRO ${OCAML_INSTALL_DIR}/plcairo) + set(ccopt_OPTION "-L ${CMAKE_INSTALL_LIBDIR} -Wl,-rpath -Wl,${CMAKE_INSTALL_LIBDIR} ") + endif(CORE_BUILD) + + get_property(files_plcairo_ocaml GLOBAL PROPERTY FILES_plcairo_ocaml) + # These are set above, in the core PLplot examples section + #set_property(GLOBAL PROPERTY TARGETS_examples_ocaml) + #set_property(GLOBAL PROPERTY FILES_examples_ocaml) + foreach(STRING_INDEX ${plcairo_STRING_INDICES}) + set(EXECUTABLE_NAME x${STRING_INDEX}ocaml) + set(SOURCE_FILE x${STRING_INDEX}.ml) + foreach(EXTENSION ${ocaml_cleanup_extensions}) + set(ocaml_EXTRA_CLEAN_FILES ${ocaml_EXTRA_CLEAN_FILES} x${STRING_INDEX}.${EXTENSION}) + endforeach(EXTENSION ocaml_cleanup_extensions) + + # Copy source code to build tree since ocamlc is a bit broken and will + # otherwise litter the source tree with intermediate files + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_FILE} + COMMAND ${CMAKE_COMMAND} + -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE_FILE} ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_FILE} + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE_FILE} + ) + + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE_NAME} + COMMAND ${OCAMLFIND} ${ocaml_compiler} + -package cairo.lablgtk2 + -linkpkg + -g + -I ${I_OPTION_PLPLOT} + -I ${I_OPTION_PLCAIRO} + -ccopt ${ccopt_OPTION} + plplot.${ocaml_lib_extension} + plcairo.${ocaml_lib_extension} + -o ${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE_NAME} + ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_FILE} + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_FILE} + ${files_plplot_ocaml} + ${files_plcairo_ocaml} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + VERBATIM + ) + add_custom_target( + target_${EXECUTABLE_NAME} ALL + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE_NAME} + ) + if(CORE_BUILD) + add_dependencies(target_${EXECUTABLE_NAME} plcairo_ocaml cairo) + endif(CORE_BUILD) + set_property(GLOBAL APPEND PROPERTY TARGETS_examples_ocaml target_${EXECUTABLE_NAME}) + set_property(GLOBAL APPEND PROPERTY FILES_examples_ocaml ${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE_NAME}) + endforeach(STRING_INDEX ${ocaml_STRING_INDICES}) + set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${ocaml_EXTRA_CLEAN_FILES}") +endif(BUILD_TEST) Added: trunk/examples/ocaml/xgtk_interface.ml =================================================================== --- trunk/examples/ocaml/xgtk_interface.ml (rev 0) +++ trunk/examples/ocaml/xgtk_interface.ml 2009-09-30 19:39:01 UTC (rev 10500) @@ -0,0 +1,89 @@ +(* +Copyright 2008, 2009 Hezekiah M. Carty + +This file is part of PLplot. + +PLplot is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General 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 Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with PLplot. If not, see <http://www.gnu.org/licenses/>. +*) + +(* An example of using PLplot + Plcairo + Cairo + lablgtk2 to show a plot in a + Gtk+ application. *) + +open Plplot +open Plcairo + +(* The plot surface size, much larger than the actual window. The plot will be + scaled to fit in the window. *) +let plot_width = 1600 +let plot_height = 1000 + +(* The size of the GUI view of the plot *) +let gui_width = plot_width / 2 +let gui_height = plot_height / 2 + +(** Get a Cairo context from the Gtk drawing area. *) +let get_cairo w = + Cairo_lablgtk.create w#misc#window + +(** Callback to redraw the plot contents. If the window is resized then the + plot will be stretched to fit the new window dimensions. *) +let redraw widget plcairo _ = + let cr = get_cairo widget in + let { Gtk.width = width ; Gtk.height = height } = widget#misc#allocation in + let width = float_of_int width in + let height = float_of_int height in + plblit_to_cairo ~scale_by:(`both (width, height)) plcairo cr; + true + +let () = + (* Make a simple plot. *) + let plcairo = + plinit_cairo ~clear:true (plot_width, plot_height) plimagecairo + in + plcairo_make_active plcairo; + plenv (-180.0) 180.0 (-90.0) 90.0 1 0; + plmap "globe" (-180.0) 180.0 (-90.0) 90.0; + pllab "Latitude" "Longitude" "It's Earth!"; + + (* It's ok to call plend here because we have the plot already. *) + plend (); + + (* DO NOT call Plcairo.finish yet. The Cairo surface needs to remain active + in order to use it in the GUI. *) + + (* Create a window for the app. *) + let w = GWindow.window ~title:"PLplot + Gtk Integration Demo" () in + (* Quit cleanly when the close button is clicked. *) + ignore (w#connect#destroy GMain.quit); + + (* Put a box and frame around the plot. *) + let b = GPack.vbox ~spacing:6 ~border_width:12 ~packing:w#add () in + + let f = + GBin.frame ~shadow_type:`IN ~packing:(b#pack ~expand:true ~fill:true) () + in + + (* This drawing_area is where the plot will be displayed. *) + let area = + GMisc.drawing_area + ~width:gui_width ~height:gui_height ~packing:f#add () + in + + (* Be sure to update the plot display when an expose event occurs. *) + ignore (area#event#connect#expose (redraw area plcairo)); + + (* Show the window and enter the main Gtk+ application loop. *) + w#show (); + GMain.main () + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hez...@us...> - 2010-01-31 20:07:09
|
Revision: 10788 http://plplot.svn.sourceforge.net/plplot/?rev=10788&view=rev Author: hezekiahcarty Date: 2010-01-31 20:07:03 +0000 (Sun, 31 Jan 2010) Log Message: ----------- Add plgradient support to OCaml examples Modified Paths: -------------- trunk/examples/ocaml/x25.ml trunk/examples/ocaml/x30.ml Modified: trunk/examples/ocaml/x25.ml =================================================================== --- trunk/examples/ocaml/x25.ml 2010-01-31 20:05:55 UTC (rev 10787) +++ trunk/examples/ocaml/x25.ml 2010-01-31 20:07:03 UTC (rev 10788) @@ -1,5 +1,27 @@ (* $Id$ Filling and clipping polygons. + + Copyright (C) 2008, 2010 Hezekiah M. Carty + + + 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 + + This example will only really be interesting when used with devices that + support or alpha (or transparency) values, such as the cairo device family. *) open Plplot @@ -43,44 +65,51 @@ |] in - for j = 0 to 3 do - let x, y = - match j with - 0 -> - (* Polygon 1: a diamond *) - [|0.0; -100.0; 0.0; 100.0|], - [|-100.0; 0.0; 100.0; 0.0|] - | 1 -> - (* Polygon 1: a diamond - reverse direction *) - [|100.0; 0.0; -100.0; 0.0;|], - [|0.0; 100.0; 0.0; -100.0|] - | 2 -> - (* Polygon 2: a square with punctures *) - [|-100.0; -100.0; 80.0; -100.0; -100.0; - -80.0; 0.0; 80.0; 100.0; 100.0|], - [|-100.0; -80.0; 0.0; 80.0; 100.0; - 100.0; 80.0; 100.0; 100.0; -100.0|] - | 3 -> - (* Polygon 2: a square with punctures - reversed direction *) - [|100.0; 100.0; 80.0; 0.0; -80.0; - -100.0; -100.0; 80.0; -100.0; -100.0|], - [|-100.0; 100.0; 100.0; 80.0; 100.0; - 100.0; 80.0; 0.0; -80.0; -100.0|] - | _ -> raise (Failure "only 4 shapes are available") - in + for k = 0 to 1 do + for j = 0 to 3 do + let x, y = + match j with + 0 -> + (* Polygon 1: a diamond *) + [|0.0; -100.0; 0.0; 100.0|], + [|-100.0; 0.0; 100.0; 0.0|] + | 1 -> + (* Polygon 1: a diamond - reverse direction *) + [|100.0; 0.0; -100.0; 0.0;|], + [|0.0; 100.0; 0.0; -100.0|] + | 2 -> + (* Polygon 2: a square with punctures *) + [|-100.0; -100.0; 80.0; -100.0; -100.0; + -80.0; 0.0; 80.0; 100.0; 100.0|], + [|-100.0; -80.0; 0.0; 80.0; 100.0; + 100.0; 80.0; 100.0; 100.0; -100.0|] + | 3 -> + (* Polygon 2: a square with punctures - reversed direction *) + [|100.0; 100.0; 80.0; 0.0; -80.0; + -100.0; -100.0; 80.0; -100.0; -100.0|], + [|-100.0; 100.0; 100.0; 80.0; 100.0; + 100.0; 80.0; 0.0; -80.0; -100.0|] + | _ -> raise (Failure "only 4 shapes are available") + in - for i = 0 to 8 do - pladv 0; - plvsta (); - plwind xextreme.(i).(0) xextreme.(i).(1) yextreme.(i).(0) yextreme.(i).(1); - plcol0 2; - plbox "bc" 1.0 0 "bcnv" 10.0 0; - plcol0 1; - plpsty 0; - plfill x y; - plcol0 2; - pllsty 1; - plline x y; + for i = 0 to 8 do + pladv 0; + plvsta (); + plwind xextreme.(i).(0) xextreme.(i).(1) yextreme.(i).(0) yextreme.(i).(1); + plcol0 2; + plbox "bc" 1.0 0 "bcnv" 10.0 0; + plcol0 1; + plpsty 0; + if k = 0 then ( + plfill x y + ) + else ( + plgradient x y 45.0 + ); + plcol0 2; + pllsty 1; + plline x y; + done done done; Modified: trunk/examples/ocaml/x30.ml =================================================================== --- trunk/examples/ocaml/x30.ml 2010-01-31 20:05:55 UTC (rev 10787) +++ trunk/examples/ocaml/x30.ml 2010-01-31 20:07:03 UTC (rev 10788) @@ -2,7 +2,7 @@ Alpha color values demonstration. Copyright (C) 2008 Hazen Babcock - Copyright (C) 2008 Hezekiah M. Carty + Copyright (C) 2008, 2010 Hezekiah M. Carty This file is part of PLplot. @@ -114,31 +114,16 @@ done done; - (* The overlaid box is drawn using plshades with a color map that is - the same color but has a linearly varying transparency. *) + let px = [|0.0; 1.0; 1.0; 0.0|] in + let py = [|0.0; 0.0; 1.0; 1.0|] in (* 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 true pos rcoord gcoord bcoord acoord (Some 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. *) - let z = - [| - [|0.0; 1.0|]; - [|0.0; 1.0|]; - |] - in + plgradient px py 90.0; - (* Set the color levels array. These levels are also between 0.0 and 1.0 *) - let clevel = Array.init 101 (fun i -> 0.01 *. float_of_int i) in - - (* 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 0.0 1.0 0.0 1.0 clevel 0 (-1) 2 true; - plend (); () This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hez...@us...> - 2010-05-01 15:31:34
|
Revision: 10957 http://plplot.svn.sourceforge.net/plplot/?rev=10957&view=rev Author: hezekiahcarty Date: 2010-05-01 15:31:28 +0000 (Sat, 01 May 2010) Log Message: ----------- Bring OCaml examples 6 and 7 back up to speed with the C examples Modified Paths: -------------- trunk/examples/ocaml/x06.ml trunk/examples/ocaml/x07.ml Modified: trunk/examples/ocaml/x06.ml =================================================================== --- trunk/examples/ocaml/x06.ml 2010-04-30 23:43:15 UTC (rev 10956) +++ trunk/examples/ocaml/x06.ml 2010-05-01 15:31:28 UTC (rev 10957) @@ -15,42 +15,60 @@ (* Initialize plplot *) plinit (); - pladv 0; - (* Set up viewport and window *) - plcol0 2; - plvpor 0.1 1.0 0.1 0.9; - plwind 0.0 1.0 0.0 1.3; + for kind_font = 0 to 1 do + plfontld kind_font; + let maxfont = + if kind_font = 0 then + 1 + else + 4 + in + for font = 0 to maxfont - 1 do + plfont (font + 1); - (* Draw the grid using plbox *) - plbox "bcg" 0.1 0 "bcg" 0.1 0; + pladv 0; - (* Write the digits below the frame *) - plcol0 15; - for i = 0 to 9 do - plmtex "b" 1.5 (0.1 *. float_of_int i +. 0.05) 0.5 (string_of_int i); - done; + (* Set up viewport and window *) + plcol0 2; + plvpor 0.1 1.0 0.1 0.9; + plwind 0.0 1.0 0.0 1.3; - let k = ref 0 in - for i = 0 to 12 do - (* Write the digits to the left of the frame *) - plmtex "lv" 1.0 (1.0 -. (2.0 *. float_of_int i +. 1.0) /. 26.0) 1.0 - (string_of_int (10 * i)); - for j = 0 to 9 do - let x = 0.1 *. float_of_int j +. 0.05 in - let y = 1.25 -. 0.1 *. float_of_int i in + (* Draw the grid using plbox *) + plbox "bcg" 0.1 0 "bcg" 0.1 0; - (* Display the symbols *) - let () = - if (!k < 128) then - plpoin [|x|] [|y|] !k - else - () - in - incr k; - done + (* Write the digits below the frame *) + plcol0 15; + for i = 0 to 9 do + plmtex "b" 1.5 (0.1 *. float_of_int i +. 0.05) 0.5 (string_of_int i); + done; + + let k = ref 0 in + for i = 0 to 12 do + (* Write the digits to the left of the frame *) + plmtex "lv" 1.0 (1.0 -. (2.0 *. float_of_int i +. 1.0) /. 26.0) 1.0 + (string_of_int (10 * i)); + for j = 0 to 9 do + let x = 0.1 *. float_of_int j +. 0.05 in + let y = 1.25 -. 0.1 *. float_of_int i in + + (* Display the symbols *) + let () = + if (!k < 128) then + plpoin [|x|] [|y|] !k + else + () + in + incr k; + done + done; + + if kind_font = 0 then + plmtex "t" 1.5 0.5 0.5 "PLplot Example 6 - plpoin symbols (compact)" + else + plmtex "t" 1.5 0.5 0.5 "PLplot Example 6 - plpoin symbols (extended)"; + done; done; - plmtex "t" 1.5 0.5 0.5 "PLplot Example 6 - plpoin symbols"; plend (); () Modified: trunk/examples/ocaml/x07.ml =================================================================== --- trunk/examples/ocaml/x07.ml 2010-04-30 23:43:15 UTC (rev 10956) +++ trunk/examples/ocaml/x07.ml 2010-05-01 15:31:28 UTC (rev 10957) @@ -6,7 +6,7 @@ open Plplot let base = - [|0; 200; 500; 600; 700; 800; 900; + [|0; 100; 0; 100; 200; 500; 600; 700; 800; 900; 2000; 2100; 2200; 2300; 2400; 2500; 2600; 2700; 2800; 2900|] (*--------------------------------------------------------------------------*\ @@ -20,8 +20,9 @@ (* Initialize plplot *) plinit (); - plfontld 1; - for l = 0 to 16 do + plfontld 0; + for l = 0 to 19 do + if l = 2 then plfontld 1; pladv 0; (* Set up viewport and window *) @@ -53,7 +54,10 @@ done; done; - plmtex "t" 1.5 0.5 0.5 "PLplot Example 7 - PLSYM symbols"; + if l < 2 then + plmtex "t" 1.5 0.5 0.5 "PLplot Example 7 - PLSYM symbols (compact)" + else + plmtex "t" 1.5 0.5 0.5 "PLplot Example 7 - PLSYM symbols (extended)" done; plend (); () This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hez...@us...> - 2011-08-06 14:58:34
|
Revision: 11863 http://plplot.svn.sourceforge.net/plplot/?rev=11863&view=rev Author: hezekiahcarty Date: 2011-08-06 14:58:26 +0000 (Sat, 06 Aug 2011) Log Message: ----------- Add OCaml implementation of example 34 Modified Paths: -------------- trunk/examples/ocaml/CMakeLists.txt Added Paths: ----------- trunk/examples/ocaml/x34.ml Modified: trunk/examples/ocaml/CMakeLists.txt =================================================================== --- trunk/examples/ocaml/CMakeLists.txt 2011-08-06 14:58:18 UTC (rev 11862) +++ trunk/examples/ocaml/CMakeLists.txt 2011-08-06 14:58:26 UTC (rev 11863) @@ -61,6 +61,7 @@ "30" "31" "33" + "34" "plot01" ) Added: trunk/examples/ocaml/x34.ml =================================================================== --- trunk/examples/ocaml/x34.ml (rev 0) +++ trunk/examples/ocaml/x34.ml 2011-08-06 14:58:26 UTC (rev 11863) @@ -0,0 +1,106 @@ +(* $Id$ + + Drawing mode setting and getting example. + + Copyright (C) 2011 Hezekiah M. Carty + + This file is part of PLplot. + + PLplot is free software; you can redistribute it and/or modify + it under the terms of the GNU Library General 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 +*) + +open Plplot + +(* Drawing modes to demonstrate *) +let drawing_modes = [| + PL_DRAWMODE_DEFAULT; + PL_DRAWMODE_REPLACE; + PL_DRAWMODE_XOR; +|] + +let drawing_mode_names = [| + "Default drawing mode"; + "Replace destination with source"; + "XOR drawing"; +|] + +let initialize_colors () = + plscol0 0 255 255 255; + plscol0 1 0 0 0; + plscol0 2 255 0 0; + plscol0a 3 0 0 255 0.3; + () + +let draw_page mode title = + (* A triangle for the background *) + let xs = [|0.0; 1.0; 0.0|] in + let ys = [|0.0; 1.0; 1.0|] in + + (* A circle for the foreground *) + let over_x = 0.5 in + let over_y = 0.5 in + let over_r = 0.4 in + + plcol0 1; + + (* Setup a plot window *) + plenv 0.0 1.0 0.0 1.0 1 0; + + (* Show which mode we're using *) + pllab "" "" title; + + (* Draw a background triangle using the default drawing mode *) + plcol0 2; + plsdrawmode PL_DRAWMODE_DEFAULT; + plfill xs ys; + + (* Draw a circle in the given drawing mode *) + plcol0 3; + plsdrawmode mode; + plarc over_x over_y over_r over_r 0.0 360.0 0.0 true; + () + +(*-------------------------------------------------------------------------- + main + --------------------------------------------------------------------------*) + +let main = + (* PLplot initialization *) + + (* Parse and process command line arguments *) + plparseopts Sys.argv [PL_PARSE_FULL]; + + (* Initialize PLplot *) + plinit (); + + (* Check for drawing mode support *) + let mode = plgdrawmode () in + + if mode = PL_DRAWMODE_UNKNOWN then begin + print_endline "WARNING: This driver does not support drawing mode getting/setting"; + end + else begin + (* Setup colors *) + initialize_colors (); + + (* Draw one page per drawing mode *) + Array.iteri (fun i mode -> draw_page mode drawing_mode_names.(i)) + drawing_modes; + end; + + (* Clean up *) + plend (); + () + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |