From: <ai...@us...> - 2008-08-15 01:37:40
|
Revision: 8661 http://plplot.svn.sourceforge.net/plplot/?rev=8661&view=rev Author: airwin Date: 2008-08-15 01:37:47 +0000 (Fri, 15 Aug 2008) Log Message: ----------- AWI for Hezekiah M. Carty, add standard ocaml examples 24, 25, 26, 27, and 30. All these new ocaml additions give results that exactly match those of their C counterparts. Modified Paths: -------------- trunk/examples/ocaml/CMakeLists.txt trunk/examples/ocaml/Makefile.examples.in trunk/plplot_test/test_ocaml.sh.in Added Paths: ----------- 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 Modified: trunk/examples/ocaml/CMakeLists.txt =================================================================== --- trunk/examples/ocaml/CMakeLists.txt 2008-08-15 00:30:29 UTC (rev 8660) +++ trunk/examples/ocaml/CMakeLists.txt 2008-08-15 01:37:47 UTC (rev 8661) @@ -34,6 +34,11 @@ "12" "13" "19" + "24" + "25" + "26" + "27" + "30" ) set(ocaml_SRCS) Modified: trunk/examples/ocaml/Makefile.examples.in =================================================================== --- trunk/examples/ocaml/Makefile.examples.in 2008-08-15 00:30:29 UTC (rev 8660) +++ trunk/examples/ocaml/Makefile.examples.in 2008-08-15 01:37:47 UTC (rev 8661) @@ -41,6 +41,11 @@ x12$(EXEEXT) \ x13$(EXEEXT) \ x19$(EXEEXT) \ + x24$(EXEEXT) \ + x25$(EXEEXT) \ + x26$(EXEEXT) \ + x27$(EXEEXT) \ + x30$(EXEEXT) \ all: $(EXECUTABLES_list) Added: trunk/examples/ocaml/x24.ml =================================================================== --- trunk/examples/ocaml/x24.ml (rev 0) +++ trunk/examples/ocaml/x24.ml 2008-08-15 01:37:47 UTC (rev 8661) @@ -0,0 +1,146 @@ +(* + Unicode Pace Flag + + Copyright (C) 2005 Rafael Laboissiere + Copyright 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 + + + In Debian, run like this: + + ( TTFDIR=/usr/share/fonts/truetype ; \ + PLPLOT_FREETYPE_SANS_FONT=$TTFDIR/arphic/bkai00mp.ttf \ + PLPLOT_FREETYPE_SERIF_FONT=$TTFDIR/freefont/FreeSerif.ttf \ + PLPLOT_FREETYPE_MONO_FONT=$TTFDIR/ttf-devanagari-fonts/lohit_hi.ttf \ + PLPLOT_FREETYPE_SCRIPT_FONT=$TTFDIR/unfonts/UnBatang.ttf \ + PLPLOT_FREETYPE_SYMBOL_FONT=$TTFDIR/ttf-bengali-fonts/JamrulNormal.ttf \ + ./x24c -dev png -drvopt smooth=0 -o x24c.png ) + + Packages needed: + + ttf-arphic-bkai00mp + ttf-freefont + ttf-devanagari-fonts + ttf-unfonts + ttf-bengali-fonts + *) + +open Plplot + +let red = [|240; 204; 204; 204; 0; 39; 125|] +let green = [|240; 0; 125; 204; 204; 80; 0|] +let blue = [|240; 0; 0; 0; 0; 204; 125|] + +let px = [|0.0; 0.0; 1.0; 1.0|] +let py = [|0.0; 0.25; 0.25; 0.0|] + +let sx = [| + 0.16374; + 0.15844; + 0.15255; + 0.17332; + 0.50436; + 0.51721; + 0.49520; + 0.48713; + 0.83976; + 0.81688; + 0.82231; + 0.82647 +|] + +let sy = [| + 0.125; + 0.375; + 0.625; + 0.875; + 0.125; + 0.375; + 0.625; + 0.875; + 0.125; + 0.375; + 0.625; + 0.875 +|] + + +(* Taken from http://www.columbia.edu/~fdc/pace/ *) + +let peace = [| + (* Mandarin *) + "#<0x00>和平"; + (* Hindi *) + "#<0x20>शांति"; + (* English *) + "#<0x10>Peace"; + (* Hebrew *) + "#<0x10>שלום"; + (* Russian *) + "#<0x10>Мир"; + (* German *) + "#<0x10>Friede"; + (* Korean *) + "#<0x30>평화"; + (* French *) + "#<0x10>Paix"; + (* Spanish *) + "#<0x10>Paz"; + (* Arabic *) + "#<0x10>ﺳﻼم"; + (* Turkish*) + "#<0x10>Barış"; + (* Kurdish *) + "#<0x10>Hasîtî"; +|] + +let () = + ignore (plparseopts Sys.argv [|PL_PARSE_FULL|]); + + plinit (); + + 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; + + plscmap0n 7; + plscmap0 red green blue; + + plschr 0.0 4.0; + plfont 1; + + for i = 0 to 3 do + plcol0 (i + 1); + plfill px py; + for j = 0 to 3 do + py.(j) <- py.(j) +. 1.0 /. 4.0; + done + done; + + plcol0 0; + for i = 0 to 11 do + plptex sx.(i) sy.(i) 1.0 0.0 0.5 peace.(i); + done; + + + plend (); + () + Property changes on: trunk/examples/ocaml/x24.ml ___________________________________________________________________ Added: svn:eol-style + native Added: trunk/examples/ocaml/x25.ml =================================================================== --- trunk/examples/ocaml/x25.ml (rev 0) +++ trunk/examples/ocaml/x25.ml 2008-08-15 01:37:47 UTC (rev 8661) @@ -0,0 +1,90 @@ +(* $Id$ + Filling and clipping polygons. +*) + +open Plplot + +(*--------------------------------------------------------------------------*\ + * Test program for filling polygons and proper clipping +\*--------------------------------------------------------------------------*) + +let () = + (* Parse and process command line arguments *) + ignore (plparseopts Sys.argv [|PL_PARSE_FULL|]); + + (* Initialize plplot *) + plssub 3 3; + plinit (); + + let xextreme = + [| + [|-120.0; 120.0|]; + [|-120.0; 120.0|]; + [|-120.0; 120.0|]; + [| -80.0; 80.0|]; + [|-220.0; -120.0|]; + [| -20.0; 20.0|]; + [| -20.0; 20.0|]; + [| -80.0; 80.0|]; + [| 20.0; 120.0|]; + |] + in + let yextreme = + [| + [|-120.0; 120.0|]; + [| 20.0; 120.0|]; + [| -20.0; 120.0|]; + [| -20.0; 120.0|]; + [|-120.0; 120.0|]; + [|-120.0; 120.0|]; + [| -20.0; 20.0|]; + [| -80.0; 80.0|]; + [|-120.0; 120.0|]; + |] + 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 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; + done + done; + + (* Don't forget to call plend() to finish off! *) + plend (); + () + Property changes on: trunk/examples/ocaml/x25.ml ___________________________________________________________________ Added: svn:eol-style + native Added: trunk/examples/ocaml/x26.ml =================================================================== --- trunk/examples/ocaml/x26.ml (rev 0) +++ trunk/examples/ocaml/x26.ml 2008-08-15 01:37:47 UTC (rev 8661) @@ -0,0 +1,187 @@ +(* -*- coding: utf-8; -*- + + $Id$ + + Multi-lingual version of the first page of example 4. + + Copyright (C) 2006 Alan Irwin + Copyright (C) 2006 Andrew Ross + Copyright (C) 2008 Hezekiah M. Carty + + Thanks to the following for providing translated strings for this example: + Valery Pipin (Russian) + + 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 designed just for devices (e.g., psttfc and the + cairo-related devices) that use the pango and fontconfig libraries. The + best choice of glyph is selected by fontconfig and automatically rendered + by pango in way that is sensitive to complex text layout (CTL) language + issues for each unicode character in this example. Of course, you must + have the appropriate TrueType fonts installed to have access to all the + required glyphs. + + Translation instructions: The strings to be translated are given by + x_label, y_label, alty_label, title_label, and line_label below. The + encoding used must be UTF-8. + + The following strings to be translated involve some scientific/mathematical + jargon which is now discussed further to help translators. + + (1) dB is a decibel unit, see http://en.wikipedia.org/wiki/Decibel . + (2) degrees is an angular measure, see + http://en.wikipedia.org/wiki/Degree_(angle) . + (3) low-pass filter is one that transmits (passes) low frequencies. + (4) pole is in the mathematical sense, see + http://en.wikipedia.org/wiki/Pole_(complex_analysis) . "Single Pole" + means a particular mathematical transformation of the filter function has + a single pole, see + http://ccrma.stanford.edu/~jos/filters/Pole_Zero_Analysis_I.html . + Furthermore, a single-pole filter must have an inverse square decline + (or -20 db/decade). Since the filter plotted here does have that + characteristic, it must by definition be a single-pole filter, see also + http://www-k.ext.ti.com/SRVS/Data/ti/KnowledgeBases/analog/document/faqs/1p.htm + (5) decade represents a factor of 10, see + http://en.wikipedia.org/wiki/Decade_(log_scale) . +*) + +open Plplot + +let x_label = [| + "Frequency"; + "Частота"; +|] + +let y_label = [| + "Amplitude (dB)"; + "Амплитуда (dB)"; +|] + +let alty_label = [| + "Phase shift (degrees)"; + "Фазовый сдвиг (градусы)"; +|] + +let title_label = [| + "Single Pole Low-Pass Filter"; + "Однополюсный Низко-Частотный Фильтр"; +|] + +let line_label = [| + "-20 dB/decade"; + "-20 dB/десяток"; +|] + +let pi = atan 1.0 *. 4.0 + +(*--------------------------------------------------------------------------*\ + * plot1 + * + * Log-linear plot. +\*--------------------------------------------------------------------------*) +let plot1 label_type x_label y_label alty_label title_label line_label = + (* + int i; + static PLFLT freql[101], ampl[101], phase[101]; + PLFLT f0, freq; + *) + + pladv 0; + + (* Set up data for log plot *) + let freql = Array.init 101 (fun i -> ~-.2.0 +. float_of_int i /. 20.0) in + let freq = Array.map (fun f -> 10.0**f) freql in + let f0 = 1.0 in + let ampl = + Array.map ( + fun f -> + 20.0 *. log10 (1.0 /. sqrt (1.0 +. (f /. f0)**2.0)) + ) freq + in + let phase = + Array.map ( + fun f -> + ~-.(180.0 /. pi) *. atan (f /. f0) + ) freq + in + + plvpor 0.15 0.85 0.1 0.9; + plwind (-2.0) 3.0 (-80.0) 0.0; + + (* Try different axis and labelling styles. *) + + plcol0 1; + let () = + match label_type with + 0 -> + plbox "bclnst" 0.0 0 "bnstv" 0.0 0; + | 1 -> + plbox "bcfghlnst" 0.0 0 "bcghnstv" 0.0 0; + | _ -> raise (Failure "invalid label_type") + in + + (* Plot ampl vs freq *) + + plcol0 2; + plline freql ampl; + plcol0 1; + plptex 1.6 (-30.0) 1.0 (-20.0) 0.5 line_label; + + (* Put labels on *) + plcol0 1; + plmtex "b" 3.2 0.5 0.5 x_label; + plmtex "t" 2.0 0.5 0.5 title_label; + plcol0 2; + plmtex "l" 5.0 0.5 0.5 y_label; + + (* For the gridless case, put phase vs freq on same plot *) + + if label_type = 0 then ( + plcol0 1; + plwind (-2.0) 3.0 (-100.0) 0.0; + plbox "" 0.0 0 "cmstv" 30.0 3; + plcol0 3; + plline freql phase; + plcol0 3; + plmtex "r" 5.0 0.5 0.5 alty_label; + ) + else + () + +(*--------------------------------------------------------------------------*\ + * Illustration of logarithmic axes, and redefinition of window. +\*--------------------------------------------------------------------------*) +let () = + (* Parse and process command line arguments *) + ignore (plparseopts Sys.argv [|PL_PARSE_FULL|]); + + (* Initialize plplot *) + plinit (); + plfont 2; + + (* Make log plots using two different styles. *) + Array.iteri ( + fun i xl -> + plot1 0 xl y_label.(i) alty_label.(i) title_label.(i) line_label.(i) + ) x_label; + + plend (); + () + Property changes on: trunk/examples/ocaml/x26.ml ___________________________________________________________________ Added: svn:eol-style + native Added: trunk/examples/ocaml/x27.ml =================================================================== --- trunk/examples/ocaml/x27.ml (rev 0) +++ trunk/examples/ocaml/x27.ml 2008-08-15 01:37:47 UTC (rev 8661) @@ -0,0 +1,128 @@ +(* $Id$ + + Drawing "spirograph" curves - epitrochoids, cycolids, roulettes + + Copyright (C) 2007 Arjen Markus + 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 Plplot + +let cycloid () = () (* TODO *) + +let spiro params = + let npnt = 20000 in + let xcoord = Array.make (npnt + 1) 0.0 in + let ycoord = Array.make (npnt + 1) 0.0 in + + (* Fill the coordinates *) + + let windings = int_of_float params.(3) in + let steps = npnt / windings in + let dphi = 8.0 *. acos (-1.0) /. float_of_int steps in + + (* This initialisation is safe! *) + let xmin = ref 0.0 in + let xmax = ref 0.0 in + let ymin = ref 0.0 in + let ymax = ref 0.0 in + + for i = 0 to windings * steps do + let phi = float_of_int i *. dphi in + let phiw = (params.(0) -. params.(1)) /. params.(1) *. phi in + xcoord.(i) <- (params.(0) -. params.(1)) *. cos phi +. params.(2) *. cos phiw; + ycoord.(i) <- (params.(0) -. params.(1)) *. sin phi -. params.(2) *. sin phiw; + + if !xmin > xcoord.(i) then xmin := xcoord.(i) else (); + if !xmax < xcoord.(i) then xmax := xcoord.(i) else (); + if !ymin > ycoord.(i) then ymin := ycoord.(i) else (); + if !ymax < ycoord.(i) then ymax := ycoord.(i) else (); + done; + + let scale = max (!xmax -. !xmin) (!ymax -. !ymin) in + let xmin = -0.65 *. scale in + let xmax = 0.65 *. scale in + let ymin = -0.65 *. scale in + let ymax = 0.65 *. scale in + + plwind xmin xmax ymin ymax; + + plcol0 1; + let xcoord' = Array.sub xcoord 0 (1 + steps * windings) in + let ycoord' = Array.sub ycoord 0 (1 + steps * windings) in + plline xcoord' ycoord'; + () + +(*--------------------------------------------------------------------------*\ + * Generates two kinds of plots: + * - construction of a cycloid (animated) + * - series of epitrochoids and hypotrochoids +\*--------------------------------------------------------------------------*) +let () = + (* R, r, p, N *) + let params = + [| + [|21.0; 7.0; 7.0; 3.0|]; (* Deltoid *) + [|21.0; 7.0; 10.0; 3.0|]; + [|21.0; -7.0; 10.0; 3.0|]; + [|20.0; 3.0; 7.0; 20.0|]; + [|20.0; 3.0; 10.0; 20.0|]; + [|20.0; -3.0; 10.0; 20.0|]; + [|20.0; 13.0; 7.0; 20.0|]; + [|20.0; 13.0; 20.0; 20.0|]; + [|20.0;-13.0; 20.0; 20.0|]; + |] + in + + (* plplot initialization *) + (* Parse and process command line arguments *) + ignore (plparseopts Sys.argv [|PL_PARSE_FULL|]); + + (* Initialize plplot *) + plinit (); + + (* Illustrate the construction of a cycloid *) + cycloid (); + + (* Loop over the various curves + First an overview, then all curves one by one *) + (* Three by three window *) + plssub 3 3; + + for i = 0 to 8 do + pladv 0; + plvpor 0.0 1.0 0.0 1.0; + spiro params.(i); + done; + + pladv 0; + (* One window per curve *) + plssub 1 1; + + for i = 0 to 8 do + pladv 0; + plvpor 0.0 1.0 0.0 1.0; + spiro params.(i); + done; + + (* Don't forget to call plend() to finish off! *) + plend (); + () + Property changes on: trunk/examples/ocaml/x27.ml ___________________________________________________________________ Added: svn:eol-style + native Added: trunk/examples/ocaml/x30.ml =================================================================== --- trunk/examples/ocaml/x30.ml (rev 0) +++ trunk/examples/ocaml/x30.ml 2008-08-15 01:37:47 UTC (rev 8661) @@ -0,0 +1,144 @@ +(* + Alpha color values demonstration. + + Copyright (C) 2008 Hazen Babcock + 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 + + 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 + +let red = [|0; 255; 0; 0|] +let green = [|0; 0; 255; 0|] +let blue = [|0; 0; 0; 255|] +let alpha = [|1.0; 1.0; 1.0; 1.0|] + +let px = [|0.1; 0.5; 0.5; 0.1|] +let py = [|0.1; 0.1; 0.5; 0.5|] + +let pos = [|0.0; 1.0|] +let rcoord = [|1.0; 1.0|] +let gcoord = [|0.0; 0.0|] +let bcoord = [|0.0; 0.0|] +let acoord = [|0.0; 1.0|] +let rev = [|0; 0|] + +let () = + ignore (plparseopts Sys.argv [|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 = 0 to 8 do + let icol = i mod 3 + 1 in + + (* Get a color, change its transparency and + set it as the current color. *) + let r, g, b, a = plgcol0a icol in + plscol0a icol r g b (1.0 -. float_of_int i /. 9.0); + plcol0 icol; + + (* Draw the rectangle *) + let translate a = + Array.map (fun x -> x +. 0.5 /. 9.0 *. float_of_int i) a + in + plfill (translate px) (translate py); + + done; + + (* 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 = 0 to 4 do + (* Set box X position *) + let px0 = 0.05 +. 0.2 *. float_of_int i in + let px1 = px0 +. 0.1 in + let px = [|px0; px1; px1; px0|] in + + (* 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. *) + let icol = i mod 3 + 1 in + let r, g, b, a = plgcol0a icol in + plscol0a icol r g b 1.0; + plcol0 icol; + for j = 0 to 4 do + (* Set box y position and draw the box. *) + let py0 = 0.05 +. 0.2 *. float_of_int j in + let py2 = py0 +. 0.1 in + let py = [|py0; py0; py2; py2|] in + plfill px py; + done + done; + + (* 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 1 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. *) + let z = + [| + [|0.0; 1.0|]; + [|0.0; 1.0|]; + |] + in + + (* 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 1; + + plend (); + () + Property changes on: trunk/examples/ocaml/x30.ml ___________________________________________________________________ Added: svn:eol-style + native Modified: trunk/plplot_test/test_ocaml.sh.in =================================================================== --- trunk/plplot_test/test_ocaml.sh.in 2008-08-15 00:30:29 UTC (rev 8660) +++ trunk/plplot_test/test_ocaml.sh.in 2008-08-15 01:37:47 UTC (rev 8661) @@ -23,7 +23,7 @@ # $options, and possibly $verbose_test defined. # Do the standard non-interactive examples. -for index in 01 02 03 04 05 06 07 08 10 11 12 13 19; do +for index in 01 02 03 04 05 06 07 08 10 11 12 13 19 24 25 26 27 30; do if [ "$verbose_test" ]; then echo "x${index}ocaml" fi This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2008-08-15 19:34:46
|
Revision: 8664 http://plplot.svn.sourceforge.net/plplot/?rev=8664&view=rev Author: andrewross Date: 2008-08-15 19:34:56 +0000 (Fri, 15 Aug 2008) Log Message: ----------- Add ocaml version of example 15. Commit by ANR on behalf of Hezekiah Carty. Modified Paths: -------------- trunk/examples/ocaml/CMakeLists.txt trunk/examples/ocaml/Makefile.examples.in trunk/plplot_test/test_ocaml.sh.in Modified: trunk/examples/ocaml/CMakeLists.txt =================================================================== --- trunk/examples/ocaml/CMakeLists.txt 2008-08-15 19:33:06 UTC (rev 8663) +++ trunk/examples/ocaml/CMakeLists.txt 2008-08-15 19:34:56 UTC (rev 8664) @@ -33,6 +33,7 @@ "11" "12" "13" + "15" "19" "24" "25" Modified: trunk/examples/ocaml/Makefile.examples.in =================================================================== --- trunk/examples/ocaml/Makefile.examples.in 2008-08-15 19:33:06 UTC (rev 8663) +++ trunk/examples/ocaml/Makefile.examples.in 2008-08-15 19:34:56 UTC (rev 8664) @@ -40,6 +40,7 @@ x11$(EXEEXT) \ x12$(EXEEXT) \ x13$(EXEEXT) \ + x15$(EXEEXT) \ x19$(EXEEXT) \ x24$(EXEEXT) \ x25$(EXEEXT) \ Modified: trunk/plplot_test/test_ocaml.sh.in =================================================================== --- trunk/plplot_test/test_ocaml.sh.in 2008-08-15 19:33:06 UTC (rev 8663) +++ trunk/plplot_test/test_ocaml.sh.in 2008-08-15 19:34:56 UTC (rev 8664) @@ -23,7 +23,7 @@ # $options, and possibly $verbose_test defined. # Do the standard non-interactive examples. -for index in 01 02 03 04 05 06 07 08 10 11 12 13 19 24 25 26 27 30; do +for index in 01 02 03 04 05 06 07 08 10 11 12 13 15 19 24 25 26 27 30; do if [ "$verbose_test" ]; then echo "x${index}ocaml" fi This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jb...@us...> - 2008-08-16 05:41:35
|
Revision: 8665 http://plplot.svn.sourceforge.net/plplot/?rev=8665&view=rev Author: jbauck Date: 2008-08-16 05:41:44 +0000 (Sat, 16 Aug 2008) Log Message: ----------- Implement the new PLplot random number generation capability in the Ada bindings. Adjust Ada examples x21a.adb and xthick21a.adb accordingly. Other tweaks to Ada examples 21. 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/x21a.adb.cmake trunk/examples/ada/xthick21a.adb.cmake Modified: trunk/bindings/ada/plplot.adb.cmake =================================================================== --- trunk/bindings/ada/plplot.adb.cmake 2008-08-15 19:34:56 UTC (rev 8664) +++ trunk/bindings/ada/plplot.adb.cmake 2008-08-16 05:41:44 UTC (rev 8665) @@ -2083,6 +2083,15 @@ end Write_Text_World_3D; + -- Random number generator based on Mersenne Twister. + -- Obtain real random number in range [0,1]. + -- randd + function Random_Number return Long_Float is + begin + return plrandd; + end Random_Number; + + -- Replays contents of plot buffer to current device/file. -- plreplot procedure Replot is @@ -2401,6 +2410,14 @@ end Set_Zoom; + -- Set seed for internal random number generator + -- plseed + procedure Random_Number_Seed(Seed : Unsigned_Int) is + begin + plseed(Seed); + end Random_Number_Seed; + + -- Set the escape character for text strings. -- plsesc procedure Set_Escape_Character(Escape_Character : Character) is Modified: trunk/bindings/ada/plplot.ads.cmake =================================================================== --- trunk/bindings/ada/plplot.ads.cmake 2008-08-15 19:34:56 UTC (rev 8664) +++ trunk/bindings/ada/plplot.ads.cmake 2008-08-16 05:41:44 UTC (rev 8665) @@ -1239,6 +1239,12 @@ The_Text : String); + -- Random number generator based on Mersenne Twister. + -- Obtain real random number in range [0,1]. + -- plrandd + function Random_Number return Long_Float; + + -- Replays contents of plot buffer to current device/file. -- plreplot procedure Replot; @@ -1424,6 +1430,11 @@ y_Max_Relative : Long_Float); + -- Set seed for internal random number generator + -- plseed + procedure Random_Number_Seed(Seed : Unsigned_Int); + + -- Set the escape character for text strings. -- plsesc procedure Set_Escape_Character(Escape_Character : Character); Modified: trunk/bindings/ada/plplot_thin.ads.cmake =================================================================== --- trunk/bindings/ada/plplot_thin.ads.cmake 2008-08-15 19:34:56 UTC (rev 8664) +++ trunk/bindings/ada/plplot_thin.ads.cmake 2008-08-16 05:41:44 UTC (rev 8665) @@ -59,6 +59,7 @@ PLtrue : constant Integer := 1; subtype PLBOOL is Integer range PLfalse..PLtrue; type PLUNICODE is mod 2**32; + type Unsigned_Int is mod 2**32; -- for e.g. plseed subtype PL_Integer_Array is Integer_Array_1D; subtype PL_Float_Array is Real_Vector; @@ -1110,6 +1111,14 @@ pragma Import(C, plptex3, "c_plptex3"); + -- Random number generator based on Mersenne Twister. + -- Obtain real random number in range [0,1]. + + function + plrandd return Long_Float; + pragma Import(C, plrandd, "c_plrandd"); + + -- Replays contents of plot buffer to current device/file. procedure @@ -1294,6 +1303,13 @@ pragma Import(C, plsdiplz, "c_plsdiplz"); + -- Set seed for internal random number generator + + procedure + plseed(s : Unsigned_Int); + pragma Import(C, plseed, "c_plseed"); + + -- Set the escape character for text strings. procedure Modified: trunk/bindings/ada/plplot_traditional.adb.cmake =================================================================== --- trunk/bindings/ada/plplot_traditional.adb.cmake 2008-08-15 19:34:56 UTC (rev 8664) +++ trunk/bindings/ada/plplot_traditional.adb.cmake 2008-08-16 05:41:44 UTC (rev 8665) @@ -2000,6 +2000,14 @@ end plptex3; + -- Random number generator based on Mersenne Twister. + -- Obtain real random number in range [0,1]. + function plrandd return Long_Float is + begin + return PLplot_Thin.plrandd; + end plrandd; + + -- Replays contents of plot buffer to current device/file. procedure plreplot is begin @@ -2290,6 +2298,13 @@ end plsdiplz; + -- Set seed for internal random number generator + procedure plseed(Seed : Unsigned_Int) is + begin + PLplot_Thin.plseed(Seed); + end plseed; + + -- Set the escape character for text strings. procedure plsesc(Escape_Character : Character) is Modified: trunk/bindings/ada/plplot_traditional.ads.cmake =================================================================== --- trunk/bindings/ada/plplot_traditional.ads.cmake 2008-08-15 19:34:56 UTC (rev 8664) +++ trunk/bindings/ada/plplot_traditional.ads.cmake 2008-08-16 05:41:44 UTC (rev 8665) @@ -1153,6 +1153,11 @@ The_Text : String); + -- Random number generator based on Mersenne Twister. + -- Obtain real random number in range [0,1]. + function plrandd return Long_Float; + + -- Replays contents of plot buffer to current device/file. procedure plreplot; @@ -1313,6 +1318,10 @@ y_Max_Relative : Long_Float); + -- Set seed for internal random number generator + procedure plseed(Seed : Unsigned_Int); + + -- Set the escape character for text strings. procedure plsesc(Escape_Character : Character); Modified: trunk/examples/ada/x21a.adb.cmake =================================================================== --- trunk/examples/ada/x21a.adb.cmake 2008-08-15 19:34:56 UTC (rev 8664) +++ trunk/examples/ada/x21a.adb.cmake 2008-08-16 05:41:44 UTC (rev 8665) @@ -32,7 +32,7 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - Ada.Numerics.Float_Random, + -- Ada.Numerics.Float_Random, Ada.Strings, Ada.Strings.Fixed, Ada.Calendar, @@ -43,7 +43,7 @@ use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - Ada.Numerics.Float_Random, + -- Ada.Numerics.Float_Random, Ada.Strings, Ada.Strings.Fixed, Ada.Calendar, @@ -73,7 +73,7 @@ yg : Real_Vector(0 .. yp - 1); zg : Real_Matrix(0 .. xp - 1, 0 .. yp - 1); opt : Real_Vector(0 .. 5) := (0.0, 0.0, 0.0, 0.0, 0.0, 0.0); - Random_Generator : Generator; -- From Ada.Numerics.Float_Random + -- Random_Generator : Generator; -- From Ada.Numerics.Float_Random function title(which : Integer) return String is @@ -98,6 +98,7 @@ i(1) := 1.0; -- right boundary h(0) := 240.0; -- blue -> green -> yellow -> red + h(1) := 0.0; l(0) := 0.6; l(1) := 0.6; @@ -126,8 +127,10 @@ r, xt, yt : Long_Float; begin for i in x'range loop - xt := Long_Float(Random(Random_Generator)); - yt := Long_Float(Random(Random_Generator)); + -- xt := Long_Float(Random(Random_Generator)); + -- yt := Long_Float(Random(Random_Generator)); + xt := (xMM - xm) * plrandd; -- Use the PLplot random number generator + yt := (yMM - ym) * plrandd; -- to make the same plot as C example 21. if randn = 0 then x(i) := xt + xm; y(i) := yt + ym; @@ -144,6 +147,7 @@ end loop; end create_data; + -- Ada lacks full access to IEEE 754 aka IEC 559. The following works -- because a NaN is not equal to any other float, including itself. -- Use of the 'valid attribute might also work, as might casting to a 64-bit @@ -242,8 +246,10 @@ lzm := Vector_Min((lzm, zmin)); lzMM := Vector_Max((lzMM, zmax)); - lzm := lzm - 0.01; - lzMM := lzMM + 0.01; + -- Increase limits slightly to prevent spurious contours + -- due to rounding errors. + lzm := lzm - 0.01; + lzMM := lzMM + 0.01; plcol0(1); pladv(alg); Modified: trunk/examples/ada/xthick21a.adb.cmake =================================================================== --- trunk/examples/ada/xthick21a.adb.cmake 2008-08-15 19:34:56 UTC (rev 8664) +++ trunk/examples/ada/xthick21a.adb.cmake 2008-08-16 05:41:44 UTC (rev 8665) @@ -32,7 +32,7 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - Ada.Numerics.Float_Random, + -- Ada.Numerics.Float_Random, Ada.Strings, Ada.Strings.Fixed, Ada.Calendar, @@ -43,7 +43,7 @@ use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - Ada.Numerics.Float_Random, + -- Ada.Numerics.Float_Random, Ada.Strings, Ada.Strings.Fixed, Ada.Calendar, @@ -73,7 +73,7 @@ yg : Real_Vector(0 .. yp - 1); zg : Real_Matrix(0 .. xp - 1, 0 .. yp - 1); opt : Real_Vector(0 .. 5) := (0.0, 0.0, 0.0, 0.0, 0.0, 0.0); - Random_Generator : Generator; -- From Ada.Numerics.Float_Random + -- Random_Generator : Generator; -- From Ada.Numerics.Float_Random function title(which : Integer) return String is @@ -98,6 +98,7 @@ i(1) := 1.0; -- right boundary h(0) := 240.0; -- blue -> green -> yellow -> red + h(1) := 0.0; l(0) := 0.6; l(1) := 0.6; @@ -126,8 +127,10 @@ r, xt, yt : Long_Float; begin for i in x'range loop - xt := Long_Float(Random(Random_Generator)); - yt := Long_Float(Random(Random_Generator)); + -- xt := Long_Float(Random(Random_Generator)); + -- yt := Long_Float(Random(Random_Generator)); + xt := (xMM - xm) * Random_Number; -- Use the PLplot random number generator + yt := (yMM - ym) * Random_Number; -- to make the same plot as C example 21. if randn = 0 then x(i) := xt + xm; y(i) := yt + ym; @@ -240,12 +243,18 @@ lzm := Matrix_Min(zg); lzMM := Matrix_Max(zg); + lzm := Vector_Min((lzm, zmin)); + lzMM := Vector_Max((lzMM, zmax)); + + -- Increase limits slightly to prevent spurious contours + -- due to rounding errors. + lzm := lzm - 0.01; + lzMM := lzMM + 0.01; + Set_Pen_Color(Red); Advance_To_Subpage(alg); if k = 0 then - lzm := Vector_Min((lzm, zmin)); - lzMM := Vector_Max((lzMM, zmax)); for i in clev'range loop clev(i) := lzm + (lzMM - lzm) / Long_Float(nl-1) * Long_Float(i); end loop; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2008-08-19 12:49:07
|
Revision: 8676 http://plplot.svn.sourceforge.net/plplot/?rev=8676&view=rev Author: andrewross Date: 2008-08-19 12:49:13 +0000 (Tue, 19 Aug 2008) Log Message: ----------- Add tcl version of example 24. Modified Paths: -------------- trunk/examples/tcl/CMakeLists.txt trunk/plplot_test/test_tcl.sh.in Added Paths: ----------- trunk/examples/tcl/x24 trunk/examples/tcl/x24.tcl Modified: trunk/examples/tcl/CMakeLists.txt =================================================================== --- trunk/examples/tcl/CMakeLists.txt 2008-08-19 11:46:48 UTC (rev 8675) +++ trunk/examples/tcl/CMakeLists.txt 2008-08-19 12:49:13 UTC (rev 8676) @@ -49,6 +49,7 @@ "18" "19" "22" +"24" "26" ) Added: trunk/examples/tcl/x24 =================================================================== --- trunk/examples/tcl/x24 (rev 0) +++ trunk/examples/tcl/x24 2008-08-19 12:49:13 UTC (rev 8676) @@ -0,0 +1,19 @@ +#!/bin/sh +#--------------------------------*- Tcl -*------------------------------------# +# $Id:$ +# +# Maurice LeBrun +# 12/24/02 +# +# A front-end to x22.tcl for running directly from the command line, locating +# pltcl via PATH. +# Handles all usual plplot command arguments. See "pltcl -h" for info. +#-----------------------------------------------------------------------------# +#\ +exec pltcl -f "$0" ${1+"$@"} + +source x24.tcl + +plinit +x24 +plend Property changes on: trunk/examples/tcl/x24 ___________________________________________________________________ Added: svn:executable + * Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/examples/tcl/x24.tcl =================================================================== --- trunk/examples/tcl/x24.tcl (rev 0) +++ trunk/examples/tcl/x24.tcl 2008-08-19 12:49:13 UTC (rev 8676) @@ -0,0 +1,145 @@ +#---------------------------------------------------------------------------- +# $Id:$ +#---------------------------------------------------------------------------- + +# Unicode Pace Flag +# +# Copyright (C) 2005 Rafael Laboissiere +# Copyright (C) 2008 Andrew Ross +# +# +# 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 +# +# +# In Debian, run like this: +# +# ( TTFDIR=/usr/share/fonts/truetype ; \ +# PLPLOT_FREETYPE_SANS_FONT=$TTFDIR/arphic/bkai00mp.ttf \ +# PLPLOT_FREETYPE_SERIF_FONT=$TTFDIR/freefont/FreeSerif.ttf \ +# PLPLOT_FREETYPE_MONO_FONT=$TTFDIR/ttf-devanagari-fonts/lohit_hi.ttf \ +# PLPLOT_FREETYPE_SCRIPT_FONT=$TTFDIR/unfonts/UnBatang.ttf \ +# PLPLOT_FREETYPE_SYMBOL_FONT=$TTFDIR/ttf-bengali-fonts/JamrulNormal.ttf \ +# ./x24c -dev png -drvopt smooth=0 -o x24c.png ) +# +# Packages needed: +# +# ttf-arphic-bkai00mp +# ttf-freefont +# ttf-devanagari-fonts +# ttf-unfonts +# ttf-bengali-fonts +# + +proc x24 {{w loopback}} { + + matrix red i 7 = {240, 204, 204, 204, 0, 39, 125} + matrix green i 7 = {240, 0, 125, 204, 204, 80, 0} + matrix blue i 7 = {240, 0, 0, 0, 0, 204, 125} + + matrix px f 4 = {0.0, 0.0, 1.0, 1.0} + matrix py f 4 = {0.0, 0.25, 0.25, 0.0} + + matrix sx f 12 = { + 0.16374, + 0.15844, + 0.15255, + 0.17332, + 0.50436, + 0.51721, + 0.49520, + 0.48713, + 0.83976, + 0.81688, + 0.82231, + 0.82647 + } + + matrix sy f 12 = { + 0.125, + 0.375, + 0.625, + 0.875, + 0.125, + 0.375, + 0.625, + 0.875, + 0.125, + 0.375, + 0.625, + 0.875 + } + + +# Taken from http://www.columbia.edu/~fdc/pace/ + + # Mandarin + # Hindi + # English + # Hebrew + # Russian + # German + # Korean + # French + # Spanish + # Arabic + # Turkish + # Kurdish + set peace { + "#<0x00>和平" + "#<0x20>शांति" + "#<0x10>Peace" + "#<0x10>שלום" + "#<0x10>Мир" + "#<0x10>Friede" + "#<0x30>평화" + "#<0x10>Paix" + "#<0x10>Paz" + "#<0x10>ﺳﻼم" + "#<0x10>Barış" + "#<0x10>Hasîtî" + } + + $w cmd pladv 0 + $w cmd plvpor 0.0 1.0 0.0 1.0 + $w cmd plwind 0.0 1.0 0.0 1.0 + $w cmd plcol0 0 + $w cmd plbox "" 1.0 0 "" 1.0 0 + + $w cmd plscmap0n 7 + $w cmd plscmap0 red green blue 7 + + plschr 0 4.0 + plfont 1 + + for {set i 0} {$i < 4} {incr i} { + $w cmd plcol0 [expr {$i + 1}] + $w cmd plfill 4 px py + + for {set j 0} {$j < 4} {incr j} { + py $j = [expr {[py $j] + 1.0 / 4.0}] + + } + } + + $w cmd plcol0 0 + set i 0 + foreach pl $peace { + $w cmd plptex [sx $i] [sy $i] 1.0 0.0 0.5 $pl + set i [expr {$i+1}] + } + +} Property changes on: trunk/examples/tcl/x24.tcl ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/plplot_test/test_tcl.sh.in =================================================================== --- trunk/plplot_test/test_tcl.sh.in 2008-08-19 11:46:48 UTC (rev 8675) +++ trunk/plplot_test/test_tcl.sh.in 2008-08-19 12:49:13 UTC (rev 8676) @@ -75,7 +75,7 @@ # Skip 17th example because it is not implemented (and if it was, it # would be interactive only). # Other examples are not yet implemented. -for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 16 18 22 26; do +for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 16 18 22 24 26; do if [ "$verbose_test" ]; then echo "x${index}" fi This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2008-08-19 13:16:17
|
Revision: 8677 http://plplot.svn.sourceforge.net/plplot/?rev=8677&view=rev Author: andrewross Date: 2008-08-19 13:16:23 +0000 (Tue, 19 Aug 2008) Log Message: ----------- Add tcl version of example 25. Modified Paths: -------------- trunk/examples/tcl/CMakeLists.txt trunk/plplot_test/test_tcl.sh.in Added Paths: ----------- trunk/examples/tcl/x25 trunk/examples/tcl/x25.tcl Modified: trunk/examples/tcl/CMakeLists.txt =================================================================== --- trunk/examples/tcl/CMakeLists.txt 2008-08-19 12:49:13 UTC (rev 8676) +++ trunk/examples/tcl/CMakeLists.txt 2008-08-19 13:16:23 UTC (rev 8677) @@ -50,6 +50,7 @@ "19" "22" "24" +"25" "26" ) Added: trunk/examples/tcl/x25 =================================================================== --- trunk/examples/tcl/x25 (rev 0) +++ trunk/examples/tcl/x25 2008-08-19 13:16:23 UTC (rev 8677) @@ -0,0 +1,19 @@ +#!/bin/sh +#--------------------------------*- Tcl -*------------------------------------# +# $Id:" +# +# Maurice LeBrun +# 12/24/02 +# +# A front-end to x25.tcl for running directly from the command line, locating +# pltcl via PATH. +# Handles all usual plplot command arguments. See "pltcl -h" for info. +#-----------------------------------------------------------------------------# +#\ +exec pltcl -f "$0" ${1+"$@"} + +source x25.tcl + +plinit +x25 +plend Property changes on: trunk/examples/tcl/x25 ___________________________________________________________________ Added: svn:executable + * Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/examples/tcl/x25.tcl =================================================================== --- trunk/examples/tcl/x25.tcl (rev 0) +++ trunk/examples/tcl/x25.tcl 2008-08-19 13:16:23 UTC (rev 8677) @@ -0,0 +1,170 @@ +# $Id:$ +# +# Filling and clipping polygons. +# +# Copyright (C) 2005 Arjen Markus +# Copyright (C) 2008 Andrew Ross +# +# +# 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 + + +#-------------------------------------------------------------------------- +# main +# +# Test program for filling polygons and proper clipping +#-------------------------------------------------------------------------- + +proc x25 {{w loopback}} { + set npts 0 + + $w cmd pladv 0 + $w cmd plssub 3 3 + + matrix xextreme f 10 2 + matrix yextreme f 10 2 + matrix x0 f 10 + matrix y0 f 10 + + xextreme 0 0 = -120.0 + xextreme 0 1 = 120.0 + yextreme 0 0 = -120.0 + yextreme 0 1 = 120.0 + xextreme 1 0 = -120.0 + xextreme 1 1 = 120.0 + yextreme 1 0 = 20.0 + yextreme 1 1 = 120.0 + xextreme 2 0 = -120.0 + xextreme 2 1 = 120.0 + yextreme 2 0 = -20.0 + yextreme 2 1 = 120.0 + xextreme 3 0 = -80.0 + xextreme 3 1 = 80.0 + yextreme 3 0 = -20.0 + yextreme 3 1 = 120.0 + xextreme 4 0 = -220.0 + xextreme 4 1 = -120.0 + yextreme 4 0 = -120.0 + yextreme 4 1 = 120.0 + xextreme 5 0 = -20.0 + xextreme 5 1 = 20.0 + yextreme 5 0 = -120.0 + yextreme 5 1 = 120.0 + xextreme 6 0 = -20.0 + xextreme 6 1 = 20.0 + yextreme 6 0 = -20.0 + yextreme 6 1 = 20.0 + xextreme 7 0 = -80.0 + xextreme 7 1 = 80.0 + yextreme 7 0 = -80.0 + yextreme 7 1 = 80.0 + xextreme 8 0 = 20.0 + xextreme 8 1 = 120.0 + yextreme 8 0 = -120.0 + yextreme 8 1 = 120.0 + + for {set j 0} {$j < 4} {incr j} { + if { $j == 0 } { + # Polygon 1: a diamond + x0 0 = 0 + y0 0 = -100 + x0 1 = -100 + y0 1 = 0 + x0 2 = 0 + y0 2 = 100 + x0 3 = 100 + y0 3 = 0 + set npts 4 + } + if { $j == 1 } { + # Polygon 1: a diamond - reverse direction + x0 3 = 0 + y0 3 = -100 + x0 2 = -100 + y0 2 = 0 + x0 1 = 0 + y0 1 = 100 + x0 0 = 100 + y0 0 = 0 + set npts 4 + } + if { $j == 2 } { + # Polygon 2: a square with punctures + x0 0 = -100 + y0 0 = -100 + x0 1 = -100 + y0 1 = -80 + x0 2 = 80 + y0 2 = 0 + x0 3 = -100 + y0 3 = 80 + x0 4 = -100 + y0 4 = 100 + x0 5 = -80 + y0 5 = 100 + x0 6 = 0 + y0 6 = 80 + x0 7 = 80 + y0 7 = 100 + x0 8 = 100 + y0 8 = 100 + x0 9 = 100 + y0 9 = -100 + set npts 10 + } + if { $j == 3 } { + # Polygon 2: a square with punctures - reversed direction + x0 9 = -100 + y0 9 = -100 + x0 8 = -100 + y0 8 = -80 + x0 7 = 80 + y0 7 = 0 + x0 6 = -100 + y0 6 = 80 + x0 5 = -100 + y0 5 = 100 + x0 4 = -80 + y0 4 = 100 + x0 3 = 0 + y0 3 = 80 + x0 2 = 80 + y0 2 = 100 + x0 1 = 100 + y0 1 = 100 + x0 0 = 100 + y0 0 = -100 + set npts 10 + } + + for {set i 0} {$i < 9} {incr i} { + $w cmd pladv 0 + $w cmd plvsta + $w cmd plwind [xextreme $i 0] [xextreme $i 1] [yextreme $i 0] [yextreme $i 1] + + $w cmd plcol0 2 + $w cmd plbox "bc" 1.0 0 "bcnv" 10.0 0 + $w cmd plcol0 1 + $w cmd plpsty 0 + $w cmd plfill $npts x0 y0 + $w cmd plcol0 2 + $w cmd pllsty 1 + $w cmd plline npts x0 y0 + } + } + +} Property changes on: trunk/examples/tcl/x25.tcl ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/plplot_test/test_tcl.sh.in =================================================================== --- trunk/plplot_test/test_tcl.sh.in 2008-08-19 12:49:13 UTC (rev 8676) +++ trunk/plplot_test/test_tcl.sh.in 2008-08-19 13:16:23 UTC (rev 8677) @@ -75,7 +75,7 @@ # Skip 17th example because it is not implemented (and if it was, it # would be interactive only). # Other examples are not yet implemented. -for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 16 18 22 24 26; do +for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 16 18 22 24 25 26; do if [ "$verbose_test" ]; then echo "x${index}" fi This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hba...@us...> - 2008-08-19 14:31:05
|
Revision: 8678 http://plplot.svn.sourceforge.net/plplot/?rev=8678&view=rev Author: hbabcock Date: 2008-08-19 14:31:13 +0000 (Tue, 19 Aug 2008) Log Message: ----------- Added a stride term to the text transformation matrix so that it will properly scale text for pseudo 3D rendering. Modified Paths: -------------- trunk/drivers/aqt.c trunk/drivers/cairo.c trunk/drivers/pdf.c trunk/drivers/svg.c trunk/include/plplotP.h trunk/include/plstrm.h trunk/src/plcvt.c trunk/src/plot3d.c trunk/src/plsym.c trunk/src/plwind.c Modified: trunk/drivers/aqt.c =================================================================== --- trunk/drivers/aqt.c 2008-08-19 13:16:23 UTC (rev 8677) +++ trunk/drivers/aqt.c 2008-08-19 14:31:13 UTC (rev 8678) @@ -508,7 +508,7 @@ void proc_str (PLStream *pls, EscText *args) { - PLFLT a1, ft_ht, angle, shear; + PLFLT a1, ft_ht, angle, shear, stride; PLINT clxmin, clxmax, clymin, clymax; int i, jst, ref; NSMutableAttributedString *str; @@ -532,7 +532,7 @@ ft_ht = 1.2 * pls->chrht * DPI/25.4; /* ft_ht in points. ht is in mm */ /* given transform, calculate rotation angle & shear angle */ - plRotationShear(args->xform, &angle, &shear); + plRotationShear(args->xform, &angle, &shear, &stride); angle *= 180.0/PI; shear *= -180.0/PI; Modified: trunk/drivers/cairo.c =================================================================== --- trunk/drivers/cairo.c 2008-08-19 13:16:23 UTC (rev 8677) +++ trunk/drivers/cairo.c 2008-08-19 14:31:13 UTC (rev 8678) @@ -357,7 +357,7 @@ float fontSize; int textXExtent, textYExtent; char *textWithPangoMarkup; - PLFLT rotation, shear, cos_rot, sin_rot, cos_shear, sin_shear; + PLFLT rotation, shear, stride, cos_rot, sin_rot, cos_shear, sin_shear; cairo_matrix_t *cairoTransformMatrix; cairo_font_options_t *cairoFontOptions; PangoContext *context; @@ -419,7 +419,7 @@ /* Extract rotation angle and shear from the PLplot tranformation matrix. Compute sines and cosines of the angles as an optimization. */ - plRotationShear(args->xform, &rotation, &shear); + plRotationShear(args->xform, &rotation, &shear, &stride); rotation -= pls->diorot * 3.14159 / 2.0; cos_rot = cos(rotation); sin_rot = sin(rotation); @@ -428,8 +428,8 @@ /* Apply the transform matrix */ cairo_matrix_init(cairoTransformMatrix, - cos_rot, - -sin_rot, + cos_rot * stride, + -sin_rot * stride, cos_rot * sin_shear + sin_rot * cos_shear, -sin_rot * sin_shear + cos_rot * cos_shear, 0,0); Modified: trunk/drivers/pdf.c =================================================================== --- trunk/drivers/pdf.c 2008-08-19 13:16:23 UTC (rev 8677) +++ trunk/drivers/pdf.c 2008-08-19 14:31:13 UTC (rev 8678) @@ -656,7 +656,7 @@ void process_string( PLStream* pls, EscText* args ) { pdfdev* dev = (pdfdev*)pls->dev; - PLFLT rotation, shear; + PLFLT rotation, shear, stride; HPDF_REAL cos_rot, sin_rot, cos_shear, sin_shear; /* Check that we got unicode, warning message and return if not */ @@ -680,7 +680,7 @@ dev->textBlue=(HPDF_REAL)(pls->curcolor.b/255.0); /* calculate transformation matrix (rotation and shear of text) */ - plRotationShear( args->xform, &rotation, &shear ); + plRotationShear( args->xform, &rotation, &shear, &stride); rotation -= pls->diorot * M_PI / 2.0; cos_rot = (HPDF_REAL)cos( rotation ); sin_rot = (HPDF_REAL)sin( rotation ); Modified: trunk/drivers/svg.c =================================================================== --- trunk/drivers/svg.c 2008-08-19 13:16:23 UTC (rev 8677) +++ trunk/drivers/svg.c 2008-08-19 14:31:13 UTC (rev 8678) @@ -376,7 +376,7 @@ short lastOffset = 0; double ftHt; PLUNICODE fci; - PLFLT rotation, shear, cos_rot, sin_rot, sin_shear, cos_shear; + PLFLT rotation, shear, stride, cos_rot, sin_rot, sin_shear, cos_shear; PLFLT t[4]; /* PLFLT *t = args->xform; */ PLUNICODE *ucs4 = args->unicode_array; @@ -396,7 +396,7 @@ /* Calculate the tranformation matrix for SVG based on the transformation matrix provived by PLplot. */ - plRotationShear(args->xform, &rotation, &shear); + plRotationShear(args->xform, &rotation, &shear, &stride); /* N.B. Experimentally, I (AWI) have found the svg rotation angle is the negative of the libcairo rotation angle, and the svg shear angle is pi minus the libcairo shear angle. */ Modified: trunk/include/plplotP.h =================================================================== --- trunk/include/plplotP.h 2008-08-19 13:16:23 UTC (rev 8677) +++ trunk/include/plplotP.h 2008-08-19 14:31:13 UTC (rev 8678) @@ -861,10 +861,15 @@ PLFLT plP_w3wcy(PLFLT x, PLFLT y, PLFLT z); -/* Returns the rotation and shear angle from a plplot transformation matrix */ +/* 3-d coords to 2-d projection (z) */ +PLFLT +plP_w3wcz(PLFLT x, PLFLT y, PLFLT z); + +/* Returns the rotation and shear angle and stride from a plplot transformation matrix */ + void -plRotationShear(PLFLT *xFormMatrix, PLFLT *rotation, PLFLT *shear); +plRotationShear(PLFLT *xFormMatrix, PLFLT *rotation, PLFLT *shear, PLFLT *stride); /* Driver calls */ Modified: trunk/include/plstrm.h =================================================================== --- trunk/include/plstrm.h 2008-08-19 13:16:23 UTC (rev 8677) +++ trunk/include/plstrm.h 2008-08-19 14:31:13 UTC (rev 8678) @@ -661,7 +661,7 @@ PLFLT base3x, base3y, basecx, basecy; PLFLT domxmi, domxma, domymi, domyma; PLFLT zzscl, ranmi, ranma; - PLFLT cxx, cxy, cyx, cyy, cyz; + PLFLT cxx, cxy, cyx, cyy, cyz, czx, czy, czz; /* Variables for keeping track of windows on a page. */ Modified: trunk/src/plcvt.c =================================================================== --- trunk/src/plcvt.c 2008-08-19 13:16:23 UTC (rev 8677) +++ trunk/src/plcvt.c 2008-08-19 14:31:13 UTC (rev 8678) @@ -223,3 +223,14 @@ (y - plsc->basecy) * plsc->cyy + (z - plsc->ranmi) * plsc->cyz)); } + +/* 3-d coords to 2-d projection (z), if that makes any sense... */ +/* See c_plw3d for a mathematical explanation of the transformation. */ + +PLFLT +plP_w3wcz(PLFLT x, PLFLT y, PLFLT z) +{ + return ((PLFLT) ((x - plsc->basecx) * plsc->czx + + (y - plsc->basecy) * plsc->czy + + (z - plsc->ranmi) * plsc->czz)); +} Modified: trunk/src/plot3d.c =================================================================== --- trunk/src/plot3d.c 2008-08-19 13:16:23 UTC (rev 8677) +++ trunk/src/plot3d.c 2008-08-19 14:31:13 UTC (rev 8678) @@ -2373,16 +2373,18 @@ * N.B. The plot transformation matrix is the product of the following * rotation and shear matrices: * - * [c(t) -s(t)] [1 s(p)] - * [s(t) c(t)] [0 c(p)] + * [c(t) -s(t)] [stride s(p)] + * [s(t) c(t)] [0 c(p)] * * Where t is the rotation angle and phi is the shear angle. \*--------------------------------------------------------------------------*/ void -plRotationShear(PLFLT *xFormMatrix, PLFLT *rotation, PLFLT *shear) +plRotationShear(PLFLT *xFormMatrix, PLFLT *rotation, PLFLT *shear, PLFLT *stride) { - *rotation = acos(xFormMatrix[0]); + *stride = sqrt(xFormMatrix[0] * xFormMatrix[0] + xFormMatrix[2] * xFormMatrix[2]); + + *rotation = acos(xFormMatrix[0] / *stride); if(xFormMatrix[2] < 0.0){ *rotation = -*rotation; } Modified: trunk/src/plsym.c =================================================================== --- trunk/src/plsym.c 2008-08-19 13:16:23 UTC (rev 8677) +++ trunk/src/plsym.c 2008-08-19 14:31:13 UTC (rev 8678) @@ -1599,7 +1599,8 @@ PLFLT sx, PLFLT sy, PLFLT sz, PLFLT just, const char *text) { PLFLT xpc, ypc, xrefpc, yrefpc, xdpc, ydpc, xspc, yspc, ld, ls, cp, shift; - PLFLT theta, phi, xform[4]; + PLFLT x_o, y_o, z_o, x_dx, y_dy, z_dz; + PLFLT theta, phi, stride, xform[4]; /* check that the plotting environment is set up */ if (plsc->level < 3) { @@ -1639,6 +1640,20 @@ phi = 1.570796 - phi; } + /* Determine how to adjust the "stride" of the text to make it + appear that it is going into (or out of) the page. Basically + scale the x baseline of the text by the normalized length of + the d vector projected into the x-y plane. */ + x_o = plP_w3wcx(wx, wy, wz); + y_o = plP_w3wcy(wx, wy, wz); + z_o = plP_w3wcz(wx, wy, wz); + x_dx = x_o - plP_w3wcx(wx+dx, wy+dy, wz+dz); + y_dy = y_o - plP_w3wcy(wx+dx, wy+dy, wz+dz); + z_dz = z_o - plP_w3wcz(wx+dx, wy+dy, wz+dz); + + stride = sqrt(x_dx*x_dx + y_dy*y_dy); + stride = stride/sqrt(x_dx*x_dx + y_dy*y_dy + z_dz*z_dz); + /* compute the reference point */ xpc = plP_dcmmx(plP_pcdcx(xpc)); ypc = plP_dcmmy(plP_pcdcy(ypc)); @@ -1653,9 +1668,9 @@ yrefpc = plP_mmpcy(yrefpc); /* compute the transform */ - xform[0] = cos(theta); + xform[0] = cos(theta) * stride; xform[1] = cos(theta) * sin(phi) - sin(theta) * cos(phi); - xform[2] = sin(theta); + xform[2] = sin(theta) * stride; xform[3] = sin(theta) * sin(phi) + cos(theta) * cos(phi); plP_text(0, just, xform, xpc, ypc, xrefpc, yrefpc, text); Modified: trunk/src/plwind.c =================================================================== --- trunk/src/plwind.c 2008-08-19 13:16:23 UTC (rev 8677) +++ trunk/src/plwind.c 2008-08-19 14:31:13 UTC (rev 8678) @@ -229,4 +229,7 @@ plsc->cyx = cx * saz * salt; plsc->cyy = cy * caz * salt; plsc->cyz = zscale * calt; + plsc->czx = -cx * calt * saz; + plsc->czy = -cy * calt * caz; + plsc->czz = zscale * salt; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2008-08-20 08:37:30
|
Revision: 8686 http://plplot.svn.sourceforge.net/plplot/?rev=8686&view=rev Author: andrewross Date: 2008-08-20 08:37:38 +0000 (Wed, 20 Aug 2008) Log Message: ----------- Correct tcl example 23 so it works and is consistent with C version. Add tcl examples 23 and 27 to the standard tests. Modified Paths: -------------- trunk/examples/tcl/x23.tcl trunk/plplot_test/test_tcl.sh.in Modified: trunk/examples/tcl/x23.tcl =================================================================== --- trunk/examples/tcl/x23.tcl 2008-08-20 08:36:47 UTC (rev 8685) +++ trunk/examples/tcl/x23.tcl 2008-08-20 08:37:38 UTC (rev 8686) @@ -1,4 +1,4 @@ -# $Id:$ +# $Id$ # # Displays Greek letters and mathematically interesting Unicode ranges # Copyright (C) 2005,2008 Alan Irwin @@ -186,8 +186,8 @@ # non-zero values Must be consistent with nxcells and nycells. matrix offset i 11 = { + 0, 0, - 0, 64, 128, 0, @@ -256,7 +256,7 @@ $w cmd plwind 0.0 1.0 0.0 1.0 $w cmd plgspa xmin xmax ymin ymax $w cmd plschr 0.0 0.8 - set ycharacter_scale [ expr {1.0/($ymax-$ymin)}] + set ycharacter_scale [ expr {1.0/($ymax-$ymin)} ] # Factor should be 0.5, but heuristically it turns out to be larger. $w cmd plgchr chardef charht @@ -277,13 +277,13 @@ set x [ expr {(0.5+$i)*$deltax} ] if {$slice < $length} { if {$page == 0} { - set cmdString [set Greek$slice] - } elseif (($page >= 1) && ($page <= 3)) { - set cmdString [format "##[0x%.4x]" [ Type1 [expr [offset $page]+$slice] ] ] - } elseif ($page >= 4) { - set cmdString [format "##[0x%.4x]" [eval {[lo $page]+$slice}]] + set cmdString [format "#%s" [set Greek$slice]] + } elseif {$page <= 3} { + set cmdString [format "##\[0x%.4x\]" [ Type1 [expr [offset $page]+$slice] ] ] + } else { + set cmdString [format "##\[0x%.4x\]" [expr {[lo $page]+$slice}]] } - $w cmd plptex $x [ expr {$y+$yoffset}] 1. 0. 0.5 $cmdString + $w cmd plptex $x [ expr {$y+$yoffset}] 1. 0. 0.5 [ string range $cmdString 1 end ] $w cmd plptex $x [ expr {$y-$yoffset}] 1. 0. 0.5 $cmdString } incr slice @@ -298,8 +298,9 @@ # Demonstrate methods of getting the current fonts $w cmd plgfci fci_old $w cmd plgfont ifamily istyle iweight - format "For example 23 prior to page 12 the FCI is 0x%x\n" $fci_old - format "For example 23 prior to page 12 the font family, style and weight are %s %s %s\n" $family($ifamily) $style($istyle) $weight($iweight) + puts [ format "For example 23 prior to page 12 the FCI is 0x%x" $fci_old ] + puts [ format "For example 23 prior to page 12 the font family, style and weight are %s %s %s" \ + $family($ifamily) $style($istyle) $weight($iweight) ] for {set page 11} {$page<16} {incr page} { set dy 0.030 Modified: trunk/plplot_test/test_tcl.sh.in =================================================================== --- trunk/plplot_test/test_tcl.sh.in 2008-08-20 08:36:47 UTC (rev 8685) +++ trunk/plplot_test/test_tcl.sh.in 2008-08-20 08:37:38 UTC (rev 8686) @@ -75,7 +75,7 @@ # Skip 17th example because it is not implemented (and if it was, it # would be interactive only). # Other examples are not yet implemented. -for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 16 18 22 24 25 26; do +for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 16 18 22 23 24 25 26 27; do if [ "$verbose_test" ]; then echo "x${index}" fi This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2008-08-21 11:18:00
|
Revision: 8695 http://plplot.svn.sourceforge.net/plplot/?rev=8695&view=rev Author: andrewross Date: 2008-08-21 11:18:09 +0000 (Thu, 21 Aug 2008) Log Message: ----------- Add tcl version of example 28. Modified Paths: -------------- trunk/examples/tcl/CMakeLists.txt trunk/examples/tcl/tcldemos.tcl trunk/plplot_test/test_tcl.sh.in Added Paths: ----------- trunk/examples/tcl/x28 trunk/examples/tcl/x28.tcl Modified: trunk/examples/tcl/CMakeLists.txt =================================================================== --- trunk/examples/tcl/CMakeLists.txt 2008-08-21 00:03:03 UTC (rev 8694) +++ trunk/examples/tcl/CMakeLists.txt 2008-08-21 11:18:09 UTC (rev 8695) @@ -54,6 +54,7 @@ "25" "26" "27" +"28" ) set(tcl_SCRIPTS) Modified: trunk/examples/tcl/tcldemos.tcl =================================================================== --- trunk/examples/tcl/tcldemos.tcl 2008-08-21 00:03:03 UTC (rev 8694) +++ trunk/examples/tcl/tcldemos.tcl 2008-08-21 11:18:09 UTC (rev 8695) @@ -33,7 +33,7 @@ # restore defaults plcol0 1 proc $i {} "$demo" -for {set i 24} {$i <= 27} {incr i} { +for {set i 24} {$i <= 28} {incr i} { set demo x[format "%02d" $i] source $demo.tcl # restore defaults Added: trunk/examples/tcl/x28 =================================================================== --- trunk/examples/tcl/x28 (rev 0) +++ trunk/examples/tcl/x28 2008-08-21 11:18:09 UTC (rev 8695) @@ -0,0 +1,19 @@ +#!/bin/sh +#--------------------------------*- Tcl -*------------------------------------# +# $Id:$ +# +# Maurice LeBrun +# 12/24/02 +# +# A front-end to x28.tcl for running directly from the command line, locating +# pltcl via PATH. +# Handles all usual plplot command arguments. See "pltcl -h" for info. +#-----------------------------------------------------------------------------# +#\ +exec pltcl -f "$0" ${1+"$@"} + +source x28.tcl + +plinit +x28 +plend Property changes on: trunk/examples/tcl/x28 ___________________________________________________________________ Added: svn:executable + * Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/examples/tcl/x28.tcl =================================================================== --- trunk/examples/tcl/x28.tcl (rev 0) +++ trunk/examples/tcl/x28.tcl 2008-08-21 11:18:09 UTC (rev 8695) @@ -0,0 +1,368 @@ +# $Id$ +# +# plmtex3, plptex3 demo. +# +# Copyright (C) 2007 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 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 +# +# + +# +# Demonstrates plotting text in 3D. +# + +proc x28 {{w loopback}} { + + # Choose these values to correspond to tick marks. + set XPTS 2 + set YPTS 2 + set NREVOLUTION 16 + set NROTATION 8 + set NSHEAR 8 + + set pi 3.14159265358979323846 + + set DRAW_LINEXY 3 + + set xmin 0. + set xmax 1.0 + set xmid [expr {0.5*($xmax + $xmin)}] + set xrange [expr {$xmax - $xmin}] + set ymin 0. + set ymax 1.0 + set ymid [expr {0.5*($ymax + $ymin)}] + set yrange [expr {$ymax - $ymin}] + set zmin 0. + set zmax 1.0 + set zmid [expr {0.5*($zmax + $zmin)}] + set zrange [expr {$zmax - $zmin}] + + # p1string must be exactly one character + the null termination + # character. + set p1string "O" + set pstring "The future of our civilization depends on software freedom." + # Allocate and define the minimal x, y, and z to insure 3D box + matrix x f $XPTS + matrix y f $YPTS + matrix z f $XPTS $YPTS + + for {set i 0} {$i < $XPTS} {incr i} { + x $i = [expr {$xmin + double($i) * ($xmax-$xmin)/ double($XPTS-1)}] + } + + for {set j 0} {$j < $YPTS} {incr j} { + y $j = [expr {$ymin + double($j) * ($ymax-$ymin)/ double($YPTS-1)}] + } + + for {set i 0} {$i < $XPTS} {incr i} { + for {set j 0} {$j < $YPTS} {incr j} { + z $i $j = 0. + } + } + + # Page 1: Demonstrate inclination and shear capability pattern. + + $w cmd pladv 0 + $w cmd plvpor -0.15 1.15 -0.05 1.05 + $w cmd plwind -1.2 1.2 -0.8 1.5 + $w cmd plw3d 1.0 1.0 1.0 $xmin $xmax $ymin $ymax $zmin $zmax 20. 45. + + $w cmd plcol0 2 + $w cmd plbox3 "b" "" [expr {$xmax-$xmin}] 0 \ + "b" "" [expr {$ymax-$ymin}] 0 \ + "bcd" "" [expr {$zmax-$zmin}] 0 + + # z = zmin. + $w cmd plschr 0. 1.0 + for {set i 0} {$i < $NREVOLUTION} {incr i} { + set omega [expr {2.*$pi*double($i)/double($NREVOLUTION)}] + set sin_omega [expr {sin($omega)}] + set cos_omega [expr {cos($omega)}] + set x_inclination [expr {0.5*$xrange*$cos_omega}] + set y_inclination [expr {0.5*$yrange*$sin_omega}] + set z_inclination 0. + set x_shear [expr {-0.5*$xrange*$sin_omega}] + set y_shear [expr {0.5*$yrange*$cos_omega}] + set z_shear 0. + $w cmd plptex3 \ + $xmid $ymid $zmin \ + $x_inclination $y_inclination $z_inclination \ + $x_shear $y_shear $z_shear \ + 0.0 " revolution" + } + + # x = xmax. + $w cmd plschr 0. 1.0 + for {set i 0} {$i < $NREVOLUTION} {incr i} { + set omega [expr {2.*$pi*double($i)/double($NREVOLUTION)}] + set sin_omega [expr {sin($omega)}] + set cos_omega [expr {cos($omega)}] + set x_inclination 0. + set y_inclination [expr {-0.5*$yrange*$cos_omega}] + set z_inclination [expr {0.5*$zrange*$sin_omega}] + set x_shear 0. + set y_shear [expr {0.5*$yrange*$sin_omega}] + set z_shear [expr {0.5*$zrange*$cos_omega}] + $w cmd plptex3 \ + $xmax $ymid $zmid \ + $x_inclination $y_inclination $z_inclination \ + $x_shear $y_shear $z_shear \ + 0.0 " revolution" + } + + # y = ymax. + $w cmd plschr 0., 1.0 + for {set i 0} {$i < $NREVOLUTION} {incr i} { + set omega [expr {2.*$pi*double($i)/double($NREVOLUTION)}] + set sin_omega [expr {sin($omega)}] + set cos_omega [expr {cos($omega)}] + set x_inclination [expr {0.5*$xrange*$cos_omega}] + set y_inclination 0. + set z_inclination [expr {0.5*$zrange*$sin_omega}] + set x_shear [expr {-0.5*$xrange*$sin_omega}] + set y_shear 0. + set z_shear [expr {0.5*$zrange*$cos_omega}] + $w cmd plptex3 \ + $xmid $ymax $zmid \ + $x_inclination $y_inclination $z_inclination \ + $x_shear $y_shear $z_shear \ + 0.0 " revolution" + } + # Draw minimal 3D grid to finish defining the 3D box. + $w cmd plmesh x y z $XPTS $YPTS $DRAW_LINEXY + + # Page 2: Demonstrate rotation of string around its axis. + $w cmd pladv 0 + $w cmd plvpor -0.15 1.15 -0.05 1.05 + $w cmd plwind -1.2 1.2 -0.8 1.5 + $w cmd plw3d 1.0 1.0 1.0 $xmin $xmax $ymin $ymax $zmin $zmax 20. 45. + + $w cmd plcol0 2 + $w cmd plbox3 "b" "" [expr {$xmax-$xmin}] 0 \ + "b" "" [expr {$ymax-$ymin}] 0 \ + "bcd" "" [expr {$zmax-$zmin}] 0 + + # y = ymax. + $w cmd plschr 0. 1.0 + set x_inclination 1. + set y_inclination 0. + set z_inclination 0. + set x_shear 0. + for {set i 0} {$i < $NROTATION} {incr i} { + set omega [expr {2.*$pi*double($i)/double($NROTATION)}] + set sin_omega [expr {sin($omega)}] + set cos_omega [expr {cos($omega)}] + set y_shear [expr {0.5*$yrange*$sin_omega}] + set z_shear [expr {0.5*$zrange*$cos_omega}] + $w cmd plptex3 \ + $xmid $ymax [expr {$zmax -($zmax-0.2)*double($i)/double($NROTATION-1)}] \ + $x_inclination $y_inclination $z_inclination \ + $x_shear $y_shear $z_shear \ + 0.5 "rotation for y = y#dmax#u" + } + + # x = xmax. + $w cmd plschr 0. 1.0 + set x_inclination 0. + set y_inclination -1. + set z_inclination 0. + set y_shear 0. + for {set i 0} {$i < $NROTATION} {incr i} { + set omega [expr {2.*$pi*double($i)/double($NROTATION)}] + set sin_omega [expr {sin($omega)}] + set cos_omega [expr {cos($omega)}] + set x_shear [expr {0.5*$xrange*$sin_omega}] + set z_shear [expr {0.5*$zrange*$cos_omega}] + $w cmd plptex3 \ + $xmax $ymid [expr {$zmax -($zmax-0.2)*double($i)/double($NROTATION-1)}] \ + $x_inclination $y_inclination $z_inclination \ + $x_shear $y_shear $z_shear \ + 0.5 "rotation for x = x#dmax#u" + } + + # z = zmin. + $w cmd plschr 0. 1.0 + set x_inclination 1. + set y_inclination 0. + set z_inclination 0. + set x_shear 0. + for {set i 0} {$i < $NROTATION} {incr i} { + set omega [expr {2.*$pi*double($i)/double($NROTATION)}] + set sin_omega [expr {sin($omega)}] + set cos_omega [expr {cos($omega)}] + set y_shear [expr {0.5*$yrange*$cos_omega}] + set z_shear [expr {0.5*$zrange*$sin_omega}] + $w cmd plptex3 \ + $xmid [expr {$ymax -($ymax-0.2)*double($i)/double($NROTATION-1)}] $zmin \ + $x_inclination $y_inclination $z_inclination \ + $x_shear $y_shear $z_shear \ + 0.5 "rotation for z = z#dmin#u" + } + # Draw minimal 3D grid to finish defining the 3D box. + $w cmd plmesh x y z $XPTS $YPTS $DRAW_LINEXY + + # Page 3: Demonstrate shear of string along its axis. + # Work around xcairo and pngcairo (but not pscairo) problems for + # shear vector too close to axis of string. (N.B. no workaround + # would be domega = 0.) + set domega 0.05 + $w cmd pladv 0 + $w cmd plvpor -0.15 1.15 -0.05 1.05 + $w cmd plwind -1.2 1.2 -0.8 1.5 + $w cmd plw3d 1.0 1.0 1.0 $xmin $xmax $ymin $ymax $zmin $zmax 20. 45. + + $w cmd plcol0 2 + $w cmd plbox3 "b" "" [expr {$xmax-$xmin}] 0 \ + "b" "" [expr {$ymax-$ymin}] 0 \ + "bcd" "" [expr {$zmax-$zmin}] 0 + + # y = ymax. + $w cmd plschr 0. 1.0 + set x_inclination 1. + set y_inclination 0. + set z_inclination 0. + set y_shear 0. + for {set i 0} {$i < $NSHEAR} {incr i} { + set omega [expr {$domega + 2.*$pi*double($i)/double($NSHEAR)}] + set sin_omega [expr {sin($omega)}] + set cos_omega [expr {cos($omega)}] + set x_shear [expr {0.5*$xrange*$sin_omega}] + set z_shear [expr {0.5*$zrange*$cos_omega}] + $w cmd plptex3 \ + $xmid $ymax [expr {$zmax -($zmax-0.2)*double($i)/double($NSHEAR-1)}] \ + $x_inclination $y_inclination $z_inclination \ + $x_shear $y_shear $z_shear \ + 0.5 "shear for y = y#dmax#u" + } + + # x = xmax. + $w cmd plschr 0. 1.0 + set x_inclination 0. + set y_inclination -1. + set z_inclination 0. + set x_shear 0. + for {set i 0} {$i < $NSHEAR} {incr i} { + set omega [expr {$domega + 2.*$pi*double($i)/double($NSHEAR)}] + set sin_omega [expr {sin($omega)}] + set cos_omega [expr {cos($omega)}] + set y_shear [expr {-0.5*$yrange*$sin_omega}] + set z_shear [expr {0.5*$zrange*$cos_omega}] + $w cmd plptex3 \ + $xmax $ymid [expr {$zmax -($zmax-0.2)*double($i)/double($NSHEAR-1)}] \ + $x_inclination $y_inclination $z_inclination \ + $x_shear $y_shear $z_shear \ + 0.5 "shear for x = x#dmax#u" + } + + # z = zmin. + $w cmd plschr 0. 1.0 + set x_inclination 1. + set y_inclination 0. + set z_inclination 0. + set z_shear 0. + for {set i 0} {$i < $NSHEAR} {incr i} { + set omega [expr {$domega + 2.*$pi*double($i)/double($NSHEAR)}] + set sin_omega [expr {sin($omega)}] + set cos_omega [expr {cos($omega)}] + set y_shear [expr {0.5*$yrange*$cos_omega}] + set x_shear [expr {0.5*$xrange*$sin_omega}] + $w cmd plptex3 \ + $xmid [expr {$ymax -($ymax-0.2)*double($i)/double($NSHEAR-1)}] $zmin \ + $x_inclination $y_inclination $z_inclination \ + $x_shear $y_shear $z_shear \ + 0.5 "shear for z = z#dmin#u" + } + # Draw minimal 3D grid to finish defining the 3D box. + $w cmd plmesh x y z $XPTS $YPTS $DRAW_LINEXY + + # Page 4: Demonstrate drawing a string on a 3D path. + $w cmd pladv 0 + $w cmd plvpor -0.15 1.15 -0.05 1.05 + $w cmd plwind -1.2 1.2 -0.8 1.5 + $w cmd plw3d 1.0 1.0 1.0 $xmin $xmax $ymin $ymax $zmin $zmax 40. -30. + + $w cmd plcol0 2 + $w cmd plbox3 "b" "" [expr {$xmax-$xmin}] 0 \ + "b" "" [expr {$ymax-$ymin}] 0 \ + "bcd" "" [expr {$zmax-$zmin}] 0 + + $w cmd plschr 0. 1.2 + # domega controls the spacing between the various characters of the + # string and also the maximum value of omega for the given number + # of characters in *pstring. + set pslen [string length $pstring] + set domega [expr {2.*$pi/$pslen}] + set omega 0. + # 3D function is a helix of the given radius and pitch + set radius 0.5 + set pitch [expr {1./(2.*$pi)}] + for {set i 0} {$i < $pslen} {incr i} { + set sin_omega [expr {sin($omega)}] + set cos_omega [expr {cos($omega)}] + set xpos [expr {$xmid + $radius*$sin_omega}] + set ypos [expr {$ymid - $radius*$cos_omega}] + set zpos [expr {$zmin + $pitch*$omega}] + # In general, the inclination is proportional to the derivative of + # the position wrt theta. + set x_inclination [expr {$radius*$cos_omega}] + set y_inclination [expr {$radius*$sin_omega}] + set z_inclination [expr {$pitch}] + # The shear vector should be perpendicular to the 3D line with Z + # component maximized, but for low pitch a good approximation is + # a constant vector that is parallel to the Z axis. + set x_shear 0. + set y_shear 0. + set z_shear 1. + $w cmd plptex3 \ + $xpos $ypos $zpos \ + $x_inclination $y_inclination $z_inclination \ + $x_shear $y_shear $z_shear \ + 0.5 [string range $pstring $i $i] + set omega [expr {$omega + $domega}] + } + # Draw minimal 3D grid to finish defining the 3D box. + $w cmd plmesh x y z $XPTS $YPTS $DRAW_LINEXY + + # Page 5: Demonstrate plmtex3 axis labelling capability + $w cmd pladv 0 + $w cmd plvpor -0.15 1.15 -0.05 1.05 + $w cmd plwind -1.2 1.2 -0.8 1.5 + $w cmd plw3d 1.0 1.0 1.0 $xmin $xmax $ymin $ymax $zmin $zmax 20. 45. + + $w cmd plcol0 2 + $w cmd plbox3 "b" "" [expr {$xmax-$xmin}] 0 \ + "b" "" [expr {$ymax-$ymin}] 0 \ + "bcd" "" [expr {$zmax-$zmin}] 0 + + $w cmd plschr 0. 1.0 + $w cmd plmtex3 "xp" 3.0 0.5 0.5 "Arbitrarily displaced" + $w cmd plmtex3 "xp" 4.5 0.5 0.5 "primary X-axis label" + $w cmd plmtex3 "xs" -2.5 0.5 0.5 "Arbitrarily displaced" + $w cmd plmtex3 "xs" -1.0 0.5 0.5 "secondary X-axis label" + $w cmd plmtex3 "yp" 3.0 0.5 0.5 "Arbitrarily displaced" + $w cmd plmtex3 "yp" 4.5 0.5 0.5 "primary Y-axis label" + $w cmd plmtex3 "ys" -2.5 0.5 0.5 "Arbitrarily displaced" + $w cmd plmtex3 "ys" -1.0 0.5 0.5 "secondary Y-axis label" + $w cmd plmtex3 "zp" 4.5 0.5 0.5 "Arbitrarily displaced" + $w cmd plmtex3 "zp" 3.0 0.5 0.5 "primary Z-axis label" + $w cmd plmtex3 "zs" -2.5 0.5 0.5 "Arbitrarily displaced" + $w cmd plmtex3 "zs" -1.0 0.5 0.5 "secondary Z-axis label" + # Draw minimal 3D grid to finish defining the 3D box. + $w cmd plmesh x y z $XPTS $YPTS $DRAW_LINEXY + +} Property changes on: trunk/examples/tcl/x28.tcl ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/plplot_test/test_tcl.sh.in =================================================================== --- trunk/plplot_test/test_tcl.sh.in 2008-08-21 00:03:03 UTC (rev 8694) +++ trunk/plplot_test/test_tcl.sh.in 2008-08-21 11:18:09 UTC (rev 8695) @@ -75,7 +75,7 @@ # Skip 17th example because it is not implemented (and if it was, it # would be interactive only). # Other examples are not yet implemented. -for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 16 18 22 23 24 25 26 27; do +for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 16 18 22 23 24 25 26 27 28; do if [ "$verbose_test" ]; then echo "x${index}" fi This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2008-08-21 12:27:17
|
Revision: 8697 http://plplot.svn.sourceforge.net/plplot/?rev=8697&view=rev Author: andrewross Date: 2008-08-21 12:27:26 +0000 (Thu, 21 Aug 2008) Log Message: ----------- Add tcl version of example 29. Modified Paths: -------------- trunk/examples/tcl/CMakeLists.txt trunk/examples/tcl/tcldemos.tcl trunk/plplot_test/test_tcl.sh.in Added Paths: ----------- trunk/examples/tcl/x29 trunk/examples/tcl/x29.tcl Modified: trunk/examples/tcl/CMakeLists.txt =================================================================== --- trunk/examples/tcl/CMakeLists.txt 2008-08-21 11:41:50 UTC (rev 8696) +++ trunk/examples/tcl/CMakeLists.txt 2008-08-21 12:27:26 UTC (rev 8697) @@ -55,6 +55,7 @@ "26" "27" "28" +"29" ) set(tcl_SCRIPTS) Modified: trunk/examples/tcl/tcldemos.tcl =================================================================== --- trunk/examples/tcl/tcldemos.tcl 2008-08-21 11:41:50 UTC (rev 8696) +++ trunk/examples/tcl/tcldemos.tcl 2008-08-21 12:27:26 UTC (rev 8697) @@ -33,7 +33,7 @@ # restore defaults plcol0 1 proc $i {} "$demo" -for {set i 24} {$i <= 28} {incr i} { +for {set i 24} {$i <= 29} {incr i} { set demo x[format "%02d" $i] source $demo.tcl # restore defaults Added: trunk/examples/tcl/x29 =================================================================== --- trunk/examples/tcl/x29 (rev 0) +++ trunk/examples/tcl/x29 2008-08-21 12:27:26 UTC (rev 8697) @@ -0,0 +1,19 @@ +#!/bin/sh +#--------------------------------*- Tcl -*------------------------------------# +# $Id:$ +# +# Maurice LeBrun +# 12/24/02 +# +# A front-end to x29.tcl for running directly from the command line, locating +# pltcl via PATH. +# Handles all usual plplot command arguments. See "pltcl -h" for info. +#-----------------------------------------------------------------------------# +#\ +exec pltcl -f "$0" ${1+"$@"} + +source x29.tcl + +plinit +x29 +plend Property changes on: trunk/examples/tcl/x29 ___________________________________________________________________ Added: svn:executable + * Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/examples/tcl/x29.tcl =================================================================== --- trunk/examples/tcl/x29.tcl (rev 0) +++ trunk/examples/tcl/x29.tcl 2008-08-21 12:27:26 UTC (rev 8697) @@ -0,0 +1,184 @@ +# $Id:$ +# +# Sample plots using date / time formatting for axes +# +# Copyright (C) 2007,2008 Andrew Ross +# +# 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 +# +# + +# 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). +# + +proc x29 {{w loopback}} { + + x29_plot1 $w + + x29_plot2 $w + + x29_plot3 $w + +} + +# Plot a model diurnal cycle of temperature +proc x29_plot1 {{w loopback}} { + + set pi 3.14159265358979323846 + + # Data points every 10 minutes for 1 day + set npts 145 + + matrix x f $npts + matrix y f $npts + + set xmin 0 + # Number of seconds in a day + set xmax [expr {60.0*60.0*24.0}] + set ymin 10.0 + set ymax 20.0 + + for {set i 0} {$i<$npts} {incr i} { + x $i = [expr {$xmax*double($i)/double($npts)}] + y $i = [expr {15.0 - 5.0*cos( 2*$pi*double($i)/double($npts))}] + } + + $w cmd pladv 0 + + $w cmd plvsta + $w cmd plwind $xmin $xmax $ymin $ymax + + # Draw a box with ticks spaced every 3 hour in X and 1 degree C in Y. + $w cmd plcol0 1 + # Set time format to be hours:minutes + $w cmd pltimefmt "%H:%M" + $w cmd plbox "bcnstd" [expr {3.0*60*60}] 3 "bcnstv" 1 5 + + $w cmd plcol0 3 + $w cmd pllab "Time (hours:mins)" "Temperature (degC)" \ + "#frPLplot Example 29 - Daily temperature" + + $w cmd plcol0 4 + + $w cmd plline $npts x y +} + +# Plot the number of hours of daylight as a function of day for a year +proc x29_plot2 {{w loopback}} { + + set pi 3.14159265358979323846 + + # Latitude for London + set lat 51.5 + + set npts 365 + + matrix x f $npts + matrix y f $npts + + set xmin 0 + set xmax [expr {$npts*60.0*60.0*24.0}] + set ymin 0 + set ymax 24 + + # 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 {set j 0} {$j < $npts} {incr j} { + x $j = [expr {$j*60.0*60.0*24.0}] + set p [expr {asin(0.39795*cos(0.2163108 + 2*atan(0.9671396*tan(0.00860*($j-186))))) }] + set d [expr {24.0 - (24.0/$pi)* \ + acos( (sin(0.8333*$pi/180.0) + \ + sin($lat*$pi/180.0)*sin($p)) / \ + (cos($lat*$pi/180.0)*cos($p)) )}] + y $j = $d + } + + $w cmd plcol0 1 + # Set time format to be abbreviated month name followed by day of month + $w cmd pltimefmt "%b %d" + $w cmd plenv $xmin $xmax $ymin $ymax 0 40 + + + $w cmd plcol0 3 + $w cmd pllab "Date" "Hours of daylight" \ + "#frPLplot Example 29 - Hours of daylight at 51.5N" + + $w cmd plcol0 4 + + $w cmd plline $npts x y + +} + +proc x29_plot3 {{w loopback}} { + + set pi 3.14159265358979323846 + + # Calculate seconds since the Unix epoch for 2005-12-01 UTC. + # On newer versions of tcl should use the -format "%Y-%m-%d" + # option rather than free-form scanning, but this doesn't + # seem to work on tcl8.4 + # Also -timezone :UTC should be used instead of -gmt + set tstart [clock scan "2005-12-01" \ + -gmt true ] + + set npts 62 + + matrix x f $npts + matrix y f $npts + + set xmin $tstart + set xmax [expr {$xmin + $npts*60.0*60.0*24.0}] + set ymin 0.0 + set ymax 5.0 + + for {set i 0} {$i<$npts} {incr i} { + x $i = [expr {$xmin + $i*60.0*60.0*24.0}] + set imin [expr {$i < $npts-$i ? $i : $npts-$i}] + y $i = [expr {1.0 + sin( 2*$pi*double($i)/7.0 ) + \ + exp( double($imin) / 31.0) }] + } + $w cmd pladv 0 + + $w cmd plvsta + $w cmd plwind $xmin $xmax $ymin $ymax + + $w cmd 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. + $w cmd pltimefmt "%Y-%m-%d" + # Draw a box with ticks spaced every 14 days in X and 1 hour in Y. + $w cmd plbox "bcnstd" [expr {14*24.0*60.0*60.0}] 14 "bcnstv" 1 4 + + $w cmd plcol0 3 + $w cmd pllab "Date" "Hours of television watched" \ + "#frPLplot Example 29 - Hours of television watched in Dec 2005 / Jan 2006" + + $w cmd plcol0 4 + + $w cmd plpoin $npts x y 2 + $w cmd plline $npts x y + +} Property changes on: trunk/examples/tcl/x29.tcl ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/plplot_test/test_tcl.sh.in =================================================================== --- trunk/plplot_test/test_tcl.sh.in 2008-08-21 11:41:50 UTC (rev 8696) +++ trunk/plplot_test/test_tcl.sh.in 2008-08-21 12:27:26 UTC (rev 8697) @@ -75,7 +75,7 @@ # Skip 17th example because it is not implemented (and if it was, it # would be interactive only). # Other examples are not yet implemented. -for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 16 18 22 23 24 25 26 27 28; do +for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 16 18 22 23 24 25 26 27 28 29; do if [ "$verbose_test" ]; then echo "x${index}" fi This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2008-08-21 21:31:21
|
Revision: 8699 http://plplot.svn.sourceforge.net/plplot/?rev=8699&view=rev Author: andrewross Date: 2008-08-21 21:31:31 +0000 (Thu, 21 Aug 2008) Log Message: ----------- Add tcl version of example 30. Modified Paths: -------------- trunk/examples/tcl/CMakeLists.txt trunk/examples/tcl/tcldemos.tcl trunk/plplot_test/test_tcl.sh.in Added Paths: ----------- trunk/examples/tcl/x30 trunk/examples/tcl/x30.tcl Modified: trunk/examples/tcl/CMakeLists.txt =================================================================== --- trunk/examples/tcl/CMakeLists.txt 2008-08-21 15:34:04 UTC (rev 8698) +++ trunk/examples/tcl/CMakeLists.txt 2008-08-21 21:31:31 UTC (rev 8699) @@ -56,6 +56,7 @@ "27" "28" "29" +"30" ) set(tcl_SCRIPTS) Modified: trunk/examples/tcl/tcldemos.tcl =================================================================== --- trunk/examples/tcl/tcldemos.tcl 2008-08-21 15:34:04 UTC (rev 8698) +++ trunk/examples/tcl/tcldemos.tcl 2008-08-21 21:31:31 UTC (rev 8699) @@ -33,7 +33,7 @@ # restore defaults plcol0 1 proc $i {} "$demo" -for {set i 24} {$i <= 29} {incr i} { +for {set i 24} {$i <= 30} {incr i} { set demo x[format "%02d" $i] source $demo.tcl # restore defaults Added: trunk/examples/tcl/x30 =================================================================== --- trunk/examples/tcl/x30 (rev 0) +++ trunk/examples/tcl/x30 2008-08-21 21:31:31 UTC (rev 8699) @@ -0,0 +1,19 @@ +#!/bin/sh +#--------------------------------*- Tcl -*------------------------------------# +# $Id:$ +# +# Maurice LeBrun +# 12/24/02 +# +# A front-end to x30.tcl for running directly from the command line, locating +# pltcl via PATH. +# Handles all usual plplot command arguments. See "pltcl -h" for info. +#-----------------------------------------------------------------------------# +#\ +exec pltcl -f "$0" ${1+"$@"} + +source x30.tcl + +plinit +x30 +plend Property changes on: trunk/examples/tcl/x30 ___________________________________________________________________ Added: svn:executable + * Added: trunk/examples/tcl/x30.tcl =================================================================== --- trunk/examples/tcl/x30.tcl (rev 0) +++ trunk/examples/tcl/x30.tcl 2008-08-21 21:31:31 UTC (rev 8699) @@ -0,0 +1,150 @@ +# +# Alpha color values demonstration. +# +# Copyright (C) 2008 Hazen Babcock +# Copyright (C) 2008 Andrew Ross +# +# +# 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. +# + +proc x30 {{w loopback}} { + + matrix red i 4 = { 0, 255, 0, 0} + matrix green i 4 = { 0, 0, 255, 0} + matrix blue i 4 = { 0, 0, 0, 255} + matrix alpha f 4 = {1.0, 1.0, 1.0, 1.0} + + matrix px f 4 = {0.1, 0.5, 0.5, 0.1} + matrix py f 4 = {0.1, 0.1, 0.5, 0.5} + + matrix pos f 2 = {0.0, 1.0} + matrix rcoord f 2 = {1.0, 1.0} + matrix gcoord f 2 = {0.0, 0.0} + matrix bcoord f 2 = {0.0, 0.0} + matrix acoord f 2 = {0.0, 1.0} + matrix rev i 2 = {0, 0} + + $w cmd plscmap0n 4 + $w cmd plscmap0a red green blue alpha 4 + + # + # Page 1: + # + # This is a series of red, green and blue rectangles overlaid + # on each other with gradually increasing transparency. + # + + # Set up the window + $w cmd pladv 0 + $w cmd plvpor 0.0 1.0 0.0 1.0 + $w cmd plwind 0.0 1.0 0.0 1.0 + $w cmd plcol0 0 + $w cmd plbox "" 1.0 0 "" 1.0 0 + + # Draw the boxes + for {set i 0} {$i < 9} {incr i} { + set icol [expr {$i%3 + 1}] + + # Get a color, change its transparency and + # set it as the current color. + $w cmd plgcol0a $icol r g b a + $w cmd plscol0a $icol $r $g $b [expr {1.0 - double($i)/9.0}] + $w cmd plcol0 $icol + + # Draw the rectangle + $w cmd plfill 4 px py + + # Shift the rectangles coordinates + for {set j 0} {$j < 4} {incr j} { + px $j = [expr {[px $j] + 0.5/9.0}] + py $j = [expr {[py $j] + 0.5/9.0}] + } + } + + # + # 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 + $w cmd pladv 0 + $w cmd plvpor 0.1 0.9 0.1 0.9 + $w cmd 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 {set i 0} {$i < 5} {incr i} { + # Set box X position + px 0 = [expr {0.05 + 0.2 * $i}] + px 1 = [expr {[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. + set icol [expr {$i%3 + 1}] + $w cmd plgcol0a $icol r g b a + $w cmd plscol0a $icol $r $g $b 1.0 + $w cmd plcol0 $icol + for {set j 0} {$j < 5} {incr j} { + # Set box y position and draw the box. + py 0 = [expr {0.05 + 0.2 * $j}] + py 1 = [py 0] + py 2 = [expr {[py 0] + 0.1}] + py 3 = [py 2] + $w cmd plfill 4 px py + } + } + + # 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) + $w cmd plscmap1n 128 + $w cmd plscmap1la 1 2 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. + matrix z f 2 2 + z 0 0 = 0.0 + z 1 0 = 0.0 + z 0 1 = 1.0 + z 1 1 = 1.0 + + matrix clevel f 101 + + # Set the color levels array. These levels are also between 0.0 and 1.0 + for {set i 0} {$i<101} {incr i} { + clevel $i = [expr {0.01 * double($i)}] + } + + # 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. + $w cmd plshades z 0.0 1.0 0.0 1.0 clevel 0 -1 2 1 + +} + Property changes on: trunk/examples/tcl/x30.tcl ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/plplot_test/test_tcl.sh.in =================================================================== --- trunk/plplot_test/test_tcl.sh.in 2008-08-21 15:34:04 UTC (rev 8698) +++ trunk/plplot_test/test_tcl.sh.in 2008-08-21 21:31:31 UTC (rev 8699) @@ -75,7 +75,7 @@ # Skip 17th example because it is not implemented (and if it was, it # would be interactive only). # Other examples are not yet implemented. -for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 16 18 22 23 24 25 26 27 28 29; do +for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 16 18 22 23 24 25 26 27 28 29 30; do if [ "$verbose_test" ]; then echo "x${index}" fi This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2008-08-21 21:46:47
|
Revision: 8701 http://plplot.svn.sourceforge.net/plplot/?rev=8701&view=rev Author: andrewross Date: 2008-08-21 21:46:56 +0000 (Thu, 21 Aug 2008) Log Message: ----------- Add ocaml version of example 9. ANR for Hezekiah Carty. Modified Paths: -------------- trunk/examples/ocaml/CMakeLists.txt trunk/examples/ocaml/Makefile.examples.in trunk/plplot_test/test_ocaml.sh.in Added Paths: ----------- trunk/examples/ocaml/x09.ml Modified: trunk/examples/ocaml/CMakeLists.txt =================================================================== --- trunk/examples/ocaml/CMakeLists.txt 2008-08-21 21:40:21 UTC (rev 8700) +++ trunk/examples/ocaml/CMakeLists.txt 2008-08-21 21:46:56 UTC (rev 8701) @@ -29,6 +29,7 @@ "06" "07" "08" + "09" "10" "11" "12" Modified: trunk/examples/ocaml/Makefile.examples.in =================================================================== --- trunk/examples/ocaml/Makefile.examples.in 2008-08-21 21:40:21 UTC (rev 8700) +++ trunk/examples/ocaml/Makefile.examples.in 2008-08-21 21:46:56 UTC (rev 8701) @@ -36,6 +36,7 @@ x06$(EXEEXT) \ x07$(EXEEXT) \ x08$(EXEEXT) \ + x09$(EXEEXT) \ x10$(EXEEXT) \ x11$(EXEEXT) \ x12$(EXEEXT) \ Added: trunk/examples/ocaml/x09.ml =================================================================== --- trunk/examples/ocaml/x09.ml (rev 0) +++ trunk/examples/ocaml/x09.ml 2008-08-21 21:46:56 UTC (rev 8701) @@ -0,0 +1,348 @@ +(* $Id$ + + Contour plot demo. + + 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 Plplot + +let pi = atan 1.0 *. 4.0 + +let xpts = 35 (* Data points in x *) +let ypts = 46 (* Data points in y *) + +let xspa = 2.0 /. float_of_int (xpts - 1) +let yspa = 2.0 /. float_of_int (ypts - 1) + +(* polar plot data *) +let perimeterpts = 100 +let rpts = 40 +let thetapts = 40 + +(* potential plot data *) +let pperimeterpts = 100 +let prpts = 40 +let pthetapts = 64 +let pnlevel = 20 + +let clevel = [|-1.0; -0.8; -0.6; -0.4; -0.2; 0.0; 0.2; 0.4; 0.6; 0.8; 1.0|] + +(* Transformation function *) +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) + +(* Polar contour plot example. *) +let polar () = + plenv (-1.0) 1.0 (-1.0) 1.0 0 (-2); + plcol0 1; + + (* Perimeter *) + let t = + Array.init perimeterpts ( + fun i -> + (2.0 *. pi /. float_of_int (perimeterpts - 1)) *. float_of_int i + ) + in + let px = Array.map cos t in + let py = Array.map sin t in + plline px py; + + (* Create data to be contoured. *) + let xg = Array.make_matrix rpts thetapts 0.0 in + let yg = Array.make_matrix rpts thetapts 0.0 in + let z = Array.make_matrix rpts thetapts 0.0 in + + for i = 0 to rpts - 1 do + let r = float_of_int i /. float_of_int (rpts - 1) in + for j = 0 to thetapts - 1 do + let theta = + (2.0 *. pi /. float_of_int (thetapts - 1)) *. float_of_int j + in + xg.(i).(j) <- r *. cos theta; + yg.(i).(j) <- r *. sin theta; + z.(i).(j) <- r; + done + done; + + let lev = Array.init 10 (fun i -> 0.05 +. 0.10 *. float_of_int i) in + + 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); + plcont z 1 rpts 1 thetapts lev; + unset_pltr (); + plcol0 1; + pllab "" "" "Polar Contour Plot"; + () + +(*--------------------------------------------------------------------------*\ + * f2mnmx + * + * Returns min & max of input 2d array. +\*--------------------------------------------------------------------------*) +let f2mnmx f = + let fmax = ref f.(0).(0) in + let fmin = ref f.(0).(0) in + for i = 0 to Array.length f - 1 do + for j = 0 to Array.length f.(i) - 1 do + fmax := max !fmax f.(i).(j); + fmin := min !fmin f.(i).(j); + done + done; + !fmin, !fmax + +(* Shielded potential contour plot example. *) +let potential () = + (* Create data to be contoured. *) + let xg = Array.make_matrix prpts pthetapts 0.0 in + let yg = Array.make_matrix prpts pthetapts 0.0 in + let z = Array.make_matrix prpts pthetapts 0.0 in + + let r = ref 0.0 in + + for i = 0 to prpts - 1 do + r := 0.5 +. float_of_int i; + for j = 0 to pthetapts - 1 do + let theta = + (2.0 *. pi /. float_of_int (pthetapts - 1)) *. (0.5 +. float_of_int j) + in + xg.(i).(j) <- !r *. cos theta; + yg.(i).(j) <- !r *. sin theta; + done + done; + + let rmax = !r in + let xmin, xmax = f2mnmx xg in + let ymin, ymax = f2mnmx yg in + let x0 = (xmin +. xmax) /. 2.0 in + let y0 = (ymin +. ymax) /. 2.0 in + + (* Expanded limits *) + let peps = 0.05 in + let xpmin = xmin -. abs_float xmin *. peps in + let xpmax = xmax +. abs_float xmax *. peps in + let ypmin = ymin -. abs_float ymin *. peps in + let ypmax = ymax +. abs_float ymax *. peps in + + (* Potential inside a conducting cylinder (or sphere) by method of images. + Charge 1 is placed at (d1, d1), with image charge at (d2, d2). + Charge 2 is placed at (d1, -d1), with image charge at (d2, -d2). + Also put in smoothing term at small distances. *) + let eps = 2.0 in + + let q1 = 1.0 in + let d1 = rmax /. 4.0 in + + let q1i = ~-. q1 *. rmax /. d1 in + let d1i = rmax**2.0 /. d1 in + + let q2 = -1.0 in + let d2 = rmax /. 4.0 in + + let q2i = ~-. q2 *. rmax /. d2 in + let d2i = rmax**2.0 /. d2 in + + for i = 0 to prpts - 1 do + for j = 0 to pthetapts - 1 do + let div1 = + sqrt ((xg.(i).(j) -. d1)**2.0 +. (yg.(i).(j) -. d1)**2.0 +. eps**2.0) + in + let div1i = + sqrt ((xg.(i).(j) -. d1i)**2.0 +. (yg.(i).(j) -. d1i)**2.0 +. eps**2.0) + in + let div2 = + sqrt ((xg.(i).(j) -. d2)**2.0 +. (yg.(i).(j) +. d2)**2.0 +. eps**2.0) + in + let div2i = + sqrt ((xg.(i).(j) -. d2i)**2.0 +. (yg.(i).(j) +. d2i)**2.0 +. eps**2.0) + in + z.(i).(j) <- q1 /. div1 +. q1i /. div1i +. q2 /. div2 +. q2i /. div2i; + done + done; + let zmin, zmax = f2mnmx z in + + (* Positive and negative contour levels. *) + let dz = (zmax -. zmin) /. float_of_int pnlevel in + let nlevelneg = ref 0 in + let nlevelpos = ref 0 in + let clevelneg = Array.make pnlevel 0.0 in + let clevelpos = Array.make pnlevel 0.0 in + for i = 0 to pnlevel - 1 do + let clevel = zmin +. (float_of_int i +. 0.5) *. dz in + if clevel <= 0.0 then ( + clevelneg.(!nlevelneg) <- clevel; + incr nlevelneg; + ) + else ( + clevelpos.(!nlevelpos) <- clevel; + incr nlevelpos; + ) + done; + (* Colors! *) + let ncollin = 11 in + let ncolbox = 1 in + let ncollab = 2 in + + (* Finally start plotting this page! *) + pladv 0; + plcol0 ncolbox; + + plvpas 0.1 0.9 0.1 0.9 1.0; + plwind xpmin xpmax ypmin ypmax; + plbox "" 0.0 0 "" 0.0 0; + + plcol0 ncollin; + set_pltr (fun x y -> pltr2 x y xg yg); + if !nlevelneg > 0 then ( + (* Negative contours *) + pllsty 2; + plcont z 1 prpts 1 pthetapts (Array.sub clevelneg 0 !nlevelneg); + ); + + if !nlevelpos > 0 then ( + (* Positive contours*) + pllsty 1; + plcont z 1 prpts 1 pthetapts (Array.sub clevelpos 0 !nlevelpos); + ); + unset_pltr (); + + (* Draw outer boundary *) + let px = Array.make pperimeterpts 0.0 in + let py = Array.make pperimeterpts 0.0 in + for i = 0 to pperimeterpts - 1 do + let t = (2.0 *. pi /. float_of_int (pperimeterpts - 1)) *. float_of_int i in + px.(i) <- x0 +. rmax *. cos t; + py.(i) <- y0 +. rmax *. sin t; + done; + + plcol0 ncolbox; + plline px py; + + plcol0 ncollab; + pllab "" "" "Shielded potential of charges in a conducting sphere"; + () + +(*--------------------------------------------------------------------------*\ + * Does several contour plots using different coordinate mappings. +\*--------------------------------------------------------------------------*) +let () = + let mark = [|1500|] in + let space = [|1500|] in + + (* Parse and process command line arguments *) + ignore (plparseopts Sys.argv [|PL_PARSE_FULL|]); + + (* Initialize plplot *) + plinit (); + + (* 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; + + (* Set up grids *) + let cgrid1_xg = Array.make xpts 0.0 in + let cgrid1_yg = Array.make ypts 0.0 in + + let cgrid2_xg = Array.make_matrix xpts ypts 0.0 in + let cgrid2_yg = Array.make_matrix xpts ypts 0.0 in + + for i = 0 to xpts - 1 do + for j = 0 to ypts - 1 do + let xx, yy = mypltr (float_of_int i) (float_of_int j) in + + let argx = xx *. pi /. 2.0 in + let argy = yy *. pi /. 2.0 in + let distort = 0.4 in + + cgrid1_xg.(i) <- xx +. distort *. cos argx; + cgrid1_yg.(j) <- yy -. distort *. cos argy; + + cgrid2_xg.(i).(j) <- xx +. distort *. cos argx *. cos argy; + cgrid2_yg.(i).(j) <- yy -. distort *. cos argx *. cos argy; + done + done; + + (* Plot using identity transform *) + 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; + plcont z 1 xpts 1 ypts clevel; + plstyl mark space; + plcol0 3; + plcont w 1 xpts 1 ypts clevel; + plstyl [||] [||]; + plcol0 1; + pllab "X Coordinate" "Y Coordinate" "Streamlines of flow"; + pl_setcontlabelparam 0.006 0.3 0.1 0; + + (* 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); + plcont z 1 xpts 1 ypts clevel; + + plstyl mark space; + plcol0 3; + plcont w 1 xpts 1 ypts clevel; + plstyl [||] [||]; + plcol0 1; + pllab "X Coordinate" "Y Coordinate" "Streamlines of flow"; + + (* 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); + plcont z 1 xpts 1 ypts clevel; + + plstyl mark space; + plcol0 3; + plcont w 1 xpts 1 ypts clevel; + plstyl [||] [||]; + plcol0 1; + pllab "X Coordinate" "Y Coordinate" "Streamlines of flow"; + + (* Unset the plotting coordinate transformation function *) + unset_pltr (); + + pl_setcontlabelparam 0.006 0.3 0.1 0; + polar (); + + pl_setcontlabelparam 0.006 0.3 0.1 0; + potential (); + + plend (); + () + Property changes on: trunk/examples/ocaml/x09.ml ___________________________________________________________________ Added: svn:eol-style + native Modified: trunk/plplot_test/test_ocaml.sh.in =================================================================== --- trunk/plplot_test/test_ocaml.sh.in 2008-08-21 21:40:21 UTC (rev 8700) +++ trunk/plplot_test/test_ocaml.sh.in 2008-08-21 21:46:56 UTC (rev 8701) @@ -23,7 +23,7 @@ # $options, and possibly $verbose_test defined. # Do the standard non-interactive examples. -for index in 01 02 03 04 05 06 07 08 10 11 12 13 15 19 24 25 26 27 30; do +for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 19 24 25 26 27 30; do if [ "$verbose_test" ]; then echo "x${index}ocaml" fi This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jb...@us...> - 2008-08-23 04:30:02
|
Revision: 8702 http://plplot.svn.sourceforge.net/plplot/?rev=8702&view=rev Author: jbauck Date: 2008-08-23 04:30:07 +0000 (Sat, 23 Aug 2008) Log Message: ----------- Add Ada examples x20a.adb and xthick20a.adb. This is the final Ada example of the existing 30. 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/x20a.adb.cmake trunk/examples/ada/xthick20a.adb.cmake Modified: trunk/bindings/ada/plplot.adb.cmake =================================================================== --- trunk/bindings/ada/plplot.adb.cmake 2008-08-21 21:46:56 UTC (rev 8701) +++ trunk/bindings/ada/plplot.adb.cmake 2008-08-23 04:30:07 UTC (rev 8702) @@ -2783,8 +2783,25 @@ -- plots a 2d image (or a matrix too large for plshade() ) + -- plimagefr + procedure Draw_Image_Color_Map_1 + (Data : Real_Matrix; + x_Min, x_Max : Long_Float; + y_Min, y_Max : Long_Float; + z_Min, z_Max : Long_Float; + Value_Min, Value_Max : Long_Float; + Transformation_Procedure_Pointer : Transformation_Procedure_Pointer_Type; + Transformation_Data_Pointer : PLpointer) is + begin + plimagefr(Matrix_To_Pointers(Data), Data'Length(1), Data'Length(2), + x_Min, x_Max, y_Min, y_Max, z_Min, z_Max, Value_Min, Value_Max, + Transformation_Procedure_Pointer, Transformation_Data_Pointer); + end Draw_Image_Color_Map_1; + + + -- plots a 2d image (or a matrix too large for plshade() ) -- plimage - procedure Draw_Image -- No documentation in Chapter 17 of Programmer's Reference Manual + procedure Draw_Image_Color_Map_1_Automatic (Data : Real_Matrix; x_Min, x_Max : Long_Float; y_Min, y_Max : Long_Float; @@ -2792,8 +2809,8 @@ Dxmin, Dxmax : Long_Float; Dymin, Dymax : Long_Float) is begin - plimage(Matrix_To_Pointers(Data), Data'Length(2), Data'Length(1), x_Min, x_Max, y_Min, y_Max, z_Min, z_Max, Dxmin, Dxmax, Dymin, Dymax); - end Draw_Image; + plimage(Matrix_To_Pointers(Data), Data'Length(1), Data'Length(2), x_Min, x_Max, y_Min, y_Max, z_Min, z_Max, Dxmin, Dxmax, Dymin, Dymax); + end Draw_Image_Color_Map_1_Automatic; -- Set up a new line style @@ -3091,8 +3108,15 @@ begin pltr2(x_Grid, y_Grid, x_World, y_World, Data_Pointer); end Plot_Transformation_2; + + -- Wait for graphics input event and translate to world coordinates. + procedure Get_Cursor(Graphics_Input : out PLGraphicsIn) is + begin + plGetCursor(Graphics_Input); + end Get_Cursor; + begin -- package body for PLplot -- NOTE: One would ordinarily call the initialization procedure at this point. Modified: trunk/bindings/ada/plplot.ads.cmake =================================================================== --- trunk/bindings/ada/plplot.ads.cmake 2008-08-21 21:46:56 UTC (rev 8701) +++ trunk/bindings/ada/plplot.ads.cmake 2008-08-23 04:30:07 UTC (rev 8702) @@ -44,8 +44,10 @@ -- good to remove "use PLplot_Thin" for clarity since it is used in only -- a few places. subtype PLPointer is PLplot_Thin.PLpointer; + subtype Unsigned_Int is Interfaces.C.unsigned; subtype Transformation_Data_Type is Plplot_Thin.Transformation_Data_Type; subtype Transformation_Data_Type_2 is Plplot_Thin.Transformation_Data_Type_2; + subtype Graphics_Input_Record_Type is Plplot_Thin.PLGraphicsIn; -- "Rename" the unicode type for characters. subtype Unicode is PLplot_Thin.PLUNICODE; @@ -1316,7 +1318,7 @@ -- intensity [0,1] (cmap 1 index) and position in HLS or RGB color space. -- plscmap1l procedure Set_Color_Map_1_Piecewise - (Color_Model : Color_Model_Type; -- HLS or RGB + (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 @@ -1329,7 +1331,7 @@ -- Will also linear interpolate alpha values. -- plscmap1la procedure Set_Color_Map_1_Piecewise_And_Alpha - (Color_Model : Color_Model_Type; -- HLS or RGB + (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 @@ -1629,8 +1631,20 @@ -- plots a 2d image (or a matrix too large for plshade() ) + -- plimagefr + procedure Draw_Image_Color_Map_1 + (Data : Real_Matrix; + x_Min, x_Max : Long_Float; + y_Min, y_Max : Long_Float; + z_Min, z_Max : Long_Float; + Value_Min, Value_Max : Long_Float; + Transformation_Procedure_Pointer : Transformation_Procedure_Pointer_Type; + Transformation_Data_Pointer : PLpointer); + + + -- plots a 2d image (or a matrix too large for plshade() ) -- plimage - procedure Draw_Image -- No documentation in Chapter 17 of Programmer's Reference Manual + procedure Draw_Image_Color_Map_1_Automatic (Data : Real_Matrix; x_Min, x_Max : Long_Float; y_Min, y_Max : Long_Float; @@ -1798,11 +1812,11 @@ -- I wonder if this is approaching "wrapper bloat" since these procedures -- get called a lot of times during the making of a contour plot. -- The way to eliminate one level of calling would be to move the bodies - -- of pltrx from plplot_thin.adb into plplot_traditional.adb and + -- of pltr? from plplot_thin.adb into plplot_traditional.adb and -- plplot.adb, then optionally eliminating the bodies from plplot_thin.adb -- on the idea that nobody is going to use them anyway. But even if the -- bodies were left in plplot_thin.adb, having them here would still - -- remove the extra call level. The argument for the currend arrangement is + -- remove the extra call level. The argument for the current arrangement is -- easier code maintainence. -- Identity transformation. @@ -1832,6 +1846,8 @@ Data_Pointer : PLpointer); pragma Convention(Convention => C, Entity => Plot_Transformation_2); - + -- Wait for graphics input event and translate to world coordinates. + procedure Get_Cursor(Graphics_Input : out Graphics_Input_Record_Type); + end PLplot; Modified: trunk/bindings/ada/plplot_thin.ads.cmake =================================================================== --- trunk/bindings/ada/plplot_thin.ads.cmake 2008-08-21 21:46:56 UTC (rev 8701) +++ trunk/bindings/ada/plplot_thin.ads.cmake 2008-08-23 04:30:07 UTC (rev 8702) @@ -59,7 +59,8 @@ PLtrue : constant Integer := 1; subtype PLBOOL is Integer range PLfalse..PLtrue; type PLUNICODE is mod 2**32; - type Unsigned_Int is mod 2**32; -- for e.g. plseed +-- subtype Unsigned_Int is mod 2**32; -- for e.g. plseed +-- subtype Unsigned_Int is Integer range 0 .. 2**31 - 1; -- for e.g. plseed fix this subtype PL_Integer_Array is Integer_Array_1D; subtype PL_Float_Array is Real_Vector; @@ -273,21 +274,22 @@ -- PLplot Graphics Input structure + PL_MAXKEY : constant Integer := 16; + + type PLGraphicsIn is + record + Event_Type : Integer; -- of event (CURRENTLY UNUSED) + state : unsigned; -- key or button mask + keysym : unsigned; -- key selected + button : unsigned; -- mouse button selected + subwindow : PLINT; -- subwindow (alias subpage, alias subplot) number + T_String : String(1 .. PL_MAXKEY); + pX, pY : integer; -- absolute device coordinates of pointer + dX, dY : PLFLT; -- relative device coordinates of pointer + wX, wY : PLFLT; -- world coordinates of pointer + end record; - -- fix this - --type PLGraphicsIn is - -- record - -- PLGraphicsIn_type : integer; -- of event (CURRENTLY UNUSED); Renamed to un-clobber Ada reserved word. - -- state : unsigned; -- key or button mask - -- keysym : unsigned; -- key selected - -- button : unsigned; -- mouse button selected - -- subwindow : PLINT; -- subwindow (alias subpage, alias subplot) number - -- char string[PL_MAXKEY]; -- translated string - -- pX, pY : integer; -- absolute device coordinates of pointer - -- dX, dY : PLFLT; -- relative device coordinates of pointer - -- wX, wY : PLFLT; -- world coordinates of pointer - -- end record; -- Structure for describing the plot window @@ -304,7 +306,7 @@ type PLDisplay is record - x, y : unsigned; -- upper left hand corner + x, y : unsigned; -- upper left hand corner width, height : unsigned; -- window dimensions end record; @@ -1307,7 +1309,7 @@ -- Set seed for internal random number generator procedure - plseed(s : Unsigned_Int); + plseed(s : unsigned); pragma Import(C, plseed, "c_plseed"); @@ -1373,7 +1375,7 @@ procedure - plshades( z : Long_Float_Pointer_Array; nx : PLINT; ny : PLINT; defined : Mask_Function_Pointer_Type; + plshades(z : Long_Float_Pointer_Array; nx : PLINT; ny : PLINT; defined : Mask_Function_Pointer_Type; xmin : PLFLT; xmax : PLFLT; ymin : PLFLT; ymax : PLFLT; clevel : PL_Float_Array; nlevel : PLINT; fill_width : PLINT; cont_color : PLINT; cont_width : PLINT; @@ -1504,10 +1506,21 @@ pragma Import(C, plstripd, "c_plstripd"); + -- plots a 2d image (or a matrix too large for plshade() ) + + procedure + plimagefr(data : Long_Float_Pointer_Array; nx : PLINT; ny : PLINT; + xmin : PLFLT; xmax : PLFLT; ymin : PLFLT; ymax : PLFLT; zmin : PLFLT; zmax : PLFLT; + valuemin :PLFLT; valuemax : PLFLT; + pltr : Transformation_Procedure_Pointer_Type; + pltr_data : PLpointer); + pragma Import(C, plimagefr, "c_plimagefr"); + + -- plots a 2d image (or a matrix too large for plshade() ) procedure - plimage( data : Long_Float_Pointer_Array; nx : PLINT; ny : PLINT; + plimage(data : Long_Float_Pointer_Array; nx : PLINT; ny : PLINT; xmin : PLFLT; xmax : PLFLT; ymin : PLFLT; ymax : PLFLT; zmin : PLFLT; zmax : PLFLT; Dxmin : PLFLT; Dxmax : PLFLT; Dymin : PLFLT; Dymax : PLFLT); pragma Import(C, plimage, "c_plimage"); @@ -1694,7 +1707,7 @@ -- 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 surrounding this idea - -- also allows for easy user- defined plot transformation subprograms to be + -- also allows for easy user-defined plot transformation subprograms to be -- written. -- Identity transformation. Re-write of pltr0 in plcont.c in Ada. @@ -1721,5 +1734,10 @@ tx, ty : out PLFLT; pltr_data : PLplot_thin.PLpointer); pragma Convention (Convention => C, Entity => pltr2); + + + -- Wait for graphics input event and translate to world coordinates. + procedure plGetCursor(gin : out PLGraphicsIn); + pragma Import (C, plGetCursor, "plGetCursor"); end PLplot_Thin; Modified: trunk/bindings/ada/plplot_traditional.adb.cmake =================================================================== --- trunk/bindings/ada/plplot_traditional.adb.cmake 2008-08-21 21:46:56 UTC (rev 8701) +++ trunk/bindings/ada/plplot_traditional.adb.cmake 2008-08-23 04:30:07 UTC (rev 8702) @@ -2648,7 +2648,23 @@ -- plots a 2d image (or a matrix too large for plshade() ) - procedure plimage -- No documentation in Chapter 17 of Programmer's Reference Manual + procedure plimagefr + (Data : Real_Matrix; + x_Min, x_Max : Long_Float; + y_Min, y_Max : Long_Float; + z_Min, z_Max : Long_Float; + Value_Min, Value_Max : Long_Float; + Transformation_Procedure_Pointer : Transformation_Procedure_Pointer_Type; + Transformation_Data_Pointer : PLpointer) is + begin + PLplot_Thin.plimagefr(Matrix_To_Pointers(Data), Data'Length(1), Data'Length(2), + x_Min, x_Max, y_Min, y_Max, z_Min, z_Max, Value_Min, Value_Max, + Transformation_Procedure_Pointer, Transformation_Data_Pointer); + end plimagefr; + + + -- plots a 2d image (or a matrix too large for plshade() ) + procedure plimage (Data : Real_Matrix; x_Min, x_Max : Long_Float; y_Min, y_Max : Long_Float; @@ -2656,7 +2672,7 @@ Dxmin, Dxmax : Long_Float; Dymin, Dymax : Long_Float) is begin - PLplot_Thin.plimage(Matrix_To_Pointers(Data), Data'Length(2), Data'Length(1), x_Min, x_Max, y_Min, y_Max, z_Min, z_Max, Dxmin, Dxmax, Dymin, Dymax); + PLplot_Thin.plimage(Matrix_To_Pointers(Data), Data'Length(1), Data'Length(2), x_Min, x_Max, y_Min, y_Max, z_Min, z_Max, Dxmin, Dxmax, Dymin, Dymax); end plimage; @@ -2931,7 +2947,13 @@ begin PLplot_Thin.pltr2(x_Grid, y_Grid, x_World, y_World, Data_Pointer); end pltr2; + + -- Wait for graphics input event and translate to world coordinates. + procedure plGetCursor(Graphics_Input : out PLGraphicsIn) is + begin + PLplot_Thin.plGetCursor(Graphics_Input); + end plGetCursor; begin -- package body for PLplot Modified: trunk/bindings/ada/plplot_traditional.ads.cmake =================================================================== --- trunk/bindings/ada/plplot_traditional.ads.cmake 2008-08-21 21:46:56 UTC (rev 8701) +++ trunk/bindings/ada/plplot_traditional.ads.cmake 2008-08-23 04:30:07 UTC (rev 8702) @@ -44,8 +44,10 @@ -- good to remove "use PLplot_Thin" for clarity since it is used in only -- a few places. subtype PLPointer is PLplot_Thin.PLpointer; + subtype Unsigned_Int is Interfaces.C.unsigned; subtype Transformation_Data_Type is Plplot_Thin.Transformation_Data_Type; subtype Transformation_Data_Type_2 is Plplot_Thin.Transformation_Data_Type_2; + subtype Graphics_Input_Record_Type is Plplot_Thin.PLGraphicsIn; -- "Rename" the unicode type for characters. subtype Unicode is PLplot_Thin.PLUNICODE; @@ -1218,7 +1220,7 @@ -- 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 - (Color_Model : Color_Model_Type; -- HLS or RGB + (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 @@ -1230,7 +1232,7 @@ -- 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 + (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 @@ -1494,7 +1496,18 @@ -- plots a 2d image (or a matrix too large for plshade() ) - procedure plimage -- No documentation in Chapter 17 of Programmer's Reference Manual + procedure plimagefr -- No documentation in Chapter 17 of Programmer's Reference Manual + (Data : Real_Matrix; + x_Min, x_Max : Long_Float; + y_Min, y_Max : Long_Float; + z_Min, z_Max : Long_Float; + Value_Min, Value_Max : Long_Float; + Transformation_Procedure_Pointer : Transformation_Procedure_Pointer_Type; + Transformation_Data_Pointer : PLpointer); + + + -- plots a 2d image (or a matrix too large for plshade() ) + procedure plimage (Data : Real_Matrix; x_Min, x_Max : Long_Float; y_Min, y_Max : Long_Float; @@ -1641,11 +1654,11 @@ -- I wonder if this is approaching "wrapper bloat" since these procedures -- get called a lot of times during the making of a contour plot. -- The way to eliminate one level of calling would be to move the bodies - -- of pltrx from plplot_thin.adb into plplot_traditional.adb and + -- of pltr? from plplot_thin.adb into plplot_traditional.adb and -- plplot.adb, then optionally eliminating the bodies from plplot_thin.adb -- on the idea that nobody is going to use them anyway. But even if the -- bodies were left in plplot_thin.adb, having them here would still - -- remove the extra call level. The argument for the currend arrangement is + -- remove the extra call level. The argument for the current arrangement is -- easier code maintainence. -- Identity transformation. @@ -1672,6 +1685,8 @@ Data_Pointer : PLpointer); pragma Convention(Convention => C, Entity => pltr2); - + -- Wait for graphics input event and translate to world coordinates. + procedure plGetCursor(Graphics_Input : out Graphics_Input_Record_Type); + end PLplot_Traditional; Modified: trunk/examples/ada/CMakeLists.txt =================================================================== --- trunk/examples/ada/CMakeLists.txt 2008-08-21 21:46:56 UTC (rev 8701) +++ trunk/examples/ada/CMakeLists.txt 2008-08-23 04:30:07 UTC (rev 8702) @@ -38,6 +38,7 @@ "17" "18" "19" +"20" "21" "22" "23" @@ -67,6 +68,7 @@ "thick17" "thick18" "thick19" +"thick20" "thick21" "thick22" "thick23" Modified: trunk/examples/ada/Makefile.examples.in =================================================================== --- trunk/examples/ada/Makefile.examples.in 2008-08-21 21:46:56 UTC (rev 8701) +++ trunk/examples/ada/Makefile.examples.in 2008-08-23 04:30:07 UTC (rev 8702) @@ -49,6 +49,7 @@ x17a$(EXEEXT) \ x18a$(EXEEXT) \ x19a$(EXEEXT) \ + x20a$(EXEEXT) \ x21a$(EXEEXT) \ x22a$(EXEEXT) \ x23a$(EXEEXT) \ @@ -78,6 +79,7 @@ xthick17a$(EXEEXT) \ xthick18a$(EXEEXT) \ xthick19a$(EXEEXT) \ + xthick20a$(EXEEXT) \ xthick21a$(EXEEXT) \ xthick22a$(EXEEXT) \ xthick23a$(EXEEXT) \ Added: trunk/examples/ada/x20a.adb.cmake =================================================================== --- trunk/examples/ada/x20a.adb.cmake (rev 0) +++ trunk/examples/ada/x20a.adb.cmake 2008-08-23 04:30:07 UTC (rev 8702) @@ -0,0 +1,455 @@ +-- $Id$ + +-- plimage demo + +-- 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.Text_IO, + Interfaces.C, + System, + Ada.Sequential_IO, + Ada.Numerics, + Ada.Numerics.Long_Elementary_Functions, + PLplot_Traditional, + PLplot_Auxiliary; +use + Ada.Text_IO, + Interfaces.C, + 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 x20a is + + XDIM : constant Integer := 260; + YDIM : constant Integer := 220; + PLK_Return : constant unsigned := 16#0D#; + dbg : Integer := 0; + nosombrero : Integer := 0; + nointeractive : Integer := 0; + x : Real_Vector(0 .. XDIM - 1); + y : Real_Vector(0 .. YDIM - 1); + z, r : Real_Matrix(0 .. XDIM - 1, 0 .. YDIM - 1); + xi, yi, xe, ye : Long_Float; + width, height, num_col : Integer; + img_f : Real_Matrix(0 .. 398, 0 .. 485); -- Lena is width 399, height 486. + img_min, img_max : Long_Float; + Get_Clip_Return : Integer; + type stretch_data is + record + xmin, xmax, ymin, ymax : Long_Float; + stretch : Long_Float; + end record; + stretch : stretch_data; + xx, yy : Long_Float; + f_name : String(1 .. 200); + f_name_length : Integer; + Save_Sombrero : Boolean := False; + + -- Read image from file in binary ppm format. + procedure read_img + (fname : String; img_f : out Real_Matrix; + width, height, num_col : out Integer) + is + type Byte is mod 2 ** 8; + A_Byte : Byte; + package Lena_IO is new Ada.Sequential_IO(Byte); + use Lena_IO; + Input_File : Lena_IO.File_Type; + begin + -- Naive grayscale binary ppm reading. If you know how to, improve it. + -- Mine is naiver than yours. + -- lena.pgm has 133 bytes of header followed by 399 * 486 bytes of 8-bit pixels. + Lena_IO.Open(Input_File, In_File, fname); + + for i in 1 .. 133 loop + Lena_IO.Read(Input_File, A_Byte); + end loop; + + width := 399; -- columns + height := 486; -- rows + num_col := 255; -- number of colors + + for j in img_f'range(2) loop + for i in img_f'range(1) loop + Lena_IO.Read(Input_File, A_Byte); + img_f(i, height - j - 1) := Long_Float(A_Byte); -- Flip image up-down. + end loop; + end loop; + end read_img; + + + -- Save plot. + procedure save_plot(fname : String) is + cur_strm, new_strm : Integer; + begin + plgstrm(cur_strm); -- Get current stream. + plmkstrm(new_strm); -- Create a new one. + plsdev("psc"); -- New device type. Use a known existing driver. + plsfnam(fname); -- Set the file name. + plcpstrm(cur_strm, False); -- Copy old stream parameters to new stream. + plreplot; -- Do the save. + plend1; -- Close new device... + plsstrm(cur_strm); -- ...and return to previous one. + end save_plot; + + + -- Get selection square interactively. + procedure get_clip(xi, xe, yi, ye : in out Long_Float; Return_This : out Integer) is + gin : Graphics_Input_Record_Type; + xxi : Long_Float := xi; + yyi : Long_Float := yi; + xxe : Long_Float := xe; + yye : Long_Float := ye; + t : Long_Float; + start : Integer := 0; + st : Boolean := False; + sx, sy : Real_Vector(0 .. 4); + begin + plxormod(True, st); -- Enter xor mode to draw a selection rectangle. + + if st then -- Driver has xormod capability. Continue. + loop + plxormod(False, st); + plGetCursor(gin); + plxormod(True, st); + + if gin.button = 1 then + xxi := gin.wX; + yyi := gin.wY; + if start /= 0 then + plline(sx, sy); -- Clear previous rectangle. + end if; + + start := 0; + + sx(0) := xxi; + sy(0) := yyi; + sx(4) := xxi; + sy(4) := yyi; + end if; + + if (gin.state and Unsigned(16#100#)) /= 0 then + xxe := gin.wX; + yye := gin.wY; + + if start /= 0 then + plline(sx, sy); -- Clear previous rectangle. + end if; + + start := 1; + + sx(2) := xxe; + sy(2) := yye; + sx(1) := xxe; + sy(1) := yyi; + sx(3) := xxi; + sy(3) := yye; + plline(sx, sy); -- Draw new rectangle. + end if; + + if gin.button = 3 or gin.keysym = PLK_Return or + gin.keysym = unsigned(Character'pos('Q')) then + if start /= 0 then + plline(sx, sy); -- Clear previous rectangle. + end if; + exit; + end if; + end loop; + + plxormod(False, st); -- Leave xor mod. + + if xxe < xxi then + t := xxi; + xxi := xxe; + xxe := t; + end if; + + if yyi < yye then + t :=yyi; + yyi := yye; + yye := t; + end if; + + xe := xxe; + xi := xxi; + ye := yye; + yi := yyi; + + if gin.keysym = unsigned(Character'pos('Q')) then + Return_This := 1; + else + Return_This := 0; + end if; + else -- Driver has no xormod capability; just do nothing. + Return_This := 0; + end if; + end get_clip; + + + -- Set gray colormap. + procedure gray_cmap(num_col : Integer) is + r, g, b, pos : Real_Vector(0 .. 1); + A_Boolean : Boolean_Array_1D(1 .. 1); + begin + r(0) := 0.0; + g(0) := 0.0; + b(0) := 0.0; + + r(1) := 1.0; + g(1) := 1.0; + b(1) := 1.0; + + pos(0) := 0.0; + pos(1) := 1.0; + + plscmap1n(num_col); + A_Boolean(1) := False; + plscmap1l(RGB, pos, r, g, b, A_Boolean); + end gray_cmap; + + + procedure mypltr + (x, y : Long_Float; + tx, ty : out Long_Float; + s : stretch_data) + is + x0, y0, dy : Long_Float; + begin + x0 := (s.xmin + s.xmax) * 0.5; + y0 := (s.ymin + s.ymax) * 0.5; + dy := (s.ymax - s.ymin) * 0.5; + tx := x0 + (x0 - x) * (1.0 - s.stretch * cos((y - y0) / dy * pi * 0.5)); + ty := y; + end mypltr; + +begin + -- Bugs in plimage(): + -- -at high magnifications, the left and right edge are ragged. Try + -- ./x20c -dev xwin -wplt 0.3,0.3,0.6,0.6 -ori 0.5. + + -- Bugs in x20c.c: + -- -if the window is resized after a selection is made on "lena", when + -- making a new selection the old one will re-appear. + + + -- Parse and process command line arguments + plparseopts(PL_PARSE_FULL); + + -- Initialize plplot + plinit; + + -- View image border pixels. + if dbg /= 0 then + plenv(1.0, Long_Float(XDIM), 1.0, Long_Float(YDIM), 1, 1); -- no plot box + + -- Build a one pixel square border, for diagnostics. + for i in z'range(1) loop + z(i, YDIM - 1) := 1.0; -- right + end loop; + + for i in z'range(1) loop + z(i, 0) := 1.0; -- left + end loop; + + for i in z'range(2) loop + z(0, i) := 1.0; -- top + end loop; + + for i in z'range(2) loop + z(XDIM - 1, i) := 1.0; -- botton + end loop; + + pllab("...around a blue square."," ","A red border should appear..."); + + plimage(z, + 1.0, Long_Float(XDIM), 1.0, Long_Float(YDIM), 0.0, 0.0, + 1.0, Long_Float(XDIM), 1.0, Long_Float(YDIM)); + + pladv(0); + end if; + + -- sombrero-like demo + if nosombrero = 0 then + plcol0(2); -- Draw a yellow plot box, useful for diagnostics! :( + plenv(0.0, 2.0 * pi, 0.0, 3.0 * pi, 1, -1); + + for i in x'range loop + x(i) := Long_Float(i) * 2.0 * pi / Long_Float(XDIM - 1); + end loop; + + for i in y'range loop + y(i) := Long_Float(i) * 3.0 * pi / Long_Float(YDIM - 1); + end loop; + + for i in z'range(1) loop + for j in z'range(2) loop + r(i, j) := sqrt(x(i) * x(i) + y(j) * y(j)) + 1.0e-3; + z(i, j) := sin(r(i, j)) / (r(i, j)); + end loop; + end loop; + + pllab("No, an amplitude clipped ""sombrero""", "", "Saturn?"); + plptex(2.0, 2.0, 3.0, 4.0, 0.0, "Transparent image"); + plimage(z, 0.0, 2.0 * pi, 0.0, 3.0 * pi, 0.05, 1.0, + 0.0, 2.0 * pi, 0.0, 3.0 * pi); + + -- Save the plot. + if Save_Sombrero then + Put("Enter a path and name to save the Postscript file or RETURN to not save: "); + Get_Line(f_name, f_name_length); + if f_name'Length /= 0 then + save_plot(f_name(1 .. f_name_length)); + end if; + end if; + + pladv(0); + end if; + + -- Read the Lena image. + -- Note we try two different locations to cover the case where this + -- examples is being run from the test_c.sh script. + begin + read_img("./lena.pgm", img_f, width, height, num_col); + exception + when NAME_ERROR => + null; + begin + read_img("../lena.pgm", img_f, width, height, num_col); + exception + when NAME_ERROR => + Put_Line("Failed to open lena.pgm. Aborting."); + plend; + return; + end; -- second exception block + end; -- first exception block + + -- Set gray colormap. + gray_cmap(num_col); + + -- Display Lena. + plenv(1.0, Long_Float(width), 1.0, Long_Float(height), 1, -1); + + if nointeractive = 0 then + pllab("Set and drag Button 1 to (re)set selection, Button 2 to finish."," ","Lena..."); + else + pllab(""," ","Lena..."); + end if; + + plimage(img_f, 1.0, Long_Float(width), 1.0, Long_Float(height), 0.0, 0.0, 1.0, + Long_Float(width), 1.0, Long_Float(height)); + + -- Selection/expansion demo + if nointeractive = 0 then + xi := 200.0; + xe := 330.0; + yi := 280.0; + ye := 220.0; + + get_clip(xi, xe, yi, ye, Get_Clip_Return); -- get selection rectangle + if Get_Clip_Return /= 0 then + plend; + end if; + + -- I'm unable to continue, clearing the plot and advancing to the next + -- one, without hiting the enter key, or pressing the button... help! + + -- Forcing the xwin driver to leave locate mode and destroying the + -- xhairs (in GetCursorCmd()) solves some problems, but I still have + -- to press the enter key or press Button-2 to go to next plot, even + -- if a pladv() is not present! Using plbop() solves the problem, but + -- it shouldn't be needed! + + -- plbop(); + + -- plspause(0), pladv(0), plspause(1), also works, + -- but the above question remains. + -- With this approach, the previous pause state is lost, + -- as there is no API call to get its current state. + + plspause(False); + pladv(0); + + -- Display selection only. + plimage(img_f, 1.0, Long_Float(width), 1.0, Long_Float(height), 0.0, 0.0, xi, xe, ye, yi); + + plspause(True); + pladv(0); + + -- Zoom in selection. + plenv(xi, xe, ye, yi, 1, -1); + plimage(img_f, 1.0, Long_Float(width), 1.0, Long_Float(height), 0.0, 0.0, xi, xe, ye, yi); + pladv(0); + end if; + + -- Base the dynamic range on the image contents. + img_min := Matrix_Min(img_f); + img_max := Matrix_Max(img_f); + + -- Draw a saturated version of the original image. Use only the middle 50% + -- of the image's full dynamic range. + plcol0(2); + plenv(0.0, Long_Float(width), 0.0, Long_Float(height), 1, -1); + pllab("", "", "Reduced dynamic range image example"); + plimagefr(img_f, 0.0, Long_Float(width), 0.0, Long_Float(height), 0.0, 0.0, + img_min + img_max * 0.25, img_max - img_max * 0.25, Null, System.Null_Address); + + -- Draw a distorted version of the original image, showing its full dynamic range. + plenv(0.0, Long_Float(width), 0.0, Long_Float(height), 1, -1); + pllab("", "", "Distorted image example"); + + stretch.xmin := 0.0; + stretch.xmax := Long_Float(width); + stretch.ymin := 0.0; + stretch.ymax := Long_Float(height); + stretch.stretch := 0.5; + + -- In C / C++ the following would work, with plimagefr directly calling + -- mypltr. For compatibilty with other language bindings the same effect + -- can be achieved by generating the transformed grid first and then + -- using pltr2. + -- plimagefr(img_f, width, height, 0., width, 0., height, 0., 0., img_min, img_max, mypltr, (PLPointer) &stretch); + + declare -- Declare block is based on runtime-determined values of width, height. + cgrid2 : aliased Transformation_Data_Type_2 + (x_Last => width, + y_Last => height); + begin + for i in 0 .. width loop + for j in 0 .. height loop + mypltr(Long_Float(i), Long_Float(j), xx, yy, stretch); + cgrid2.xg(i, j) := xx; + cgrid2.yg(i, j) := yy; + end loop; + end loop; + + plimagefr(img_f, 0.0, Long_Float(width), 0.0, Long_Float(height), 0.0, 0.0, img_min, img_max, + pltr2'access, cgrid2'Address); + pladv(0); + end; + plend; +end x20a; Property changes on: trunk/examples/ada/x20a.adb.cmake ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/examples/ada/xthick20a.adb.cmake =================================================================== --- trunk/examples/ada/xthick20a.adb.cmake (rev 0) +++ trunk/examples/ada/xthick20a.adb.cmake 2008-08-23 04:30:07 UTC (rev 8702) @@ -0,0 +1,455 @@ +-- $Id$ + +-- Draw_Image_Color_Map_1_Automatic demo + +-- 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.Text_IO, + Interfaces.C, + System, + Ada.Sequential_IO, + Ada.Numerics, + Ada.Numerics.Long_Elementary_Functions, + PLplot, + PLplot_Auxiliary; +use + Ada.Text_IO, + Interfaces.C, + 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 xthick20a is + + XDIM : constant Integer := 260; + YDIM : constant Integer := 220; + PLK_Return : constant unsigned := 16#0D#; + dbg : Integer := 0; + nosombrero : Integer := 0; + nointeractive : Integer := 0; + x : Real_Vector(0 .. XDIM - 1); + y : Real_Vector(0 .. YDIM - 1); + z, r : Real_Matrix(0 .. XDIM - 1, 0 .. YDIM - 1); + xi, yi, xe, ye : Long_Float; + width, height, num_col : Integer; + img_f : Real_Matrix(0 .. 398, 0 .. 485); -- Lena is width 399, height 486. + img_min, img_max : Long_Float; + Get_Clip_Return : Integer; + type stretch_data is + record + xmin, xmax, ymin, ymax : Long_Float; + stretch : Long_Float; + end record; + stretch : stretch_data; + xx, yy : Long_Float; + f_name : String(1 .. 200); + f_name_length : Integer; + Save_Sombrero : Boolean := False; + + -- Read image from file in binary ppm format. + procedure read_img + (fname : String; img_f : out Real_Matrix; + width, height, num_col : out Integer) + is + type Byte is mod 2 ** 8; + A_Byte : Byte; + package Lena_IO is new Ada.Sequential_IO(Byte); + use Lena_IO; + Input_File : Lena_IO.File_Type; + begin + -- Naive grayscale binary ppm reading. If you know how to, improve it. + -- Mine is naiver than yours. + -- lena.pgm has 133 bytes of header followed by 399 * 486 bytes of 8-bit pixels. + Lena_IO.Open(Input_File, In_File, fname); + + for i in 1 .. 133 loop + Lena_IO.Read(Input_File, A_Byte); + end loop; + + width := 399; -- columns + height := 486; -- rows + num_col := 255; -- number of colors + + for j in img_f'range(2) loop + for i in img_f'range(1) loop + Lena_IO.Read(Input_File, A_Byte); + img_f(i, height - j - 1) := Long_Float(A_Byte); -- Flip image up-down. + end loop; + end loop; + end read_img; + + + -- Save plot. + procedure save_plot(fname : String) is + cur_strm, new_strm : Integer; + begin + Get_Stream_Number(cur_strm); -- Get current stream. + Make_Stream(new_strm); -- Create a new one. + Set_Device_Name("psc"); -- New device type. Use a known existing driver. + Set_Output_File_Name(fname); -- Set the file name. + Copy_State_Parameters(cur_strm, False); -- Copy old stream parameters to new stream. + Replot; -- Do the save. + End_PLplot_Current_Stream; -- Close new device... + Set_Stream_Number(cur_strm); -- ...and return to previous one. + end save_plot; + + + -- Get selection square interactively. + procedure get_clip(xi, xe, yi, ye : in out Long_Float; Return_This : out Integer) is + gin : Graphics_Input_Record_Type; + xxi : Long_Float := xi; + yyi : Long_Float := yi; + xxe : Long_Float := xe; + yye : Long_Float := ye; + t : Long_Float; + start : Integer := 0; + st : Boolean := False; + sx, sy : Real_Vector(0 .. 4); + begin + Set_XOR_Mode(True, st); -- Enter xor mode to draw a selection rectangle. + + if st then -- Driver has xormod capability. Continue. + loop + Set_XOR_Mode(False, st); + Get_Cursor(gin); + Set_XOR_Mode(True, st); + + if gin.button = 1 then + xxi := gin.wX; + yyi := gin.wY; + if start /= 0 then + Draw_Curve(sx, sy); -- Clear previous rectangle. + end if; + + start := 0; + + sx(0) := xxi; + sy(0) := yyi; + sx(4) := xxi; + sy(4) := yyi; + end if; + + if (gin.state and Unsigned(16#100#)) /= 0 then + xxe := gin.wX; + yye := gin.wY; + + if start /= 0 then + Draw_Curve(sx, sy); -- Clear previous rectangle. + end if; + + start := 1; + + sx(2) := xxe; + sy(2) := yye; + sx(1) := xxe; + sy(1) := yyi; + sx(3) := xxi; + sy(3) := yye; + Draw_Curve(sx, sy); -- Draw new rectangle. + end if; + + if gin.button = 3 or gin.keysym = PLK_Return or + gin.keysym = unsigned(Character'pos('Q')) then + if start /= 0 then + Draw_Curve(sx, sy); -- Clear previous rectangle. + end if; + exit; + end if; + end loop; + + Set_XOR_Mode(False, st); -- Leave xor mod. + + if xxe < xxi then + t := xxi; + xxi := xxe; + xxe := t; + end if; + + if yyi < yye then + t :=yyi; + yyi := yye; + yye := t; + end if; + + xe := xxe; + xi := xxi; + ye := yye; + yi := yyi; + + if gin.keysym = unsigned(Character'pos('Q')) then + Return_This := 1; + else + Return_This := 0; + end if; + else -- Driver has no xormod capability; just do nothing. + Return_This := 0; + end if; + end get_clip; + + + -- Set gray colormap. + procedure gray_cmap(num_col : Integer) is + r, g, b, pos : Real_Vector(0 .. 1); + A_Boolean : Boolean_Array_1D(1 .. 1); + begin + r(0) := 0.0; + g(0) := 0.0; + b(0) := 0.0; + + r(1) := 1.0; + g(1) := 1.0; + b(1) := 1.0; + + pos(0) := 0.0; + pos(1) := 1.0; + + Set_Number_Of_Colors_In_Color_Map_1(num_col); + A_Boolean(1) := False; + Set_Color_Map_1_Piecewise(RGB, pos, r, g, b, A_Boolean); + end gray_cmap; + + + procedure mypltr + (x, y : Long_Float; + tx, ty : out Long_Float; + s : stretch_data) + is + x0, y0, dy : Long_Float; + begin + x0 := (s.xmin + s.xmax) * 0.5; + y0 := (s.ymin + s.ymax) * 0.5; + dy := (s.ymax - s.ymin) * 0.5; + tx := x0 + (x0 - x) * (1.0 - s.stretch * cos((y - y0) / dy * pi * 0.5)); + ty := y; + end mypltr; + +begin + -- Bugs in Draw_Image_Color_Map_1_Automatic(): + -- -at high magnifications, the left and right edge are ragged. Try + -- ./x20c -dev xwin -wplt 0.3,0.3,0.6,0.6 -ori 0.5. + + -- Bugs in x20c.c: + -- -if the window is resized after a selection is made on "lena", when + -- making a new selection the old one will re-appear. + + + -- Parse and process command line arguments + Parse_Command_Line_Arguments(Parse_Full); + + -- Initialize plplot + Initialize_PLplot; + + -- View image border pixels. + if dbg /= 0 then + Set_Environment(1.0, Long_Float(XDIM), 1.0, Long_Float(YDIM), 1, 1); -- no plot box + + -- Build a one pixel square border, for diagnostics. + for i in z'range(1) loop + z(i, YDIM - 1) := 1.0; -- right + end loop; + + for i in z'range(1) loop + z(i, 0) := 1.0; -- left + end loop; + + for i in z'range(2) loop + z(0, i) := 1.0; -- top + end loop; + + for i in z'range(2) loop + z(XDIM - 1, i) := 1.0; -- botton + end loop; + + Write_Labels("...around a blue square."," ","A red border should appear..."); + + Draw_Image_Color_Map_1_Automatic(z, + 1.0, Long_Float(XDIM), 1.0, Long_Float(YDIM), 0.0, 0.0, + 1.0, Long_Float(XDIM), 1.0, Long_Float(YDIM)); + + Advance_To_Subpage(Next_Subpage); + end if; + + -- sombrero-like demo + if nosombrero = 0 then + Set_Pen_Color(Yellow); -- Draw a yellow plot box, useful for diagnostics! :( + Set_Environment(0.0, 2.0 * pi, 0.0, 3.0 * pi, 1, -1); + + for i in x'range loop + x(i) := Long_Float(i) * 2.0 * pi / Long_Float(XDIM - 1); + end loop; + + for i in y'range loop + y(i) := Long_Float(i) * 3.0 * pi / Long_Float(YDIM - 1); + end loop; + + for i in z'range(1) loop + for j in z'range(2) loop + r(i, j) := sqrt(x(i) * x(i) + y(j) * y(j)) + 1.0e-3; + z(i, j) := sin(r(i, j)) / (r(i, j)); + end loop; + end loop; + + Write_Labels("No, an amplitude clipped ""sombrero""", "", "Saturn?"); + Write_Text_World(2.0, 2.0, 3.0, 4.0, 0.0, "Transparent image"); + Draw_Image_Color_Map_1_Automatic(z, 0.0, 2.0 * pi, 0.0, 3.0 * pi, 0.05, 1.0, + 0.0, 2.0 * pi, 0.0, 3.0 * pi); + + -- Save the plot. + if Save_Sombrero then + Put("Enter a path and name to save the Postscript file or RETURN to not save: "); + Get_Line(f_name, f_name_length); + if f_name'Length /= 0 then + save_plot(f_name(1 .. f_name_length)); + end if; + end if; + + Advance_To_Subpage(Next_Subpage); + end if; + + -- Read the Lena image. + -- Note we try two different locations to cover the case where this + -- examples is being run from the test_c.sh script. + begin + read_img("./lena.pgm", img_f, width, height, num_col); + exception + when NAME_ERROR => + null; + begin + read_img("../lena.pgm", img_f, width, height, num_col); + exception + when NAME_ERROR => + Put_Line("Failed to open lena.pgm. Aborting."); + End_PLplot; + return; + end; -- second exception block + end; -- first exception block + + -- Set gray colormap. + gray_cmap(num_col); + + -- Display Lena. + Set_Environment(1.0, Long_Float(width), 1.0, Long_Float(height), Justified, Box); + + if nointeractive = 0 then + Write_Labels("Set and drag Button 1 to (re)set selection, Button 2 to finish."," ","Lena..."); + else + Write_Labels(""," ","Lena..."); + end if; + + Draw_Image_Color_Map_1_Automatic(img_f, 1.0, Long_Float(width), 1.0, Long_Float(height), 0.0, 0.0, 1.0, + Long_Float(width), 1.0, Long_Float(height)); + + -- Selection/expansion demo + if nointeractive = 0 then + xi := 200.0; + xe := 330.0; + yi := 280.0; + ye := 220.0; + + get_clip(xi, xe, yi, ye, Get_Clip_Return); -- get selection rectangle + if Get_Clip_Return /= 0 then + End_PLplot; + end if; + + -- I'm unable to continue, clearing the plot and advancing to the next + -- one, without hiting the enter key, or pressing the button... help! + + -- Forcing the xwin driver to leave locate mode and destroying the + -- xhairs (in GetCursorCmd()) solves some problems, but I still have + -- to press the enter key or press Button-2 to go to next plot, even + -- if a Advance_To_Subpage() is not present! Using Begin_New_Page() solves the problem, but + -- it shouldn't be needed! + + -- Begin_New_Page(); + + -- Set_Pause(0), Advance_To_Subpage(Next_Subpage), Set_Pause(1), also works, + -- but the above question remains. + -- With this approach, the previous pause state is lost, + -- as there is no API call to get its current state. + + Set_Pause(False); + Advance_To_Subpage(Next_Subpage); + + -- Display selection only. + Draw_Image_Color_Map_1_Automatic(img_f, 1.0, Long_Float(width), 1.0, Long_Float(height), 0.0, 0.0, xi, xe, ye, yi); + + Set_Pause(True); + Advance_To_Subpage(Next_Subpage); + + -- Zoom in selection. + Set_Environment(xi, xe, ye, yi, Justified, Box); + Draw_Image_Color_Map_1_Automatic(img_f, 1.0, Long_Float(width), 1.0, Long_Float(height), 0.0, 0.0, xi, xe, ye, yi); + Advance_To_Subpage(Next_Subpage); + end if; + + -- Base the dynamic range on the image contents. + img_min := Matrix_Min(img_f); + img_max := Matrix_Max(img_f); + + -- Draw a saturated version of the original image. Use only the middle 50% + -- of the image's full dynamic range. + Set_Pen_Color(Yellow); + Set_Environment(0.0, Long_Float(width), 0.0, Long_Float(height), Justified, Box); + Write_Labels("", "", "Reduced dynamic range image example"); + Draw_Image_Color_Map_1(img_f, 0.0, Long_Float(width), 0.0, Long_Float(height), 0.0, 0.0, + img_min + img_max * 0.25, img_max - img_max * 0.25, Null, System.Null_Address); + + -- Draw a distorted version of the original image, showing its full dynamic range. + Set_Environment(0.0, Long_Float(width), 0.0, Long_Float(height), Justified, Box); + Write_Labels("", "", "Distorted image example"); + + stretch.xmin := 0.0; + stretch.xmax := Long_Float(width); + stretch.ymin := 0.0; + stretch.ymax := Long_Float(height); + stretch.stretch := 0.5; + + -- In C / C++ the following would work, with Draw_Image_Color_Map_1 directly calling + -- mypltr. For compatibilty with other language bindings the same effect + -- can be achieved by generating the transformed grid first and then + -- using Plot_Transformation_2. + -- Draw_Image_Color_Map_1(img_f, width, height, 0., width, 0., height, 0., 0., img_min, img_max, mypltr, (PLPointer) &stretch); + + declare -- Declare block is based on runtime-determined values of width, height. + cgrid2 : aliased Transformation_Data_Type_2 + (x_Last => width, + y_Last => height); + begin + for i in 0 .. width loop + for j in 0 .. height loop + mypltr(Long_Float(i), Long_Float(j), xx, yy, stretch); + cgrid2.xg(i, j) := xx; + cgrid2.yg(i, j) := yy; + end loop; + end loop; + + Draw_Image_Color_Map_1(img_f, 0.0, Long_Float(width), 0.0, Long_Float(height), 0.0, 0.0, img_min, img_max, + Plot_Transformation_2'access, cgrid2'Address); + Advance_To_Subpage(Next_Subpage); + end; + End_PLplot; +end xthick20a; Property changes on: trunk/examples/ada/xthick20a.adb.cmake ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/plplot_test/test_ada.sh.in =================================================================== --- trunk/plplot_test/test_ada.sh.in 2008-08-21 21:46:56 UTC (rev 8701) +++ trunk/plplot_test/test_ada.sh.in 2008-08-23 04:30:07 UTC (rev 8702) @@ -31,10 +31,10 @@ # Skip 17 because it is interactive. for index in \ 01 02 03 04 05 06 07 08 09 \ -10 11 12 13 15 16 18 19 \ +10 11 12 13 15 16 18 19 20 \ 21 22 23 24 25 26 27 28 29 30 \ thick01 thick02 thick03 thick04 thick05 thick06 thick07 thick08 thick09 \ -thick10 thick11 thick12 thick13 thick15 thick16 thick18 thick19 \ +thick10 thick11 thick12 thick13 thick15 thick16 thick18 thick19 thick20 \ thick21 thick22 thick23 thick24 thick25 thick26 thick27 thick28 thick29 thick30; do if [ "$verbose_test" ]; then echo "x${index}a" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2008-08-23 16:56:38
|
Revision: 8704 http://plplot.svn.sourceforge.net/plplot/?rev=8704&view=rev Author: andrewross Date: 2008-08-23 16:56:46 +0000 (Sat, 23 Aug 2008) Log Message: ----------- Fix ocaml bug in plpoly3. Add ocaml versions of examples 18 and 21. ANR for Hezekiah Carty. Modified Paths: -------------- trunk/bindings/ocaml/plplot.idl trunk/bindings/ocaml/plplot_h trunk/bindings/ocaml/plplot_h.inc trunk/bindings/ocaml/plplot_impl.c trunk/examples/ocaml/CMakeLists.txt trunk/examples/ocaml/Makefile.examples.in trunk/plplot_test/test_ocaml.sh.in Added Paths: ----------- trunk/examples/ocaml/x18.ml trunk/examples/ocaml/x21.ml Modified: trunk/bindings/ocaml/plplot.idl =================================================================== --- trunk/bindings/ocaml/plplot.idl 2008-08-23 05:09:22 UTC (rev 8703) +++ trunk/bindings/ocaml/plplot.idl 2008-08-23 16:56:46 UTC (rev 8704) @@ -65,6 +65,10 @@ PLFLT dlong, PLFLT dlat, PLFLT minlong, PLFLT maxlong, PLFLT minlat, PLFLT maxlat); +[mlname(plpoly3)] void ml_plpoly3( + PLINT n, [size_is(n)] PLFLT *x, [size_is(n)] PLFLT *y, [size_is(n)] PLFLT *z, + PLINT ndraw, [size_is(ndraw)] PLBOOL *draw, PLBOOL ifcc); + // The following are for the pltr functions [mlname(pltr0)] void ml_pltr0( PLFLT x, PLFLT y, [out] PLFLT *tx, [out] PLFLT *ty); Modified: trunk/bindings/ocaml/plplot_h =================================================================== --- trunk/bindings/ocaml/plplot_h 2008-08-23 05:09:22 UTC (rev 8703) +++ trunk/bindings/ocaml/plplot_h 2008-08-23 16:56:46 UTC (rev 8704) @@ -297,8 +297,10 @@ void c_plpoin3(PLINT n, PLFLT *x, PLFLT *y, PLFLT *z, PLINT code); +/* void c_plpoly3(PLINT n, PLFLT *x, PLFLT *y, PLFLT *z, PLBOOL *draw, PLBOOL ifcc); +*/ void c_plprec(PLINT setp, PLINT prec); Modified: trunk/bindings/ocaml/plplot_h.inc =================================================================== --- trunk/bindings/ocaml/plplot_h.inc 2008-08-23 05:09:22 UTC (rev 8703) +++ trunk/bindings/ocaml/plplot_h.inc 2008-08-23 16:56:46 UTC (rev 8704) @@ -69,7 +69,6 @@ [mlname(plpat)] void c_plpat ( int nlin, [in, size_is(nlin)] int * inc, [in, size_is(nlin)] int * del ); [mlname(plpoin)] void c_plpoin ( int n, [in, size_is(n)] double * x, [in, size_is(n)] double * y, int code ); [mlname(plpoin3)] void c_plpoin3 ( int n, [in, size_is(n)] double * x, [in, size_is(n)] double * y, [in, size_is(n)] double * z, int code ); -[mlname(plpoly3)] void c_plpoly3 ( int n, [in, size_is(n)] double * x, [in, size_is(n)] double * y, [in, size_is(n)] double * z, [in, size_is(n)] int * draw, int ifcc ); [mlname(plprec)] void c_plprec ( int setp, int prec ); [mlname(plpsty)] void c_plpsty ( int patt ); [mlname(plptex)] void c_plptex ( double x, double y, double dx, double dy, double just, [string] const char * text ); Modified: trunk/bindings/ocaml/plplot_impl.c =================================================================== --- trunk/bindings/ocaml/plplot_impl.c 2008-08-23 05:09:22 UTC (rev 8703) +++ trunk/bindings/ocaml/plplot_impl.c 2008-08-23 16:56:46 UTC (rev 8704) @@ -395,6 +395,16 @@ argv[5], argv[6]); } +/* + void +c_plpoly3(PLINT n, PLFLT *x, PLFLT *y, PLFLT *z, PLBOOL *draw, PLBOOL ifcc); +*/ +// plpoly3 is wrapped by hand because draw has a length of (n - 1) and camlidl +// does not have a way to indicate this automatically. +void ml_plpoly3(PLINT n, PLFLT *x, PLFLT *y, PLFLT *z, PLINT ndraw, PLBOOL *draw, PLBOOL ifcc) { + plpoly3(n, x, y, z, draw, ifcc); +} + /* Translate the integer version of the OCaml variant to the appropriate PLplot constant. */ int translate_parse_option(int parse_option) { Modified: trunk/examples/ocaml/CMakeLists.txt =================================================================== --- trunk/examples/ocaml/CMakeLists.txt 2008-08-23 05:09:22 UTC (rev 8703) +++ trunk/examples/ocaml/CMakeLists.txt 2008-08-23 16:56:46 UTC (rev 8704) @@ -35,7 +35,9 @@ "12" "13" "15" + "18" "19" + "21" "24" "25" "26" Modified: trunk/examples/ocaml/Makefile.examples.in =================================================================== --- trunk/examples/ocaml/Makefile.examples.in 2008-08-23 05:09:22 UTC (rev 8703) +++ trunk/examples/ocaml/Makefile.examples.in 2008-08-23 16:56:46 UTC (rev 8704) @@ -42,7 +42,9 @@ x12$(EXEEXT) \ x13$(EXEEXT) \ x15$(EXEEXT) \ + x18$(EXEEXT) \ x19$(EXEEXT) \ + x21$(EXEEXT) \ x24$(EXEEXT) \ x25$(EXEEXT) \ x26$(EXEEXT) \ Added: trunk/examples/ocaml/x18.ml =================================================================== --- trunk/examples/ocaml/x18.ml (rev 0) +++ trunk/examples/ocaml/x18.ml 2008-08-23 16:56:46 UTC (rev 8704) @@ -0,0 +1,135 @@ +(* $Id$ + + 3-d line and point plot demo. Adapted from x08c.c. +*) + +open Plplot +open Printf + +let opt = [|1; 0; 1; 0|] +let alt = [|20.0; 35.0; 50.0; 65.0|] +let az = [|30.0; 40.0; 50.0; 60.0|] + +let npts = 1000 + +let pi = atan 1.0 *. 4.0 + +let test_poly k = + let draw = [| [|1; 1; 1; 1|]; + [|1; 0; 1; 0|]; + [|0; 1; 0; 1|]; + [|1; 1; 0; 0|] |] in + + let two_pi = 2.0 *. pi in + + pladv 0; + plvpor 0.0 1.0 0.0 0.9; + plwind (-1.0) 1.0 (-0.9) 1.1; + plcol0 1; + plw3d 1.0 1.0 1.0 (-1.0) 1.0 (-1.0) 1.0 (-1.0) 1.0 alt.(k) az.(k); + plbox3 "bnstu" "x axis" 0.0 0 + "bnstu" "y axis" 0.0 0 + "bcdmnstuv" "z axis" 0.0 0; + + plcol0 2; + + let theta a = two_pi *. float_of_int a /. 20.0 in + let phi a = pi *. float_of_int a /. 20.1 in + + let x = Array.make 5 0.0 in + let y = Array.make 5 0.0 in + let z = Array.make 5 0.0 in + + for i = 0 to 19 do + for j = 0 to 19 do + x.(0) <- sin (phi j) *. cos (theta i); + y.(0) <- sin (phi j) *. sin (theta i); + z.(0) <- cos (phi j); + + x.(1) <- sin (phi (j + 1)) *. cos (theta i); + y.(1) <- sin (phi (j + 1)) *. sin (theta i); + z.(1) <- cos (phi (j + 1)); + + x.(2) <- sin (phi (j + 1)) *. cos (theta (i + 1)); + y.(2) <- sin (phi (j + 1)) *. sin (theta (i + 1)); + z.(2) <- cos (phi (j + 1)); + + x.(3) <- sin (phi j) *. cos (theta (i+1)); + y.(3) <- sin (phi j) *. sin (theta (i+1)); + z.(3) <- cos (phi j); + + x.(4) <- sin (phi j) *. cos (theta i); + y.(4) <- sin (phi j) *. sin (theta i); + z.(4) <- cos (phi j); + + plpoly3 x y z draw.(k) 1; + done + done; + + plcol0 3; + plmtex "t" 1.0 0.5 0.5 "unit radius sphere"; + () + +(*--------------------------------------------------------------------------*\ + * Does a series of 3-d plots for a given data set, with different + * viewing options in each plot. +\*--------------------------------------------------------------------------*) +let () = + (* Parse and process command line arguments *) + ignore (plparseopts Sys.argv [|PL_PARSE_FULL|]); + + (* Initialize plplot *) + plinit (); + + for k = 0 to 3 do + test_poly k + done; + + (* From the mind of a sick and twisted physicist... *) + let z = + Array.init npts ( + fun i -> + ~-.1.0 +. 2.0 *. float_of_int i /. float_of_int npts + ) + in + let x = + Array.mapi ( + fun i r -> + r *. cos (2.0 *. pi *. 6.0 *. float_of_int i /. float_of_int npts) + ) z + in + let y = + Array.mapi ( + fun i r -> + r *. sin (2.0 *. pi *. 6.0 *. float_of_int i /. float_of_int npts) + ) z + in + + for k = 0 to 3 do + pladv 0; + plvpor 0.0 1.0 0.0 0.9; + plwind (-1.0) 1.0 (-0.9) 1.1; + plcol0 1; + plw3d 1.0 1.0 1.0 (-1.0) 1.0 (-1.0) 1.0 (-1.0) 1.0 alt.(k) az.(k); + plbox3 "bnstu" "x axis" 0.0 0 + "bnstu" "y axis" 0.0 0 + "bcdmnstuv" "z axis" 0.0 0; + + plcol0 2; + + if opt.(k) <> 0 then + plline3 x y z + else + plpoin3 x y z 1; + + plcol0 3; + let title = + sprintf "#frPLplot Example 18 - Alt=%.0f, Az=%.0f" alt.(k) az.(k) + in + plmtex "t" 1.0 0.5 0.5 title; + done; + + (* Clean up *) + plend (); + () + Property changes on: trunk/examples/ocaml/x18.ml ___________________________________________________________________ Added: svn:eol-style + native Added: trunk/examples/ocaml/x21.ml =================================================================== --- trunk/examples/ocaml/x21.ml (rev 0) +++ trunk/examples/ocaml/x21.ml 2008-08-23 16:56:46 UTC (rev 8704) @@ -0,0 +1,240 @@ +(* $Id$ + Grid data demo + + Copyright (C) 2004 Joao Cardoso + 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 Plplot + +let pi = atan 1.0 *. 4.0 + +let is_nan x = + match classify_float x with + FP_nan -> true + | _ -> false + +(* Options data structure definition. *) + +let pts = 500 +let xp = 25 +let yp = 20 +let nl = 16 +let knn_order = 20 +let threshold = 1.001 +let wmin = -1e3 +let xm = -0.2 +let ym = -0.2 +let xM = 0.6 +let yM = 0.6 + + +let cmap1_init () = + let i = [|0.0; 1.0|] in + let h = [|240.0; 0.0|] in (* blue -> green -> yellow -> red *) + let l = [|0.6; 0.6|] in + let s = [|0.8; 0.8|] in + plscmap1n 256; + plscmap1l 0 i h l s None; + () + +let create_grid px py = + let xg = + Array.init px + (fun i -> xm +. (xM -. xm) *. float_of_int i /. (float_of_int px -. 1.0)) + in + let yg = + Array.init py + (fun i -> ym +. (yM -. ym) *. float_of_int i /. (float_of_int py -. 1.0)) + in + (xg, yg) + +let create_data pts = + let x = Array.make pts 0.0 in + let y = Array.make pts 0.0 in + let z = Array.make pts 0.0 in + for i = 0 to pts - 1 do + let xt = (xM -. xm) *. plrandd () in + let yt = (yM -. ym) *. plrandd () in + x.(i) <- xt +. xm; + y.(i) <- yt +. ym; + let r = sqrt (x.(i) *. x.(i) +. y.(i) *. y.(i)) in + z.(i) <- exp (~-.r *. r) *. cos (2.0 *. pi *. r); + done; + (x, y, z) + +let () = + (* In the C PLplot API, the interpolation method identifiers are just + names #define-d as integers. In the OCaml bindings, the names and their + related integer values are distinct. The array provides a mapping to + make conversion of this example from C easier. *) + let alg_array = + [|GRID_CSA; GRID_DTLI; GRID_NNI; GRID_NNIDW; GRID_NNLI; GRID_NNAIDW|] + in + let title = + [| + "Cubic Spline Approximation"; + "Delaunay Linear Interpolation"; + "Natural Neighbors Interpolation"; + "KNN Inv. Distance Weighted"; + "3NN Linear Interpolation"; + "4NN Around Inv. Dist. Weighted"; + |] + in + + let opt = [|0.0; 0.0; wmin; float_of_int knn_order; threshold; 0.0|] in + + ignore (plparseopts Sys.argv [|PL_PARSE_FULL|]); + + (* Initialize plplot *) + plinit (); + + (* The sampled data *) + let x, y, z = create_data pts in + let zmin = Array.fold_left min infinity z in + let zmax = Array.fold_left max neg_infinity z in + + (* Grid the data *) + let xg, yg = create_grid xp yp in + + plcol0 1; + plenv xm xM ym yM 2 0; + plcol0 15; + pllab "X" "Y" "The original data sampling"; + plcol0 2; + plpoin x y 5; + pladv 0; + + plssub 3 2; + + for k = 0 to 1 do + pladv 0; + for alg = 1 to 6 do + let named_alg = alg_array.(alg - 1) in + let zg = plgriddata x y z xg yg named_alg opt.(alg - 1) in + + (* - CSA can generate NaNs (only interpolates?!). + * - DTLI and NNI can generate NaNs for points outside the convex hull + * of the data points. + * - NNLI can generate NaNs if a sufficiently thick triangle is not found + * + * PLplot should be NaN/Inf aware, but changing it now is quite a job... + * so, instead of not plotting the NaN regions, a weighted average over + * the neighbors is done. + *) + if + named_alg = GRID_CSA || + named_alg = GRID_DTLI || + named_alg = GRID_NNLI || + named_alg = GRID_NNI + then ( + for i = 0 to xp - 1 do + for j = 0 to yp - 1 do + if is_nan zg.(i).(j) then ( (* average (IDW) over the 8 neighbors *) + zg.(i).(j) <- 0.0; + let dist = ref 0.0 in + + for ii = i - 1 to i + 1 do + if ii < xp then ( + for jj = j - 1 to j + 1 do + if jj < yp then ( + if ii >= 0 && jj >= 0 && not (is_nan zg.(ii).(jj)) then ( + let d = + if abs (ii - i) + abs (jj - j) = 1 then + 1.0 + else + 1.4142 + in + zg.(i).(j) <- zg.(i).(j) +. zg.(ii).(jj) /. (d *. d); + dist := !dist +. d; + ) + else + () + ) + done + ) + done; + if !dist <> 0.0 then + zg.(i).(j) <- zg.(i).(j) /. !dist + else + zg.(i).(j) <- zmin + ) + done + done + ); + + let lzM, lzm = plMinMax2dGrid zg in + + let lzm = min lzm zmin in + let lzM = max lzM zmax in + + (* Increase limits slightly to prevent spurious contours + due to rounding errors *) + let lzm = lzm -. 0.01 in + let lzM = lzM +. 0.01 in + + plcol0 1; + + pladv alg; + + if k = 0 then ( + let clev = + Array.init nl + ( + fun i -> + lzm +. (lzM -. lzm) /. float_of_int (nl - 1) *. float_of_int i + ) + in + plenv0 xm xM ym yM 2 0; + plcol0 15; + pllab "X" "Y" title.(alg - 1); + plshades zg xm xM ym yM clev 1 0 1 1; + plcol0 2; + ) + else ( + let clev = + Array.init nl + ( + fun i -> + lzm +. (lzM -. lzm) /. float_of_int (nl - 1) *. float_of_int i + ) + in + cmap1_init (); + plvpor 0.0 1.0 0.0 0.9; + plwind (-1.1) 0.75 (-0.65) 1.20; + (* For the comparison to be fair, all plots should have the + same z values, but to get the max/min of the data generated + by all algorithms would imply two passes. Keep it simple. *) + + plw3d 1.0 1.0 1.0 xm xM ym yM lzm lzM 30.0 (-40.0); + plbox3 "bntu" "X" 0.0 0 + "bntu" "Y" 0.0 0 + "bcdfntu" "Z" 0.5 0; + plcol0 15; + pllab "" "" title.(alg - 1); + (* TODO FIXME -- The proper PLplot constants should be used here... *) + plot3dc xg yg zg (3 lor 4 lor 8) clev; + ); + done + done; + + plend (); + () + Property changes on: trunk/examples/ocaml/x21.ml ___________________________________________________________________ Added: svn:eol-style + native Modified: trunk/plplot_test/test_ocaml.sh.in =================================================================== --- trunk/plplot_test/test_ocaml.sh.in 2008-08-23 05:09:22 UTC (rev 8703) +++ trunk/plplot_test/test_ocaml.sh.in 2008-08-23 16:56:46 UTC (rev 8704) @@ -23,7 +23,7 @@ # $options, and possibly $verbose_test defined. # Do the standard non-interactive examples. -for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 19 24 25 26 27 30; do +for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 18 19 21 24 25 26 27 30; do if [ "$verbose_test" ]; then echo "x${index}ocaml" fi This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2008-08-26 14:29:52
|
Revision: 8715 http://plplot.svn.sourceforge.net/plplot/?rev=8715&view=rev Author: smekal Date: 2008-08-26 14:30:01 +0000 (Tue, 26 Aug 2008) Log Message: ----------- Renamed HAVE_USLEEP to PL_HAVE_USLEEP in order to prevent warnings concerning the wxwidgets driver, since HAVE_USLEEP may already be defined in the wxwidgets headers. Modified Paths: -------------- trunk/cmake/modules/plplot.cmake trunk/config.h.cmake trunk/examples/c/x01c.c trunk/examples/c/x17c.c trunk/examples/c++/x01.cc trunk/examples/c++/x17.cc trunk/include/plConfig.h.cmake Modified: trunk/cmake/modules/plplot.cmake =================================================================== --- trunk/cmake/modules/plplot.cmake 2008-08-26 13:41:03 UTC (rev 8714) +++ trunk/cmake/modules/plplot.cmake 2008-08-26 14:30:01 UTC (rev 8715) @@ -183,7 +183,7 @@ include(CheckFunctionExists) check_function_exists(popen HAVE_POPEN) -check_function_exists(usleep HAVE_USLEEP) +check_function_exists(usleep PL_HAVE_USLEEP) check_function_exists(isinf HAVE_ISINF) check_function_exists(finite HAVE_FINITE) if(NOT HAVE_FINITE) Modified: trunk/config.h.cmake =================================================================== --- trunk/config.h.cmake 2008-08-26 13:41:03 UTC (rev 8714) +++ trunk/config.h.cmake 2008-08-26 14:30:01 UTC (rev 8715) @@ -159,7 +159,7 @@ #cmakedefine HAVE_UNISTD_H 1 /* Define if usleep is available */ -#cmakedefine HAVE_USLEEP +#cmakedefine PL_HAVE_USLEEP /* Define to 1 if you have the `vfork' function. */ #cmakedefine HAVE_VFORK 1 Modified: trunk/examples/c/x01c.c =================================================================== --- trunk/examples/c/x01c.c 2008-08-26 13:41:03 UTC (rev 8714) +++ trunk/examples/c/x01c.c 2008-08-26 14:30:01 UTC (rev 8715) @@ -259,7 +259,7 @@ /* it does not work in double buffering mode, however */ if (do_test && test_xor) { -#ifdef HAVE_USLEEP +#ifdef PL_HAVE_USLEEP plxormod(1, &st); /* enter xor mode */ if (st) { for (i=0; i<60; i++) { Modified: trunk/examples/c/x17c.c =================================================================== --- trunk/examples/c/x17c.c 2008-08-26 13:41:03 UTC (rev 8714) +++ trunk/examples/c/x17c.c 2008-08-26 14:30:01 UTC (rev 8715) @@ -123,7 +123,7 @@ dt = 0.1; for (n = 0; n < nsteps; n++) { -#ifdef HAVE_USLEEP +#ifdef PL_HAVE_USLEEP usleep(10000); /* wait a little (10 ms) to simulate time elapsing */ #else # ifdef HAS_POLL Modified: trunk/examples/c++/x01.cc =================================================================== --- trunk/examples/c++/x01.cc 2008-08-26 13:41:03 UTC (rev 8714) +++ trunk/examples/c++/x01.cc 2008-08-26 14:30:01 UTC (rev 8715) @@ -270,7 +270,7 @@ /* it does not work in double buffering mode, however */ if (do_test && test_xor) { -#ifdef HAVE_USLEEP +#ifdef PL_HAVE_USLEEP pls->xormod(true, &st); /* enter xor mode */ if (st) { for (i=0; i<60; i++) { Modified: trunk/examples/c++/x17.cc =================================================================== --- trunk/examples/c++/x17.cc 2008-08-26 13:41:03 UTC (rev 8714) +++ trunk/examples/c++/x17.cc 2008-08-26 14:30:01 UTC (rev 8715) @@ -150,7 +150,7 @@ dt = 0.1; for (n = 0; n < nsteps; n++) { -#ifdef HAVE_USLEEP +#ifdef PL_HAVE_USLEEP usleep(10000); /* wait a little (10 ms) to simulate time elapsing */ #else # ifdef HAS_POLL Modified: trunk/include/plConfig.h.cmake =================================================================== --- trunk/include/plConfig.h.cmake 2008-08-26 13:41:03 UTC (rev 8714) +++ trunk/include/plConfig.h.cmake 2008-08-26 14:30:01 UTC (rev 8715) @@ -72,7 +72,7 @@ #cmakedefine HAVE_UNISTD_H 1 /* Define if usleep is available */ -#cmakedefine HAVE_USLEEP +#cmakedefine PL_HAVE_USLEEP /* Define if you want PLplot's float type to be double */ #cmakedefine PL_DOUBLE This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2008-08-28 00:49:13
|
Revision: 8718 http://plplot.svn.sourceforge.net/plplot/?rev=8718&view=rev Author: airwin Date: 2008-08-28 00:49:23 +0000 (Thu, 28 Aug 2008) Log Message: ----------- AWI for Hezekiah M. Carty. Add standard example 22. No differences with C version results. Modified Paths: -------------- trunk/examples/ocaml/CMakeLists.txt trunk/examples/ocaml/Makefile.examples.in trunk/plplot_test/test_ocaml.sh.in Added Paths: ----------- trunk/examples/ocaml/x22.ml Modified: trunk/examples/ocaml/CMakeLists.txt =================================================================== --- trunk/examples/ocaml/CMakeLists.txt 2008-08-27 13:30:41 UTC (rev 8717) +++ trunk/examples/ocaml/CMakeLists.txt 2008-08-28 00:49:23 UTC (rev 8718) @@ -38,6 +38,7 @@ "18" "19" "21" + "22" "24" "25" "26" Modified: trunk/examples/ocaml/Makefile.examples.in =================================================================== --- trunk/examples/ocaml/Makefile.examples.in 2008-08-27 13:30:41 UTC (rev 8717) +++ trunk/examples/ocaml/Makefile.examples.in 2008-08-28 00:49:23 UTC (rev 8718) @@ -45,6 +45,7 @@ x18$(EXEEXT) \ x19$(EXEEXT) \ x21$(EXEEXT) \ + x22$(EXEEXT) \ x24$(EXEEXT) \ x25$(EXEEXT) \ x26$(EXEEXT) \ Added: trunk/examples/ocaml/x22.ml =================================================================== --- trunk/examples/ocaml/x22.ml (rev 0) +++ trunk/examples/ocaml/x22.ml 2008-08-28 00:49:23 UTC (rev 8718) @@ -0,0 +1,262 @@ +(* $Id$ + + Simple vector plot example + Copyright (C) 2004 Andrew Ross <and...@us...> + Copyright (C) 2004 Rafael Laboissiere + 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 Plplot + +let pi = atan 1.0 *. 4.0 + +(* Pairs of points making the line segments used to plot the user defined + arrow. *) +let arrow_x = [|-0.5; 0.5; 0.3; 0.5; 0.3; 0.5|] +let arrow_y = [|0.0; 0.0; 0.2; 0.0; -0.2; 0.0|] +let arrow2_x = [|-0.5; 0.3; 0.3; 0.5; 0.3; 0.3|] +let arrow2_y = [|0.0; 0.0; 0.2; 0.0; -0.2; 0.0|] + +(*--------------------------------------------------------------------------*\ + * Generates several simple vector plots. + \*--------------------------------------------------------------------------*) + +(* + * Vector plot of the circulation about the origin + *) +let circulation () = + let nx = 20 in + let ny = 20 in + let dx = 1.0 in + let dy = 1.0 in + + let xmin = -. float_of_int nx /. 2.0 *. dx in + let xmax = float_of_int nx /. 2.0 *. dx in + let ymin = -. float_of_int ny /. 2.0 *. dy in + let ymax = float_of_int ny /. 2.0 *. dy in + + let xg = Array.make_matrix nx ny 0.0 in + let yg = Array.make_matrix nx ny 0.0 in + let u = Array.make_matrix nx ny 0.0 in + let v = Array.make_matrix nx ny 0.0 in + + (* Create data - circulation around the origin. *) + for i = 0 to nx - 1 do + let x = (float_of_int i -. float_of_int nx /. 2.0 +. 0.5) *. dx in + for j = 0 to ny - 1 do + let y = (float_of_int j -. float_of_int ny /. 2.0 +. 0.5) *. dy in + xg.(i).(j) <- x; + yg.(i).(j) <- y; + u.(i).(j) <- y; + v.(i).(j) <- -. x; + done + done; + + (* Plot vectors with default arrows *) + 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); + plvect u v 0.0; + plcol0 1; + () + +(* + * Vector plot of flow through a constricted pipe + *) +let constriction () = + let nx = 20 in + let ny = 20 in + let dx = 1.0 in + let dy = 1.0 in + + let xmin = -. float_of_int nx /. 2.0 *. dx in + let xmax = float_of_int nx /. 2.0 *. dx in + let ymin = -. float_of_int ny /. 2.0 *. dy in + let ymax = float_of_int ny /. 2.0 *. dy in + + let xg = Array.make_matrix nx ny 0.0 in + let yg = Array.make_matrix nx ny 0.0 in + let u = Array.make_matrix nx ny 0.0 in + let v = Array.make_matrix nx ny 0.0 in + + let q = 2.0 in + for i = 0 to nx - 1 do + let x = (float_of_int i -. float_of_int nx /. 2.0 +. 0.5) *. dx in + for j = 0 to ny - 1 do + let y = (float_of_int j -. float_of_int ny /. 2.0 +. 0.5) *. dy in + xg.(i).(j) <- x; + yg.(i).(j) <- y; + let b = ymax /. 4.0 *. (3.0 -. cos (pi *. x /. xmax)) in + if abs_float y < b then ( + let dbdx = ymax /. 4.0 *. sin (pi *. x /. xmax) *. y /. b in + u.(i).(j) <- q *. ymax /. b; + v.(i).(j) <- dbdx *. u.(i).(j); + ) + else ( + u.(i).(j) <- 0.0; + v.(i).(j) <- 0.0; + ) + done + done; + + 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); + plvect u v (-0.5); + plcol0 1; + () + +let f2mnmx f = + let fmax = ref f.(0).(0) in + let fmin = ref f.(0).(0) in + + for i = 0 to Array.length f - 1 do + for j = 0 to Array.length f.(i) - 1 do + fmax := max !fmax f.(i).(j); + fmin := min !fmin f.(i).(j); + done + done; + !fmin, !fmax + +(* + * Vector plot of the gradient of a shielded potential (see example 9) + *) +let potential () = + let nper = 100 in + let nlevel = 10 in + let nr = 20 in + let ntheta = 20 in + + (* Potential inside a conducting cylinder (or sphere) by method of images. + Charge 1 is placed at (d1, d1), with image charge at (d2, d2). + Charge 2 is placed at (d1, -d1), with image charge at (d2, -d2). + Also put in smoothing term at small distances. *) + + let rmax = float_of_int nr in + + let eps = 2.0 in + + let q1 = 1.0 in + let d1 = rmax /. 4.0 in + + let q1i = -. q1 *. rmax /. d1 in + let d1i = rmax**2.0 /. d1 in + + let q2 = -1.0 in + let d2 = rmax /. 4.0 in + + let q2i = -. q2 *. rmax /. d2 in + let d2i = rmax**2.0 /. d2 in + + let xg = Array.make_matrix nr ntheta 0.0 in + let yg = Array.make_matrix nr ntheta 0.0 in + let u = Array.make_matrix nr ntheta 0.0 in + let v = Array.make_matrix nr ntheta 0.0 in + let z = Array.make_matrix nr ntheta 0.0 in + + for i = 0 to nr - 1 do + let r = 0.5 +. float_of_int i in + for j = 0 to ntheta - 1 do + let theta = + 2.0 *. pi /. float_of_int (ntheta - 1) *. (0.5 +. float_of_int j) + in + let x = r *. cos theta in + let y = r *. sin theta in + xg.(i).(j) <- x; + yg.(i).(j) <- y; + let div1 = sqrt ((x -. d1)**2.0 +. (y -. d1)**2.0 +. eps**2.0) in + let div1i = sqrt ((x -. d1i)**2.0 +. (y -. d1i)**2.0 +. eps**2.0) in + let div2 = sqrt ((x -. d2)**2.0 +. (y +. d2)**2.0 +. eps**2.0) in + let div2i = sqrt ((x -. d2i)**2.0 +. (y +. d2i)**2.0 +. eps**2.0) in + z.(i).(j) <- q1 /. div1 +. q1i /. div1i +. q2 /. div2 +. q2i /. div2i; + u.(i).(j) <- + ~-. q1 *. (x -. d1) /. div1**3.0 -. q1i *. (x -. d1i) /. div1i**3.0 + -. q2 *. (x -. d2) /. div2**3.0 -. q2i *. (x -. d2i) /. div2i**3.0; + v.(i).(j) <- + ~-. q1 *. (y -. d1) /. div1**3.0 -. q1i *. (y -. d1i) /. div1i**3.0 + -. q2 *. (y +. d2) /. div2**3.0 -. q2i *. (y +. d2i) /. div2i**3.0; + done + done; + + let xmin, xmax = f2mnmx xg in + let ymin, ymax = f2mnmx yg in + let zmin, zmax = f2mnmx z in + + plenv xmin xmax ymin ymax 0 0; + pllab "(x)" "(y)" "#frPLplot Example 22 - potential gradient vector plot"; + (* Plot contours of the potential *) + let dz = (zmax -. zmin) /. float_of_int nlevel in + let clevel = + Array.init nlevel (fun i -> zmin +. (float_of_int i +. 0.5) *. dz) + in + plcol0 3; + pllsty 2; + set_pltr (fun x y -> pltr2 x y xg yg); + plcont z 1 nr 1 ntheta clevel; + pllsty 1; + plcol0 1; + + (* Plot the vectors of the gradient of the potential *) + plcol0 2; + plvect u v 25.0; + plcol0 1; + + let px = Array.make nper 0.0 in + let py = Array.make nper 0.0 in + (* Plot the perimeter of the cylinder *) + for i=0 to nper - 1 do + let theta = (2.0 *. pi /. float_of_int (nper - 1)) *. float_of_int i in + px.(i) <- rmax *. cos theta; + py.(i) <- rmax *. sin theta; + done; + plline px py; + () + +let () = + (* Parse and process command line arguments *) + ignore (plparseopts Sys.argv [|PL_PARSE_FULL|]); + + (* Initialize plplot *) + plinit (); + + circulation (); + + let narr = 6 in + let fill = 0 in + + (* Set arrow style using arrow_x and arrow_y then + plot using these arrows. *) + plsvect arrow_x arrow_y fill; + constriction (); + + (* Set arrow style using arrow2_x and arrow2_y then + plot using these filled arrows. *) + let fill = 1 in + plsvect arrow2_x arrow2_y fill; + constriction (); + + potential (); + + plend (); + () + Property changes on: trunk/examples/ocaml/x22.ml ___________________________________________________________________ Added: svn:eol-style + native Modified: trunk/plplot_test/test_ocaml.sh.in =================================================================== --- trunk/plplot_test/test_ocaml.sh.in 2008-08-27 13:30:41 UTC (rev 8717) +++ trunk/plplot_test/test_ocaml.sh.in 2008-08-28 00:49:23 UTC (rev 8718) @@ -23,7 +23,7 @@ # $options, and possibly $verbose_test defined. # Do the standard non-interactive examples. -for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 18 19 21 24 25 26 27 30; do +for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 18 19 21 22 24 25 26 27 30; do if [ "$verbose_test" ]; then echo "x${index}ocaml" fi This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2008-08-28 04:28:50
|
Revision: 8719 http://plplot.svn.sourceforge.net/plplot/?rev=8719&view=rev Author: airwin Date: 2008-08-28 04:29:00 +0000 (Thu, 28 Aug 2008) Log Message: ----------- AWI for Hezekiah M. Carty. Example 29 has been implemented and gives same as C result. Modified Paths: -------------- trunk/examples/ocaml/CMakeLists.txt trunk/examples/ocaml/Makefile.examples.in trunk/plplot_test/test_ocaml.sh.in Modified: trunk/examples/ocaml/CMakeLists.txt =================================================================== --- trunk/examples/ocaml/CMakeLists.txt 2008-08-28 00:49:23 UTC (rev 8718) +++ trunk/examples/ocaml/CMakeLists.txt 2008-08-28 04:29:00 UTC (rev 8719) @@ -43,6 +43,7 @@ "25" "26" "27" + "29" "30" ) Modified: trunk/examples/ocaml/Makefile.examples.in =================================================================== --- trunk/examples/ocaml/Makefile.examples.in 2008-08-28 00:49:23 UTC (rev 8718) +++ trunk/examples/ocaml/Makefile.examples.in 2008-08-28 04:29:00 UTC (rev 8719) @@ -50,6 +50,7 @@ x25$(EXEEXT) \ x26$(EXEEXT) \ x27$(EXEEXT) \ + x29$(EXEEXT) \ x30$(EXEEXT) \ all: $(EXECUTABLES_list) Modified: trunk/plplot_test/test_ocaml.sh.in =================================================================== --- trunk/plplot_test/test_ocaml.sh.in 2008-08-28 00:49:23 UTC (rev 8718) +++ trunk/plplot_test/test_ocaml.sh.in 2008-08-28 04:29:00 UTC (rev 8719) @@ -23,7 +23,7 @@ # $options, and possibly $verbose_test defined. # Do the standard non-interactive examples. -for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 18 19 21 22 24 25 26 27 30; do +for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 18 19 21 22 24 25 26 27 29 30; do if [ "$verbose_test" ]; then echo "x${index}ocaml" fi This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2008-08-31 17:12:56
|
Revision: 8733 http://plplot.svn.sourceforge.net/plplot/?rev=8733&view=rev Author: andrewross Date: 2008-08-31 17:13:04 +0000 (Sun, 31 Aug 2008) Log Message: ----------- ANR for Hezekiah Carty. Add ocaml versions of example 16 and 20. Modified Paths: -------------- trunk/examples/ocaml/CMakeLists.txt trunk/examples/ocaml/Makefile.examples.in trunk/plplot_test/test_ocaml.sh.in Added Paths: ----------- trunk/examples/ocaml/x16.ml trunk/examples/ocaml/x20.ml Modified: trunk/examples/ocaml/CMakeLists.txt =================================================================== --- trunk/examples/ocaml/CMakeLists.txt 2008-08-31 12:29:08 UTC (rev 8732) +++ trunk/examples/ocaml/CMakeLists.txt 2008-08-31 17:13:04 UTC (rev 8733) @@ -35,8 +35,10 @@ "12" "13" "15" + "16" "18" "19" + "20" "21" "22" "24" @@ -66,6 +68,7 @@ add_custom_command( 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 " plplot.cma Modified: trunk/examples/ocaml/Makefile.examples.in =================================================================== --- trunk/examples/ocaml/Makefile.examples.in 2008-08-31 12:29:08 UTC (rev 8732) +++ trunk/examples/ocaml/Makefile.examples.in 2008-08-31 17:13:04 UTC (rev 8733) @@ -42,8 +42,10 @@ x12$(EXEEXT) \ x13$(EXEEXT) \ x15$(EXEEXT) \ + x16$(EXEEXT) \ x18$(EXEEXT) \ x19$(EXEEXT) \ + x20$(EXEEXT) \ x21$(EXEEXT) \ x22$(EXEEXT) \ x24$(EXEEXT) \ @@ -60,6 +62,6 @@ .ml$(EXEEXT): - $(OCAMLC) -I @OCAML_INSTALL_DIR@/plplot -ccopt "-L @CMAKE_INSTALL_LIBDIR@" plplot.cma -o $@ $< + $(OCAMLC) -g -I @OCAML_INSTALL_DIR@/plplot -ccopt "-L @CMAKE_INSTALL_LIBDIR@" plplot.cma -o $@ $< .SUFFIXES: .ml $(EXEEXT) Added: trunk/examples/ocaml/x16.ml =================================================================== --- trunk/examples/ocaml/x16.ml (rev 0) +++ trunk/examples/ocaml/x16.ml 2008-08-31 17:13:04 UTC (rev 8733) @@ -0,0 +1,251 @@ +(* $Id$ + + plshade demo, using color fill. + + Maurice LeBrun + IFS, University of Texas at Austin + 20 Mar 1994 +*) + +open Plplot + +let pi = atan 1.0 *. 4.0 + +(* Fundamental settings. See notes[] for more info. *) + +let ns = 20 (* Default number of shade levels *) +let nx = 35 (* Default number of data points in x *) +let ny = 46 (* Default number of data points in y *) +let exclude = false (* By default do not plot a page illustrating + exclusion. *) + +(* polar plot data *) +let perimeterpts = 100 + +(* Transformation function *) +let mypltr x y tr = + tr.(0) *. x +. tr.(1) *. y +. tr.(2), + tr.(3) *. x +. tr.(4) *. y +. tr.(5) + +let zdefined x y = + let z = sqrt (x *. x +. y *. y) in + if z < 0.4 || z > 0.6 then 1 else 0 + +(*--------------------------------------------------------------------------*\ + * f2mnmx + * + * Returns min & max of input 2d array. +\*--------------------------------------------------------------------------*) +let f2mnmx f = + let fmax = ref f.(0).(0) in + let fmin = ref f.(0).(0) in + for i = 0 to Array.length f - 1 do + for j = 0 to Array.length f.(i) - 1 do + fmax := max !fmax f.(i).(j); + fmin := min !fmin f.(i).(j); + done + done; + !fmin, !fmax + +(*--------------------------------------------------------------------------*\ + * Does several shade plots using different coordinate mappings. +\*--------------------------------------------------------------------------*) +let () = + let fill_width = 2 in + let cont_color = 0 in + let cont_width = 0 in + + (* Parse and process command line arguments *) + ignore (plparseopts Sys.argv [|PL_PARSE_FULL|]); + + (* Reduce colors in cmap 0 so that cmap 1 is useful on a 16-color display *) + plscmap0n 3; + + (* Initialize plplot *) + plinit (); + + (* Set up transformation function *) + let tr = + [| + 2.0 /. float_of_int (nx - 1); 0.0; -1.0; + 0.0; 2.0 /. float_of_int (ny-1); -1.0; + |] + in + + (* Set up data arrays *) + let z = Array.make_matrix nx ny 0.0 in + let w = Array.make_matrix nx ny 0.0 in + for i = 0 to nx - 1 do + let x = float_of_int (i - (nx / 2)) /. float_of_int (nx / 2) in + for j = 0 to ny - 1 do + let y = float_of_int (j - (ny / 2)) /. float_of_int (ny / 2) -. 1.0 in + z.(i).(j) <- -. sin (7.0 *. x) *. cos (7.0 *. y) +. x *. x -. y *. y; + w.(i).(j) <- -. cos (7.0 *. x) *. sin (7.0 *. y) +. 2.0 *. x *. y; + done + done; + + let zmin, zmax = f2mnmx z in + let clevel = + Array.init ns ( + fun i -> + zmin +. (zmax -. zmin) *. (float_of_int i +. 0.5) /. float_of_int ns + ) + in + let shedge = + Array.init (ns + 1) ( + fun i -> + zmin +. (zmax -. zmin) *. float_of_int i /. float_of_int ns + ) + in + + (* Set up coordinate grids *) + let xg1 = Array.make nx 0.0 in + let yg1 = Array.make ny 0.0 in + let xg2 = Array.make_matrix nx ny 0.0 in + let yg2 = Array.make_matrix nx ny 0.0 in + + for i = 0 to nx - 1 do + for j = 0 to ny - 1 do + let x, y = mypltr (float_of_int i) (float_of_int j) tr in + + let argx = x *. pi /. 2.0 in + let argy = y *. pi /. 2.0 in + let distort = 0.4 in + + xg1.(i) <- x +. distort *. cos argx; + yg1.(j) <- y -. distort *. cos argy; + + xg2.(i).(j) <- x +. distort *. cos argx *. cos argy; + yg2.(i).(j) <- y -. distort *. cos argx *. cos argy; + done + done; + + (* Plot using identity transform *) + pladv 0; + plvpor 0.1 0.9 0.1 0.9; + plwind (-1.0) 1.0 (-1.0) 1.0; + + plpsty 0; + + plshades z (-1.0) 1.0 (-1.0) 1.0 shedge fill_width cont_color cont_width 1; + + plcol0 1; + plbox "bcnst" 0.0 0 "bcnstv" 0.0 0; + plcol0 2; + pllab "distance" "altitude" "Bogon density"; + + (* Plot using 1d coordinate transform *) + pladv 0; + plvpor 0.1 0.9 0.1 0.9; + plwind (-1.0) 1.0 (-1.0) 1.0; + + plpsty 0; + + set_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; + plbox "bcnst" 0.0 0 "bcnstv" 0.0 0; + plcol0 2; + pllab "distance" "altitude" "Bogon density"; + + (* Plot using 2d coordinate transform *) + pladv 0; + plvpor 0.1 0.9 0.1 0.9; + plwind (-1.0) 1.0 (-1.0) 1.0; + + plpsty 0; + + set_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; + plbox "bcnst" 0.0 0 "bcnstv" 0.0 0; + plcol0 2; + plcont w 1 nx 1 ny clevel; + + pllab "distance" "altitude" "Bogon density, with streamlines"; + + (* Plot using 2d coordinate transform *) + pladv 0; + plvpor 0.1 0.9 0.1 0.9; + plwind (-1.0) 1.0 (-1.0) 1.0; + + plpsty 0; + + plshades z (-1.0) 1.0 (-1.) 1.0 shedge fill_width 2 3 0; + + plcol0 1; + plbox "bcnst" 0.0 0 "bcnstv" 0.0 0; + plcol0 2; + + pllab "distance" "altitude" "Bogon density"; + + (* Note this exclusion API will probably change. *) + + (* Plot using 2d coordinate transform and exclusion*) + if exclude then ( + pladv 0; + plvpor 0.1 0.9 0.1 0.9; + plwind (-1.0) 1.0 (-1.0) 1.0; + + plpsty 0; + + set_defined zdefined; + plshades z (-1.0) 1.0 (-1.0) 1.0 shedge fill_width cont_color cont_width 0; + unset_defined (); + + plcol0 1; + plbox "bcnst" 0.0 0 "bcnstv" 0.0 0; + + pllab "distance" "altitude" "Bogon density with exclusion"; + ); + (* Example with polar coordinates. *) + pladv 0; + 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 = 0 to nx - 1 do + let r = float_of_int i /. float_of_int (nx - 1) in + for j = 0 to ny - 1 do + let t = (2.0 *. pi /. (float_of_int ny -. 1.0)) *. float_of_int j in + xg2.(i).(j) <- r *. cos t; + yg2.(i).(j) <- r *. sin t; + z.(i).(j) <- exp (~-.r *. r) *. cos (5.0 *. pi *. r) *. cos (5.0 *. t); + done + done; + + (* Need a new shedge to go along with the new data set. *) + let zmin, zmax = f2mnmx z in + + let shedge = + Array.init (ns + 1) ( + fun i -> + zmin +. (zmax -. zmin) *. float_of_int i /. float_of_int ns + ) + in + + (* Now we can shade the interior region. *) + plshades z (-1.0) 1.0 (-1.0) 1.0 shedge fill_width cont_color cont_width 0; + + (* Now we can draw the perimeter. (If do before, shade stuff may overlap.) *) + let px = Array.make perimeterpts 0.0 in + let py = Array.make perimeterpts 0.0 in + for i = 0 to perimeterpts - 1 do + let t = (2.0 *. pi /. float_of_int (perimeterpts - 1)) *. float_of_int i in + px.(i) <- cos t; + py.(i) <- sin t; + done; + plcol0 1; + plline px py; + + (* And label the plot.*) + plcol0 2; + pllab "" "" "Tokamak Bogon Instability"; + + (* Clean up *) + plend (); + () + Property changes on: trunk/examples/ocaml/x16.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/examples/ocaml/x20.ml =================================================================== --- trunk/examples/ocaml/x20.ml (rev 0) +++ trunk/examples/ocaml/x20.ml 2008-08-31 17:13:04 UTC (rev 8733) @@ -0,0 +1,252 @@ +(* $Id$ + + plimage demo + +*) + +open Plplot + +let pi = atan 1.0 *. 4.0 + +let xdim = 260 +let ydim = 220 + +(* Change this to 'Some "outfile.psc"' if you want to test the plot saving + option. *) +let filename = None + +type stretch_data = { + xmin : float; + xmax : float; + ymin : float; + ymax : float; + stretch : float; +} + +(* Transformation function *) +let mypltr x y pltr_data = + let x0 = (pltr_data.xmin +. pltr_data.xmax) *. 0.5 in + let y0 = (pltr_data.ymin +. pltr_data.ymax) *. 0.5 in + let dy = (pltr_data.ymax -. pltr_data.ymin) *. 0.5 in + x0 +. (x0 -. x) *. + (1.0 -. pltr_data.stretch *. cos ((y -. y0) /. dy *. pi *. 0.5)), + y + +(* read image from file in binary ppm format *) +let read_img fname = + (* naive grayscale binary ppm reading. If you know how to, improve it *) + let fp = open_in fname in + + let ver = input_line fp in (* version *) + + if ver <> "P5" then + raise (Invalid_argument ("Unable to read image: " ^ fname)) + else + (); + + (* This will skip comments. *) + let rec ignore_comments initial_pos = + let maybe_comment = input_line fp in + if maybe_comment.[0] = '#' then + ignore_comments (pos_in fp) + else + (* Skip back to the start of the first post-comment line. *) + seek_in fp initial_pos + in + ignore_comments (pos_in fp); + + (* width, height num colors *) + let w_h_line = input_line fp in + let num_col_line = input_line fp in + let w, h = Scanf.sscanf w_h_line "%d %d" (fun w h -> w, h) in + let num_col = Scanf.sscanf num_col_line "%d" (fun n -> n) in + + let img = String.make (w * h) ' ' in + let imf = Array.make_matrix w h 0.0 in + + (* Note that under 32bit OCaml, this will only work when reading strings up + to ~16 megabytes. *) + really_input fp img 0 (w * h - 2); + + close_in fp; + + for i = 0 to w - 1 do + for j = 0 to h - 1 do + imf.(i).(j) <- + (* flip image up-down *) + float_of_int (int_of_char (img.[(h - 1 - j ) * w + i])); + done + done; + imf, w, h, num_col + +(* save plot *) +let save_plot fname = + let cur_strm = plgstrm () in (* get current stream *) + let new_strm = plmkstrm () in (* create a new one *) + + plsdev "psc"; (* new device type. Use a known existing driver *) + plsfnam fname; (* file name *) + + plcpstrm cur_strm 0; (* copy old stream parameters to new stream *) + plreplot (); (* do the save *) + plend1 (); (* close new device *) + + plsstrm cur_strm; (* and return to previous one *) + () + +(* set gray colormap *) +let gray_cmap num_col = + let r = [|0.0; 1.0|] in + let g = [|0.0; 1.0|] in + let b = [|0.0; 1.0|] in + let pos = [|0.0; 1.0|] in + plscmap1n num_col; + plscmap1l 1 pos r g b None; + () + +let () = + (* Parse and process command line arguments *) + ignore (plparseopts Sys.argv [|PL_PARSE_FULL|]); + + (* Initialize plplot *) + plinit (); + + let z = Array.make_matrix xdim ydim 0.0 in + let r = Array.make_matrix xdim ydim 0.0 in + + (* sombrero-like demo *) + plcol0 2; (* draw a yellow plot box, useful for diagnostics *) + plenv 0.0 (2.0 *. pi) 0.0 (3.0 *. pi) 1 (-1); + + let x = + Array.init xdim ( + fun i -> float_of_int i *. 2.0 *. pi /. float_of_int (xdim - 1) + ) + in + let y = + Array.init ydim ( + fun i -> float_of_int i *. 3.0 *. pi /. float_of_int (ydim - 1) + ) + in + + for i = 0 to xdim - 1 do + for j = 0 to ydim - 1 do + r.(i).(j) <- sqrt (x.(i) *. x.(i) +. y.(j) *. y.(j)) +. 1e-3; + z.(i).(j) <- sin r.(i).(j) /. r.(i).(j); + done + done; + + pllab "No, an amplitude clipped \"sombrero\"" "" "Saturn?"; + plptex 2.0 2.0 3.0 4.0 0.0 "Transparent image"; + plimage + z 0.0 (2.0 *. pi) 0.0 (3.0 *. pi) 0.05 1.0 0.0 (2.0 *. pi) 0.0 (3.0 *. pi); + + (* save the plot *) + let () = + match filename with + Some f -> save_plot f + | None -> () + in + + pladv 0; + + (* read Lena image *) + (* Note we try two different locations to cover the case where this + * examples is being run from the test_ocaml.sh script *) + let img_f, width, height, num_col = + try + read_img "lena.pgm" + with + _ -> ( + try + read_img "../lena.pgm" + with + Invalid_argument _ -> + plend (); + raise (Failure "No such file") + ) + in + + let width = float_of_int width in + let height = float_of_int height in + + (* set gray colormap *) + gray_cmap num_col; + + (* display Lena *) + plenv 1.0 width 1.0 height 1 (-1); + + pllab "Set and drag Button 1 to (re)set selection, Button 2 to finish." " " "Lena..."; + + plimage img_f 1.0 width 1.0 height 0.0 0.0 1.0 width 1.0 height; + + (* selection/expansion demo *) + let xi = 200.0 in + let xe = 330.0 in + let yi = 280.0 in + let ye = 220.0 in + + plspause 0; + pladv 0; + + (* display selection only *) + plimage img_f 1.0 width 1.0 height 0.0 0.0 xi xe ye yi; + + plspause 1; + pladv 0; + + (* zoom in selection *) + plenv xi xe ye yi 1 (-1); + plimage img_f 1.0 width 1.0 height 0.0 0.0 xi xe ye yi; + pladv 0; + + (* Base the dynamic range on the image contents. *) + let img_max, img_min = plMinMax2dGrid img_f in + + (* Draw a saturated version of the original image. Only use the middle 50% + of the image's full dynamic range. *) + plcol0 2; + plenv 0.0 width 0.0 height 1 (-1); + pllab "" "" "Reduced dynamic range image example"; + plimagefr + img_f 0.0 width 0.0 height 0.0 0.0 + (img_min +. img_max *. 0.25) (img_max -. img_max *. 0.25); + + (* Draw a distorted version of the original image, showing its full dynamic + range. *) + plenv 0.0 width 0.0 height 1 (-1); + pllab "" "" "Distorted image example"; + + let stretch = + { + xmin = 0.0; + xmax = width; + ymin = 0.0; + ymax = height; + stretch = 0.5; + } + in + + (* 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); + (* 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 + let yg = Array.make_matrix (int_of_float width + 1) (int_of_float height + 1) 0.0 in + for i = 0 to int_of_float width do + for j = 0 to int_of_float height do + let xx, yy = mypltr (float_of_int i) (float_of_int j) stretch in + xg.(i).(j) <- xx; + yg.(i).(j) <- yy; + done + done; + set_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; + + pladv 0; + + plend (); + () + Property changes on: trunk/examples/ocaml/x20.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/plplot_test/test_ocaml.sh.in =================================================================== --- trunk/plplot_test/test_ocaml.sh.in 2008-08-31 12:29:08 UTC (rev 8732) +++ trunk/plplot_test/test_ocaml.sh.in 2008-08-31 17:13:04 UTC (rev 8733) @@ -23,7 +23,7 @@ # $options, and possibly $verbose_test defined. # Do the standard non-interactive examples. -for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 18 19 21 22 24 25 26 27 29 30; do +for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 16 18 19 20 21 22 24 25 26 27 29 30; do if [ "$verbose_test" ]; then echo "x${index}ocaml" fi This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2008-08-31 21:02:58
|
Revision: 8734 http://plplot.svn.sourceforge.net/plplot/?rev=8734&view=rev Author: andrewross Date: 2008-08-31 21:02:59 +0000 (Sun, 31 Aug 2008) Log Message: ----------- ANR for Hezekiah Carty. Add ocaml versions of example 23 and 28. Note that example 23 does not currently work for me with ocaml 3.10.0 so I have disabled building and testing it. Modified Paths: -------------- trunk/bindings/ocaml/plplot_h trunk/bindings/ocaml/plplot_h.inc trunk/examples/ocaml/CMakeLists.txt trunk/examples/ocaml/Makefile.examples.in trunk/plplot_test/test_ocaml.sh.in Added Paths: ----------- trunk/examples/ocaml/x23.ml trunk/examples/ocaml/x28.ml Modified: trunk/bindings/ocaml/plplot_h =================================================================== --- trunk/bindings/ocaml/plplot_h 2008-08-31 17:13:04 UTC (rev 8733) +++ trunk/bindings/ocaml/plplot_h 2008-08-31 21:02:59 UTC (rev 8734) @@ -171,6 +171,9 @@ c_plgfnam(char *fnam); void +c_plgfont(PLINT *p_family, PLINT *p_style, PLINT *p_weight); + + void c_plglevel(PLINT *p_level); void @@ -405,6 +408,9 @@ void c_plsfnam(const char *fnam); + void +c_plsfont(PLINT family, PLINT style, PLINT weight); + /* void c_plshade(PLFLT **a, PLINT nx, PLINT ny, PLINT (*defined) (PLFLT, PLFLT), Modified: trunk/bindings/ocaml/plplot_h.inc =================================================================== --- trunk/bindings/ocaml/plplot_h.inc 2008-08-31 17:13:04 UTC (rev 8733) +++ trunk/bindings/ocaml/plplot_h.inc 2008-08-31 21:02:59 UTC (rev 8734) @@ -38,6 +38,7 @@ [mlname(plgfci)] void c_plgfci ( [out] unsigned int * pfci ); [mlname(plgfam)] void c_plgfam ( [out] int * p_fam, [out] int * p_num, [out] int * p_bmax ); [mlname(plgfnam)] void c_plgfnam ( [string, out, length_is(1024)] char * fnam ); +[mlname(plgfont)] void c_plgfont ( [out] int * p_family, [out] int * p_style, [out] int * p_weight ); [mlname(plglevel)] void c_plglevel ( [out] int * p_level ); [mlname(plgpage)] void c_plgpage ( [out] double * p_xp, [out] double * p_yp, [out] int * p_xleng, [out] int * p_yleng, [out] int * p_xoff, [out] int * p_yoff ); [mlname(plgra)] void c_plgra ( void ); @@ -102,6 +103,7 @@ [mlname(plsfam)] void c_plsfam ( int fam, int num, int bmax ); [mlname(plsfci)] void c_plsfci ( unsigned int fci ); [mlname(plsfnam)] void c_plsfnam ( [string] const char * fnam ); +[mlname(plsfont)] void c_plsfont ( int family, int style, int weight ); [mlname(plsmaj)] void c_plsmaj ( double def, double scale ); [mlname(plsmin)] void c_plsmin ( double def, double scale ); [mlname(plsori)] void c_plsori ( int ori ); Modified: trunk/examples/ocaml/CMakeLists.txt =================================================================== --- trunk/examples/ocaml/CMakeLists.txt 2008-08-31 17:13:04 UTC (rev 8733) +++ trunk/examples/ocaml/CMakeLists.txt 2008-08-31 21:02:59 UTC (rev 8734) @@ -45,6 +45,7 @@ "25" "26" "27" + "28" "29" "30" ) Modified: trunk/examples/ocaml/Makefile.examples.in =================================================================== --- trunk/examples/ocaml/Makefile.examples.in 2008-08-31 17:13:04 UTC (rev 8733) +++ trunk/examples/ocaml/Makefile.examples.in 2008-08-31 21:02:59 UTC (rev 8734) @@ -48,10 +48,12 @@ x20$(EXEEXT) \ x21$(EXEEXT) \ x22$(EXEEXT) \ + x23$(EXEEXT) \ x24$(EXEEXT) \ x25$(EXEEXT) \ x26$(EXEEXT) \ x27$(EXEEXT) \ + x28$(EXEEXT) \ x29$(EXEEXT) \ x30$(EXEEXT) \ Added: trunk/examples/ocaml/x23.ml =================================================================== --- trunk/examples/ocaml/x23.ml (rev 0) +++ trunk/examples/ocaml/x23.ml 2008-08-31 21:02:59 UTC (rev 8734) @@ -0,0 +1,369 @@ +(* + + Displays Greek letters and mathematically interesting Unicode ranges + Copyright (C) 2005,2008 Alan Irwin + Copyright (C) 2005,2008 Andrew Ross + 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 Plplot +open Printf + +(* + * Displays Greek letters and mathematically interesting Unicode ranges + *) + +let greek = [| + "#gA";"#gB";"#gG";"#gD";"#gE";"#gZ";"#gY";"#gH";"#gI";"#gK";"#gL";"#gM"; + "#gN";"#gC";"#gO";"#gP";"#gR";"#gS";"#gT";"#gU";"#gF";"#gX";"#gQ";"#gW"; + "#ga";"#gb";"#gg";"#gd";"#ge";"#gz";"#gy";"#gh";"#gi";"#gk";"#gl";"#gm"; + "#gn";"#gc";"#go";"#gp";"#gr";"#gs";"#gt";"#gu";"#gf";"#gx";"#gq";"#gw"; +|] + +let type1 = [| + 0x0020;0x0021;0x0023;0x0025;0x0026; + 0x0028;0x0029;0x002b;0x002c;0x002e; + 0x002f;0x0030;0x0031;0x0032;0x0033; + 0x0034;0x0035;0x0036;0x0037;0x0038; + 0x0039;0x003a;0x003b;0x003c;0x003d; + 0x003e;0x003f;0x005b;0x005d;0x005f; + 0x007b;0x007c;0x007d;0x00a9;0x00ac; + 0x00ae;0x00b0;0x00b1;0x00d7;0x00f7; + 0x0192;0x0391;0x0392;0x0393;0x0394; + 0x0395;0x0396;0x0397;0x0398;0x0399; + 0x039a;0x039b;0x039c;0x039d;0x039e; + 0x039f;0x03a0;0x03a1;0x03a3;0x03a4; + 0x03a5;0x03a6;0x03a7;0x03a8;0x03a9; + 0x03b1;0x03b2;0x03b3;0x03b4;0x03b5; + 0x03b6;0x03b7;0x03b8;0x03b9;0x03ba; + 0x03bb;0x03bc;0x03bd;0x03be;0x03bf; + 0x03c0;0x03c1;0x03c2;0x03c3;0x03c4; + 0x03c5;0x03c6;0x03c7;0x03c8;0x03c9; + 0x03d1;0x03d2;0x03d5;0x03d6;0x2022; + 0x2026;0x2032;0x2033;0x203e;0x2044; + 0x2111;0x2118;0x211c;0x2122;0x2126; + 0x2135;0x2190;0x2191;0x2192;0x2193; + 0x2194;0x21b5;0x21d0;0x21d1;0x21d2; + 0x21d3;0x21d4;0x2200;0x2202;0x2203; + 0x2205;0x2206;0x2207;0x2208;0x2209; + 0x220b;0x220f;0x2211;0x2212;0x2215; + 0x2217;0x221a;0x221d;0x221e;0x2220; + 0x2227;0x2228;0x2229;0x222a;0x222b; + 0x2234;0x223c;0x2245;0x2248;0x2260; + 0x2261;0x2264;0x2265;0x2282;0x2283; + 0x2284;0x2286;0x2287;0x2295;0x2297; + 0x22a5;0x22c5;0x2320;0x2321;0x2329; + 0x232a;0x25ca;0x2660;0x2663;0x2665; + 0x2666; +|] + +let title = [| + "#<0x10>PLplot Example 23 - Greek Letters"; + "#<0x10>PLplot Example 23 - Type 1 Symbol Font Glyphs by Unicode (a)"; + "#<0x10>PLplot Example 23 - Type 1 Symbol Font Glyphs by Unicode (b)"; + "#<0x10>PLplot Example 23 - Type 1 Symbol Font Glyphs by Unicode (c)"; + "#<0x10>PLplot Example 23 - Number Forms Unicode Block"; + "#<0x10>PLplot Example 23 - Arrows Unicode Block (a)"; + "#<0x10>PLplot Example 23 - Arrows Unicode Block (b)"; + "#<0x10>PLplot Example 23 - Mathematical Operators Unicode Block (a)"; + "#<0x10>PLplot Example 23 - Mathematical Operators Unicode Block (b)"; + "#<0x10>PLplot Example 23 - Mathematical Operators Unicode Block (c)"; + "#<0x10>PLplot Example 23 - Mathematical Operators Unicode Block (d)"; +|] + +let lo = [| + 0x0; + 0x0; + 0x40; + 0x80; + 0x2153; + 0x2190; + 0x21d0; + 0x2200; + 0x2240; + 0x2280; + 0x22c0; +|] + +let hi = [| + 0x30; + 0x40; + 0x80; + 0xA6; + 0x2184; + 0x21d0; + 0x2200; + 0x2240; + 0x2280; + 0x22c0; + 0x2300; +|] + +let nxcells = [| + 12; + 8; + 8; + 8; + 8; + 8; + 8; + 8; + 8; + 8; + 8; +|] + +let nycells = [| + 8; + 8; + 8; + 8; + 8; + 8; + 8; + 8; + 8; + 8; + 8; +|] + +(* non-zero values Must be consistent with nxcells and nycells. *) +let offset = [| + 0; + 0; + 64; + 128; + 0; + 0; + 0; + 0; + 0; + 0; + 0; +|] + +(* 30 possible FCI values. *) +let fci_combinations = 30 + +let fci = [| + 0x80000000; + 0x80000001; + 0x80000002; + 0x80000003; + 0x80000004; + 0x80000010; + 0x80000011; + 0x80000012; + 0x80000013; + 0x80000014; + 0x80000020; + 0x80000021; + 0x80000022; + 0x80000023; + 0x80000024; + 0x80000100; + 0x80000101; + 0x80000102; + 0x80000103; + 0x80000104; + 0x80000110; + 0x80000111; + 0x80000112; + 0x80000113; + 0x80000114; + 0x80000120; + 0x80000121; + 0x80000122; + 0x80000123; + 0x80000124; +|] + +let family = [| + "sans-serif"; + "serif"; + "monospace"; + "script"; + "symbol"; +|] + +let style = [| + "upright"; + "italic"; + "oblique"; +|] + +let weight = [| + "medium"; + "bold"; +|] + +let () = + ignore (plparseopts Sys.argv [|PL_PARSE_FULL|]); + + plinit (); + + for page = 0 to 10 do + pladv 0; + + (* Set up viewport and window *) + plvpor 0.02 0.98 0.02 0.90; + plwind 0.0 1.0 0.0 1.0; + let xmin, xmax, ymin, ymax = plgspa () in + plschr 0.0 0.8; + let ycharacter_scale = 1.0 /. (ymax -. ymin) in + + (* Factor should be 0.5, but heuristically it turns out to be larger. *) + let chardef, charht = plgchr () in + let yoffset = 1.0 *. charht *. ycharacter_scale in + + (* Draw the grid using plbox *) + plcol0 2; + let deltax = 1.0 /. float_of_int nxcells.(page) in + let deltay = 1.0 /. float_of_int nycells.(page) in + plbox "bcg" deltax 0 "bcg" deltay 0; + plcol0 15; + let length = hi.(page) - lo.(page) in + let slice = ref 0 in + for j = nycells.(page) - 1 downto -1 do + let y = (0.5 +. float_of_int j) *. deltay in + for i = 0 to nxcells.(page) - 1 do + let x = (0.5 +. float_of_int i) *. deltax in + if !slice < length then ( + let cmdString = + match page with + 0 -> sprintf "#%s" greek.(!slice) + | 1 + | 2 + | 3 -> sprintf "##[0x%.4x]" type1.(offset.(page) + !slice) + | _ -> sprintf "##[0x%.4x]" (lo.(page) + !slice); + in + let cmdString' = + String.sub cmdString 1 (String.length cmdString - 1) + in + plptex x (y +. yoffset) 1.0 0.0 0.5 cmdString'; + plptex x (y -. yoffset) 1.0 0.0 0.5 cmdString; + ); + incr slice; + done + done; + + plschr 0.0 1.0; + + (* Page title *) + plmtex "t" 1.5 0.5 0.5 title.(page); + done; + + (* Demonstrate methods of getting the current fonts *) + let fci_old = plgfci () in + let ifamily, istyle, iweight = plgfont () in + printf "For example 23 prior to page 12 the FCI is 0x%x\n" fci_old; + printf "For example 23 prior to page 12 the font family, style and weight are %s %s %s\n" + family.(ifamily) style.(istyle) weight.(iweight); + + for page = 11 to 15 do + let dy = 0.030 in + (* + int family_index, style_index, weight_index; + /* Must be big enough to contain the prefix strings, the font-changing + * commands, and the "The quick brown..." string. */ + char string[200]; + *) + + pladv 0; + plvpor 0.02 0.98 0.02 0.90; + plwind 0.0 1.0 0.0 1.0; + plsfci 0; + let () = + match page with + 11 -> + plmtex "t" 1.5 0.5 0.5 + "#<0x10>PLplot Example 23 - Set Font with plsfci"; + | 12 -> + plmtex "t" 1.5 0.5 0.5 + "#<0x10>PLplot Example 23 - Set Font with plsfont"; + | 13 -> + plmtex "t" 1.5 0.5 0.5 + "#<0x10>PLplot Example 23 - Set Font with ##<0x8nnnnnnn> construct"; + | 14 -> + plmtex "t" 1.5 0.5 0.5 + "#<0x10>PLplot Example 23 - Set Font with ##<0xmn> constructs"; + | 15 -> + plmtex "t" 1.5 0.5 0.5 + "#<0x10>PLplot Example 23 - Set Font with ##<FCI COMMAND STRING/> constructs"; + in + plschr 0.0 0.75; + for i = 0 to fci_combinations - 1 do + let family_index = i mod 5 in + let style_index = (i / 5) mod 3 in + let weight_index = ((i / 5) / 3) mod 2 in + let text_string = + match page with + 11 -> + plsfci fci.(i); + sprintf + "Page 12, %s, %s, %s: The quick brown fox jumps over the lazy dog" + family.(family_index) + style.(style_index) + weight.(weight_index); + | 12 -> + plsfont family_index style_index weight_index; + sprintf + "Page 13, %s, %s, %s: The quick brown fox jumps over the lazy dog" + family.(family_index) + style.(style_index) + weight.(weight_index); + | 13 -> + sprintf + "Page 14, %s, %s, %s: #<0x%x>The quick brown fox jumps over the lazy dog" + family.(family_index) + style.(style_index) + weight.(weight_index) + fci.(i); + | 14 -> + sprintf + "Page 15, %s, %s, %s: #<0x%1x0>#<0x%1x1>#<0x%1x2>The quick brown fox jumps over the lazy dog" + family.(family_index) + style.(style_index) + weight.(weight_index) + family_index + style_index + weight_index; + | 15 -> + sprintf + "Page 16, %s, %s, %s: #<%s/>#<%s/>#<%s/>The quick brown fox jumps over the lazy dog" + family.(family_index) + style.(style_index) + weight.(weight_index) + family.(family_index) + style.(style_index) + weight.(weight_index); + in + plptex 0.0 (1.0 -. (float_of_int i +. 0.5) *. dy) 1.0 0.0 0.0 text_string; + done; + plschr 0.0 1.0; + done; + + (* Restore defaults *) + plcol0 1; + + plend (); + () + Property changes on: trunk/examples/ocaml/x23.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/examples/ocaml/x28.ml =================================================================== --- trunk/examples/ocaml/x28.ml (rev 0) +++ trunk/examples/ocaml/x28.ml 2008-08-31 21:02:59 UTC (rev 8734) @@ -0,0 +1,363 @@ +(* $Id$ + + plmtex3, plptex3 demo. + + Copyright (C) 2007 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 Plplot + +let pi = atan 1.0 *. 4.0 + +(* Choose these values to correspond to tick marks. *) +let xpts = 2 +let ypts = 2 +let nrevolution = 16 +let nrotation = 8 +let nshear = 8 + +(*--------------------------------------------------------------------------*\ + * Demonstrates plotting text in 3D. +\*--------------------------------------------------------------------------*) +let () = + let xmin = 0.0 in + let xmax = 1.0 in + let xmid = 0.5 *. (xmax +. xmin) in + let xrange = xmax -. xmin in + let ymin = 0.0 in + let ymax = 1.0 in + let ymid = 0.5 *. (ymax +. ymin) in + let yrange = ymax -. ymin in + let zmin = 0.0 in + 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 + (* Allocate and define the minimal x, y, and z to insure 3D box *) + let x = + Array.init xpts ( + fun i -> + xmin +. float_of_int i *. (xmax -. xmin) /. float_of_int (xpts - 1) + ) + in + let y = + Array.init ypts ( + fun j -> + ymin +. float_of_int j *. (ymax -. ymin) /. float_of_int (ypts - 1) + ) + in + let z = Array.make_matrix xpts ypts 0.0 in + + (* Parse and process command line arguments *) + ignore (plparseopts Sys.argv [|PL_PARSE_FULL|]); + + plinit (); + + (* Page 1: Demonstrate inclination and shear capability pattern. *) + pladv 0; + plvpor (-0.15) 1.15 (-0.05) 1.05; + plwind (-1.2) 1.2 (-0.8) 1.5; + plw3d 1.0 1.0 1.0 xmin xmax ymin ymax zmin zmax 20.0 45.0; + + plcol0 2; + plbox3 "b" "" (xmax -. xmin) 0 + "b" "" (ymax -. ymin) 0 + "bcd" "" (zmax -. zmin) 0; + + plschr 0.0 1.0; + for i = 0 to nrevolution - 1 do + let omega = 2.0 *. pi *. float_of_int i /. float_of_int nrevolution in + let sin_omega = sin omega in + let cos_omega = cos omega in + let x_inclination = 0.5 *. xrange *. cos_omega in + let y_inclination = 0.5 *. yrange *. sin_omega in + let z_inclination = 0.0 in + let x_shear = -0.5 *. xrange *. sin_omega in + let y_shear = 0.5 *. yrange *. cos_omega in + let z_shear = 0.0 in + plptex3 + xmid ymid zmin + x_inclination y_inclination z_inclination + x_shear y_shear z_shear + 0.0 " revolution"; + done; + + plschr 0.0 1.0; + for i = 0 to nrevolution - 1 do + let omega = 2.0 *. pi *. float_of_int i /. float_of_int nrevolution in + let sin_omega = sin omega in + let cos_omega = cos omega in + let x_inclination = 0.0 in + let y_inclination = -0.5 *. yrange *. cos_omega in + let z_inclination = 0.5 *. zrange *. sin_omega in + let x_shear = 0.0 in + let y_shear = 0.5 *. yrange *. sin_omega in + let z_shear = 0.5 *. zrange *. cos_omega in + plptex3 + xmax ymid zmid + x_inclination y_inclination z_inclination + x_shear y_shear z_shear + 0.0 " revolution"; + done; + + plschr 0.0 1.0; + for i = 0 to nrevolution - 1 do + let omega = 2.0 *. pi *. float_of_int i /. float_of_int nrevolution in + let sin_omega = sin omega in + let cos_omega = cos omega in + let x_inclination = 0.5 *. xrange *. cos_omega in + let y_inclination = 0.0 in + let z_inclination = 0.5 *. zrange *. sin_omega in + let x_shear = -0.5 *. xrange *. sin_omega in + let y_shear = 0.0 in + let z_shear = 0.5 *. zrange *. cos_omega in + plptex3 + xmid ymax zmid + x_inclination y_inclination z_inclination + x_shear y_shear z_shear + 0.0 " revolution"; + done; + (* Draw minimal 3D grid to finish defining the 3D box. *) + plmesh x y z 3; + + (* Page 2: Demonstrate rotation of string around its axis. *) + pladv 0; + plvpor (-0.15) 1.15 (-0.05) 1.05; + plwind (-1.2) 1.2 (-0.8) 1.5; + plw3d 1.0 1.0 1.0 xmin xmax ymin ymax zmin zmax 20.0 45.0; + + plcol0 2; + plbox3 "b" "" (xmax -. xmin) 0 + "b" "" (ymax -. ymin) 0 + "bcd" "" (zmax -. zmin) 0; + + plschr 0.0 1.0; + let x_inclination = 1.0 in + let y_inclination = 0.0 in + let z_inclination = 0.0 in + let x_shear = 0.0 in + for i = 0 to nrotation - 1 do + let omega = 2.0 *. pi *. float_of_int i /. float_of_int nrotation in + let sin_omega = sin omega in + let cos_omega = cos omega in + let y_shear = 0.5 *. yrange *. sin_omega in + let z_shear = 0.5 *. zrange *. cos_omega in + plptex3 + xmid ymax (zmax -. (zmax -. 0.2) *. float_of_int i /. float_of_int (nrotation - 1)) + x_inclination y_inclination z_inclination + x_shear y_shear z_shear + 0.5 "rotation for y = y#dmax#u"; + done; + + plschr 0.0 1.0; + let x_inclination = 0.0 in + let y_inclination = -1.0 in + let z_inclination = 0.0 in + let y_shear = 0.0 in + for i = 0 to nrotation - 1 do + let omega = 2.0 *. pi *. float_of_int i /. float_of_int nrotation in + let sin_omega = sin omega in + let cos_omega = cos omega in + let x_shear = 0.5 *. xrange *. sin_omega in + let z_shear = 0.5 *. zrange *. cos_omega in + plptex3 + xmax ymid (zmax -. (zmax -. 0.2) *. float_of_int i /. float_of_int (nrotation - 1)) + x_inclination y_inclination z_inclination + x_shear y_shear z_shear + 0.5 "rotation for x = x#dmax#u"; + done; + + plschr 0.0 1.0; + let x_inclination = 1.0 in + let y_inclination = 0.0 in + let z_inclination = 0.0 in + let x_shear = 0.0 in + for i = 0 to nrotation - 1 do + let omega = 2.0 *. pi *. float_of_int i /. float_of_int nrotation in + let sin_omega = sin omega in + let cos_omega = cos omega in + let y_shear = 0.5 *. yrange *. cos_omega in + let z_shear = 0.5 *. zrange *. sin_omega in + plptex3 + xmid (ymax -. (ymax -. 0.2) *. float_of_int i /. float_of_int (nrotation - 1)) zmin + x_inclination y_inclination z_inclination + x_shear y_shear z_shear + 0.5 "rotation for z = z#dmin#u"; + done; + (* Draw minimal 3D grid to finish defining the 3D box. *) + plmesh x y z 3; + + (* Page 3: Demonstrate shear of string along its axis. *) + (* Work around xcairo and pngcairo (but not pscairo) problems for + shear vector too close to axis of string. (N.B. no workaround + would be domega = 0.) *) + let domega = 0.05 in + pladv 0; + plvpor (-0.15) 1.15 (-0.05) 1.05; + plwind (-1.2) 1.2 (-0.8) 1.5; + plw3d 1.0 1.0 1.0 xmin xmax ymin ymax zmin zmax 20.0 45.0; + + plcol0 2; + plbox3 "b" "" (xmax -. xmin) 0 + "b" "" (ymax -. ymin) 0 + "bcd" "" (zmax -. zmin) 0; + + plschr 0.0 1.0; + let x_inclination = 1.0 in + let y_inclination = 0.0 in + let z_inclination = 0.0 in + let y_shear = 0.0 in + for i = 0 to nshear - 1 do + let omega = domega +. 2.0 *. pi *. float_of_int i /. float_of_int nshear in + let sin_omega = sin omega in + let cos_omega = cos omega in + let x_shear = 0.5 *. xrange *. sin_omega in + let z_shear = 0.5 *. zrange *. cos_omega in + plptex3 + xmid ymax (zmax -. (zmax -. 0.2) *. float_of_int i /. float_of_int (nshear - 1)) + x_inclination y_inclination z_inclination + x_shear y_shear z_shear + 0.5 "shear for y = y#dmax#u"; + done; + + plschr 0.0 1.0; + let x_inclination = 0.0 in + let y_inclination = -1.0 in + let z_inclination = 0.0 in + let x_shear = 0.0 in + for i = 0 to nshear - 1 do + let omega = domega +. 2.0 *. pi *. float_of_int i /. float_of_int nshear in + let sin_omega = sin omega in + let cos_omega = cos omega in + let y_shear = -0.5 *. yrange *. sin_omega in + let z_shear = 0.5 *. zrange *. cos_omega in + plptex3 + xmax ymid (zmax -. (zmax -. 0.2) *. float_of_int i /. float_of_int (nshear - 1)) + x_inclination y_inclination z_inclination + x_shear y_shear z_shear + 0.5 "shear for x = x#dmax#u"; + done; + + plschr 0.0 1.0; + let x_inclination = 1.0 in + let y_inclination = 0.0 in + let z_inclination = 0.0 in + let z_shear = 0.0 in + for i = 0 to nshear - 1 do + let omega = domega +. 2.0 *. pi *. float_of_int i /. float_of_int nshear in + let sin_omega = sin omega in + let cos_omega = cos omega in + let y_shear = 0.5 *. yrange *. cos_omega in + let x_shear = 0.5 *. xrange *. sin_omega in + plptex3 + xmid (ymax -. (ymax -. 0.2) *. float_of_int i /. float_of_int (nshear - 1)) zmin + x_inclination y_inclination z_inclination + x_shear y_shear z_shear + 0.5 "shear for z = z#dmin#u"; + done; + (* Draw minimal 3D grid to finish defining the 3D box. *) + plmesh x y z 3; + + (* Page 4: Demonstrate drawing a string on a 3D path. *) + pladv 0; + plvpor (-0.15) 1.15 (-0.05) 1.05; + plwind (-1.2) 1.2 (-0.8) 1.5; + plw3d 1.0 1.0 1.0 xmin xmax ymin ymax zmin zmax 40.0 (-30.0); + + plcol0 2; + plbox3 "b" "" (xmax -. xmin) 0 + "b" "" (ymax -. ymin) 0 + "bcd" "" (zmax -. zmin) 0; + + plschr 0.0 1.2; + (* domega controls the spacing between the various characters of the + 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 + for i = 0 to String.length pstring - 1 do + let omega = 0.0 +. float_of_int i *. domega in + let sin_omega = sin omega in + let cos_omega = cos omega in + let xpos = xmid +. radius *. sin_omega in + let ypos = ymid -. radius *. cos_omega in + let zpos = zmin +. pitch *. omega in + (* In general, the inclination is proportional to the derivative of + the position wrt theta. *) + let x_inclination = radius *. cos_omega in + let y_inclination = radius *. sin_omega in + let z_inclination = pitch in + (* The shear vector should be perpendicular to the 3D line with Z + component maximized, but for low pitch a good approximation is + a constant vector that is parallel to the Z axis. *) + let x_shear = 0.0 in + let y_shear = 0.0 in + let z_shear = 1.0 in + let p1string = String.sub pstring i 1 in + plptex3 + xpos ypos zpos + x_inclination y_inclination z_inclination + x_shear y_shear z_shear + 0.5 p1string; + done; + + (* Draw minimal 3D grid to finish defining the 3D box. *) + plmesh x y z 3; + + (* Page 5: Demonstrate plmtex3 axis labelling capability *) + pladv 0; + plvpor (-0.15) 1.15 (-0.05) 1.05; + plwind (-1.2) 1.2 (-0.8) 1.5; + plw3d 1.0 1.0 1.0 xmin xmax ymin ymax zmin zmax 20.0 45.0; + + plcol0 2; + plbox3 "b" "" (xmax -. xmin) 0 + "b" "" (ymax -. ymin) 0 + "bcd" "" (zmax -. zmin) 0; + + plschr 0.0 1.0; + plmtex3 "xp" 3.0 0.5 0.5 "Arbitrarily displaced"; + plmtex3 "xp" 4.5 0.5 0.5 "primary X-axis label"; + plmtex3 "xs" (-2.5) 0.5 0.5 "Arbitrarily displaced"; + plmtex3 "xs" (-1.0) 0.5 0.5 "secondary X-axis label"; + plmtex3 "yp" 3.0 0.5 0.5 "Arbitrarily displaced"; + plmtex3 "yp" 4.5 0.5 0.5 "primary Y-axis label"; + plmtex3 "ys" (-2.5) 0.5 0.5 "Arbitrarily displaced"; + plmtex3 "ys" (-1.0) 0.5 0.5 "secondary Y-axis label"; + plmtex3 "zp" 4.5 0.5 0.5 "Arbitrarily displaced"; + plmtex3 "zp" 3.0 0.5 0.5 "primary Z-axis label"; + plmtex3 "zs" (-2.5) 0.5 0.5 "Arbitrarily displaced"; + plmtex3 "zs" (-1.0) 0.5 0.5 "secondary Z-axis label"; + (* Draw minimal 3D grid to finish defining the 3D box. *) + plmesh x y z 3; + + (* Clean up. *) + plend (); + () + Property changes on: trunk/examples/ocaml/x28.ml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/plplot_test/test_ocaml.sh.in =================================================================== --- trunk/plplot_test/test_ocaml.sh.in 2008-08-31 17:13:04 UTC (rev 8733) +++ trunk/plplot_test/test_ocaml.sh.in 2008-08-31 21:02:59 UTC (rev 8734) @@ -23,7 +23,7 @@ # $options, and possibly $verbose_test defined. # 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 20 21 22 24 25 26 27 29 30; do +for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 16 18 19 20 21 22 24 25 26 27 28 29 30; do if [ "$verbose_test" ]; then echo "x${index}ocaml" fi This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2008-09-01 01:01:22
|
Revision: 8736 http://plplot.svn.sourceforge.net/plplot/?rev=8736&view=rev Author: airwin Date: 2008-09-01 01:01:26 +0000 (Mon, 01 Sep 2008) Log Message: ----------- AWI for Hezekiah M. Carty. Update example 23 to bring in line with recent changes to the pl[sg]fci unsigned integer arguments. These changes work fine on my (and Hez's) 64-bit systems, and in anticipation they will also work on 32-bit systems I have added ocaml example 23 again to the list of examples built and tested in the build tree. Modified Paths: -------------- trunk/examples/ocaml/CMakeLists.txt trunk/examples/ocaml/x23.ml trunk/plplot_test/test_ocaml.sh.in Modified: trunk/examples/ocaml/CMakeLists.txt =================================================================== --- trunk/examples/ocaml/CMakeLists.txt 2008-09-01 00:56:41 UTC (rev 8735) +++ trunk/examples/ocaml/CMakeLists.txt 2008-09-01 01:01:26 UTC (rev 8736) @@ -41,6 +41,7 @@ "20" "21" "22" + "23" "24" "25" "26" Modified: trunk/examples/ocaml/x23.ml =================================================================== --- trunk/examples/ocaml/x23.ml 2008-09-01 00:56:41 UTC (rev 8735) +++ trunk/examples/ocaml/x23.ml 2008-09-01 01:01:26 UTC (rev 8736) @@ -164,36 +164,36 @@ let fci_combinations = 30 let fci = [| - 0x80000000; - 0x80000001; - 0x80000002; - 0x80000003; - 0x80000004; - 0x80000010; - 0x80000011; - 0x80000012; - 0x80000013; - 0x80000014; - 0x80000020; - 0x80000021; - 0x80000022; - 0x80000023; - 0x80000024; - 0x80000100; - 0x80000101; - 0x80000102; - 0x80000103; - 0x80000104; - 0x80000110; - 0x80000111; - 0x80000112; - 0x80000113; - 0x80000114; - 0x80000120; - 0x80000121; - 0x80000122; - 0x80000123; - 0x80000124; + 0x80000000L; + 0x80000001L; + 0x80000002L; + 0x80000003L; + 0x80000004L; + 0x80000010L; + 0x80000011L; + 0x80000012L; + 0x80000013L; + 0x80000014L; + 0x80000020L; + 0x80000021L; + 0x80000022L; + 0x80000023L; + 0x80000024L; + 0x80000100L; + 0x80000101L; + 0x80000102L; + 0x80000103L; + 0x80000104L; + 0x80000110L; + 0x80000111L; + 0x80000112L; + 0x80000113L; + 0x80000114L; + 0x80000120L; + 0x80000121L; + 0x80000122L; + 0x80000123L; + 0x80000124L; |] let family = [| @@ -290,7 +290,7 @@ pladv 0; plvpor 0.02 0.98 0.02 0.90; plwind 0.0 1.0 0.0 1.0; - plsfci 0; + plsfci 0L; let () = match page with 11 -> @@ -332,7 +332,7 @@ weight.(weight_index); | 13 -> sprintf - "Page 14, %s, %s, %s: #<0x%x>The quick brown fox jumps over the lazy dog" + "Page 14, %s, %s, %s: #<0x%Lx>The quick brown fox jumps over the lazy dog" family.(family_index) style.(style_index) weight.(weight_index) Modified: trunk/plplot_test/test_ocaml.sh.in =================================================================== --- trunk/plplot_test/test_ocaml.sh.in 2008-09-01 00:56:41 UTC (rev 8735) +++ trunk/plplot_test/test_ocaml.sh.in 2008-09-01 01:01:26 UTC (rev 8736) @@ -23,7 +23,7 @@ # $options, and possibly $verbose_test defined. # 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 20 21 22 24 25 26 27 28 29 30; do +for index in 01 02 03 04 05 06 07 08 09 10 11 12 13 15 16 18 19 20 21 22 23 24 25 26 27 28 29 30; do if [ "$verbose_test" ]; then echo "x${index}ocaml" fi This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jb...@us...> - 2008-09-03 09:42:23
|
Revision: 8746 http://plplot.svn.sourceforge.net/plplot/?rev=8746&view=rev Author: jbauck Date: 2008-09-03 09:42:31 +0000 (Wed, 03 Sep 2008) Log Message: ----------- Several small tweaks; add "fix this" in comments in some areas that could stand improvement. Add subtype for mapping facility. Modified Paths: -------------- trunk/bindings/ada/plplot.ads.cmake trunk/bindings/ada/plplot_thin.adb.cmake trunk/bindings/ada/plplot_thin.ads.cmake trunk/bindings/ada/plplot_traditional.ads.cmake trunk/examples/ada/x19a.adb.cmake trunk/examples/ada/xthick19a.adb.cmake Modified: trunk/bindings/ada/plplot.ads.cmake =================================================================== --- trunk/bindings/ada/plplot.ads.cmake 2008-09-02 08:49:20 UTC (rev 8745) +++ trunk/bindings/ada/plplot.ads.cmake 2008-09-03 09:42:31 UTC (rev 8746) @@ -67,6 +67,9 @@ -- Make Mask_Function_Pointer_Type available to the user so that s/he doesn't -- have to "with" PLplot_Thin. Note that it is also used herein. subtype Mask_Function_Pointer_Type is PLplot_Thin.Mask_Function_Pointer_Type; + + -- "Rename" callback for map functions plmap and plmeridians. + subtype Map_Form_Function_Pointer_Type is Plplot_Thin.Map_Form_Function_Pointer_Type; -------------------------------------------------------------------------------- -- Types and constants for thick binding -- @@ -218,6 +221,7 @@ -- definitions for the opt argument in plot3dc() and plsurf3d() -- DRAW_LINEX *must* be 1 and DRAW_LINEY *must* be 2, because of legacy code! + -- fix this Why is there no type declared for these? No_3D_Options : constant Integer := 0; -- None of the options Lines_Parallel_To_X : constant Integer := 1; -- draw lines parallel to the X axis Lines_Parallel_To_Y : constant Integer := 2; -- draw lines parallel to the Y axis @@ -281,6 +285,7 @@ -------------------------------------------------------------------------------- + -- fix this Why is there no style here? -- Flags for the opt argument in plhist -- Histogram_Default : constant Integer := 0; Histogram_Noscaling : constant Integer := 1; Modified: trunk/bindings/ada/plplot_thin.adb.cmake =================================================================== --- trunk/bindings/ada/plplot_thin.adb.cmake 2008-09-02 08:49:20 UTC (rev 8745) +++ trunk/bindings/ada/plplot_thin.adb.cmake 2008-09-03 09:42:31 UTC (rev 8746) @@ -52,7 +52,7 @@ -- discussed in "Ada as a Second Language," Second Edition, by Norman H. -- Cohen, Section 19.3, for portability. This should remove GNAT dependence. - -- Question: Will Unchecked_Access, a normal Ada feature, work instead? + -- Question: Will Unchecked_Access, a normal Ada feature, work instead? fix this function Matrix_To_Pointers(x : Real_Matrix) return Long_Float_Pointer_Array is Index_Of_First_Column : Integer := x'First(2); Modified: trunk/bindings/ada/plplot_thin.ads.cmake =================================================================== --- trunk/bindings/ada/plplot_thin.ads.cmake 2008-09-02 08:49:20 UTC (rev 8745) +++ trunk/bindings/ada/plplot_thin.ads.cmake 2008-09-03 09:42:31 UTC (rev 8746) @@ -1034,9 +1034,8 @@ -- definitions for the opt argument in plot3dc() and plsurf3d() - -- DRAW_LINEX *must* be 1 and DRAW_LINEY *must* be 2, because of legacy code! - + -- fix this Why is there no type declared for these? DRAW_LINEX : constant Integer := 1; -- draw lines parallel to the X axis DRAW_LINEY : constant Integer := 2; -- draw lines parallel to the Y axis DRAW_LINEXY : constant Integer := 3; -- draw lines parallel to both the X and Y axis Modified: trunk/bindings/ada/plplot_traditional.ads.cmake =================================================================== --- trunk/bindings/ada/plplot_traditional.ads.cmake 2008-09-02 08:49:20 UTC (rev 8745) +++ trunk/bindings/ada/plplot_traditional.ads.cmake 2008-09-03 09:42:31 UTC (rev 8746) @@ -68,8 +68,8 @@ -- have to "with" PLplot_Thin. Note that it is also used herein. subtype Mask_Function_Pointer_Type is PLplot_Thin.Mask_Function_Pointer_Type; --- -- "Rename" callback for map functions plmap and plmeridians. --- subtype Map_Form_Function_Pointer_Type is Plplot_Thin.Map_Form_Function_Pointer_Type; + -- "Rename" callback for map functions plmap and plmeridians. + subtype Map_Form_Function_Pointer_Type is Plplot_Thin.Map_Form_Function_Pointer_Type; -------------------------------------------------------------------------------- -- Types and constants for thick binding -- @@ -220,6 +220,7 @@ -- definitions for the opt argument in plot3dc() and plsurf3d() -- DRAW_LINEX *must* be 1 and DRAW_LINEY *must* be 2, because of legacy code! + -- fix this Why is there no type declared for these? No_3D_Options : constant Integer := 0; -- None of the options Lines_Parallel_To_X : constant Integer := 1; -- draw lines parallel to the X axis Lines_Parallel_To_Y : constant Integer := 2; -- draw lines parallel to the Y axis @@ -283,6 +284,7 @@ -------------------------------------------------------------------------------- + -- fix this Why is there no style here? -- Flags for the opt argument in plhist -- Histogram_Default : constant Integer := 0; Histogram_Noscaling : constant Integer := 1; Modified: trunk/examples/ada/x19a.adb.cmake =================================================================== --- trunk/examples/ada/x19a.adb.cmake 2008-09-02 08:49:20 UTC (rev 8745) +++ trunk/examples/ada/x19a.adb.cmake 2008-09-03 09:42:31 UTC (rev 8746) @@ -3,7 +3,7 @@ -- Illustrates backdrop plotting of world, US maps. -- Contributed by Wesley Ebisuzaki. --- Copyright (C) 2007 Jerry Bauck +-- Copyright (C) 2008 Jerry Bauck -- This file is part of PLplot. Modified: trunk/examples/ada/xthick19a.adb.cmake =================================================================== --- trunk/examples/ada/xthick19a.adb.cmake 2008-09-02 08:49:20 UTC (rev 8745) +++ trunk/examples/ada/xthick19a.adb.cmake 2008-09-03 09:42:31 UTC (rev 8746) @@ -3,7 +3,7 @@ -- Illustrates backdrop plotting of world, US maps. -- Contributed by Wesley Ebisuzaki. --- Copyright (C) 2007 Jerry Bauck +-- Copyright (C) 2008 Jerry Bauck -- This file is part of PLplot. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jb...@us...> - 2008-09-04 20:55:46
|
Revision: 8749 http://plplot.svn.sourceforge.net/plplot/?rev=8749&view=rev Author: jbauck Date: 2008-09-04 20:55:52 +0000 (Thu, 04 Sep 2008) Log Message: ----------- Attempted to fix the problem with the callback in Ada examples 19. When C calls an Ada subprogram while passing an unconstrained array, even if C calling conventions are in force, there is no guarantee that anything will work since C has no way of passing the array start to Ada and Ada will just take a guess (worst case) or issue a warning or error (but not GNAT) or naively look up a bogus number. I have thus used a constrained array of bounds 0 .. 2000 for the mapping function called by plmap and plmeridians, in the API called mapform. There is a discussion of this issue at http://groups.google.com/group/comp.lang.ada/browse_thread/thread/0e5a3abec221df39?hl=en#. As an unrelated set of edits (included here because SVN write was down for maintenance earlier): Removed the requirement of with-ing PLplot_Auxiliary in user programs. PLplot_Auxiliary is still available as a convenience to the user but with reduced functionality, providing only vector and matrix maximum and minimum calculations. It is used in several of the examples as well as the thick bindings. Modified Paths: -------------- trunk/bindings/ada/plplot.ads.cmake trunk/bindings/ada/plplot_auxiliary.ads.cmake trunk/bindings/ada/plplot_thin.adb.cmake trunk/bindings/ada/plplot_thin.ads.cmake trunk/bindings/ada/plplot_traditional.ads.cmake trunk/examples/ada/x01a.adb.cmake trunk/examples/ada/x02a.adb.cmake trunk/examples/ada/x03a.adb.cmake trunk/examples/ada/x04a.adb.cmake trunk/examples/ada/x05a.adb.cmake trunk/examples/ada/x06a.adb.cmake trunk/examples/ada/x07a.adb.cmake trunk/examples/ada/x10a.adb.cmake trunk/examples/ada/x12a.adb.cmake trunk/examples/ada/x13a.adb.cmake trunk/examples/ada/x14a.adb.cmake trunk/examples/ada/x17a.adb.cmake trunk/examples/ada/x18a.adb.cmake trunk/examples/ada/x19a.adb.cmake trunk/examples/ada/x23a.adb.cmake trunk/examples/ada/x24a.adb.cmake trunk/examples/ada/x25a.adb.cmake trunk/examples/ada/x26a.adb.cmake trunk/examples/ada/x27a.adb.cmake trunk/examples/ada/x28a.adb.cmake trunk/examples/ada/x29a.adb.cmake trunk/examples/ada/x30a.adb.cmake trunk/examples/ada/xthick01a.adb.cmake trunk/examples/ada/xthick02a.adb.cmake trunk/examples/ada/xthick03a.adb.cmake trunk/examples/ada/xthick04a.adb.cmake trunk/examples/ada/xthick05a.adb.cmake trunk/examples/ada/xthick06a.adb.cmake trunk/examples/ada/xthick07a.adb.cmake trunk/examples/ada/xthick13a.adb.cmake trunk/examples/ada/xthick14a.adb.cmake trunk/examples/ada/xthick17a.adb.cmake trunk/examples/ada/xthick18a.adb.cmake trunk/examples/ada/xthick19a.adb.cmake trunk/examples/ada/xthick23a.adb.cmake trunk/examples/ada/xthick24a.adb.cmake trunk/examples/ada/xthick25a.adb.cmake trunk/examples/ada/xthick26a.adb.cmake trunk/examples/ada/xthick27a.adb.cmake trunk/examples/ada/xthick28a.adb.cmake trunk/examples/ada/xthick29a.adb.cmake trunk/examples/ada/xthick30a.adb.cmake Modified: trunk/bindings/ada/plplot.ads.cmake =================================================================== --- trunk/bindings/ada/plplot.ads.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/bindings/ada/plplot.ads.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -22,14 +22,12 @@ with PLplot_Thin, - PLplot_Auxiliary, System, Interfaces.C.Pointers, Ada.Strings.Unbounded, Ada.Strings.Maps; use PLplot_Thin, - PLplot_Auxiliary, Ada.Strings.Unbounded; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE @@ -39,6 +37,10 @@ package PLplot is + -- "Rename" some useful types from the thin binding. + subtype Boolean_Array_1D is PLplot_Thin.Boolean_Array_1D; + subtype Integer_Array_1D is PLplot_Thin.Integer_Array_1D; + -- "Rename" some types mainly used for contour plots and the like so that -- user programs can see them without with-ing PLplot_thin. It might be -- good to remove "use PLplot_Thin" for clarity since it is used in only @@ -70,6 +72,9 @@ -- "Rename" callback for map functions plmap and plmeridians. subtype Map_Form_Function_Pointer_Type is Plplot_Thin.Map_Form_Function_Pointer_Type; + + -- "Rename" the necessarily constrained array for mapping longitudes and latitudes. + subtype Map_Form_Constrained_Array is PLplot_Thin.Map_Form_Constrained_Array; -------------------------------------------------------------------------------- -- Types and constants for thick binding -- Modified: trunk/bindings/ada/plplot_auxiliary.ads.cmake =================================================================== --- trunk/bindings/ada/plplot_auxiliary.ads.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/bindings/ada/plplot_auxiliary.ads.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -53,8 +53,8 @@ @Ada_Is_Not_2007_Vector_Matrix_Declarations@ -- Other array types for the bindings. - type Boolean_Array_1D is array (Integer range <>) of Boolean; - type Integer_Array_1D is array (Integer range <>) of Integer; +-- type Boolean_Array_1D is array (Integer range <>) of Boolean; +-- type Integer_Array_1D is array (Integer range <>) of Integer; -------------------------------------------------------------------------------- @@ -83,14 +83,4 @@ -- Find maximum in a 2D array. function Matrix_Max(x : Real_Matrix) return Long_Float; - --------------------------------------------------------------------------------- --- String things useful in compiling the examples -- --------------------------------------------------------------------------------- - - -- Convenient string of length 80 - package Bounded_String_80 is - new Ada.Strings.Bounded.Generic_Bounded_Length(80); - subtype String_80 is Bounded_String_80.Bounded_String; - end PLplot_Auxiliary; Modified: trunk/bindings/ada/plplot_thin.adb.cmake =================================================================== --- trunk/bindings/ada/plplot_thin.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/bindings/ada/plplot_thin.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -21,11 +21,9 @@ -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA with - PLplot_Auxiliary, Ada.Text_IO, System.Address_To_Access_Conversions; use - PLplot_Auxiliary, Ada.Text_IO; package body PLplot_Thin is Modified: trunk/bindings/ada/plplot_thin.ads.cmake =================================================================== --- trunk/bindings/ada/plplot_thin.ads.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/bindings/ada/plplot_thin.ads.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -33,7 +33,6 @@ -- this is right. with - PLplot_Auxiliary, Interfaces.C, Interfaces.C.Pointers, System, @@ -41,7 +40,6 @@ Ada.Strings.Bounded, Ada.Strings.Unbounded; use - PLplot_Auxiliary, Interfaces.C, Ada.Text_IO, Ada.Strings.Bounded, @@ -59,9 +57,10 @@ PLtrue : constant Integer := 1; subtype PLBOOL is Integer range PLfalse..PLtrue; type PLUNICODE is mod 2**32; --- subtype Unsigned_Int is mod 2**32; -- for e.g. plseed --- subtype Unsigned_Int is Integer range 0 .. 2**31 - 1; -- for e.g. plseed fix this + type Boolean_Array_1D is array (Integer range <>) of Boolean; + type Integer_Array_1D is array (Integer range <>) of Integer; + subtype PL_Integer_Array is Integer_Array_1D; subtype PL_Float_Array is Real_Vector; subtype PL_Float_Array_2D is Real_Matrix; @@ -127,13 +126,24 @@ -- Returns 1 if point is to be plotted, 0 if not. type Mask_Function_Pointer_Type is access function (x, y : PLFLT) return Integer; - + -- Make a constrained array for use by plmap (Draw_Map) and + -- plmeridians (Draw_Latitude_Longitude). The reason that this is necessary + -- is that the callback structure for those routines requires that a C + -- subprogram calls an Ada subroutine *with an unconstrained array*. This + -- seems to be unique in the PLplot bindings. For a discussion of this, see + -- http://groups.google.com/group/comp.lang.ada/browse_thread/thread/0e5a3abec221df39?hl=en# + -- If the user needs to have a larger array, it will require making this + -- array longer, but we try to anticipate the most extreme situation here + -- without being too wasteful. Note that the user will typically use only a + -- portion of the array, beginning at index 0. + subtype Map_Form_Constrained_Array is Real_Vector(0 .. 2000); + -- Access-to-procedure type for plotting map outlines (continents). -- Length_Of_x is x'Length or y'Length; this is the easiest way to match the -- C formal arguments. type Map_Form_Function_Pointer_Type is access - procedure (Length_Of_x : Integer; x, y : in out Real_Vector); + procedure (Length_Of_x : Integer; x, y : in out Map_Form_Constrained_Array); pragma Convention(Convention => C, Entity => Map_Form_Function_Pointer_Type); Modified: trunk/bindings/ada/plplot_traditional.ads.cmake =================================================================== --- trunk/bindings/ada/plplot_traditional.ads.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/bindings/ada/plplot_traditional.ads.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -22,14 +22,12 @@ with PLplot_Thin, - PLplot_Auxiliary, System, Interfaces.C.Pointers, Ada.Strings.Unbounded, Ada.Strings.Maps; use PLplot_Thin, - PLplot_Auxiliary, Ada.Strings.Unbounded; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE @@ -39,6 +37,10 @@ package PLplot_Traditional is + -- "Rename" some useful types from the thin binding. + subtype Boolean_Array_1D is PLplot_Thin.Boolean_Array_1D; + subtype Integer_Array_1D is PLplot_Thin.Integer_Array_1D; + -- "Rename" some types mainly used for contour plots and the like so that -- user programs can see them without with-ing PLplot_thin. It might be -- good to remove "use PLplot_Thin" for clarity since it is used in only @@ -49,7 +51,7 @@ subtype Transformation_Data_Type_2 is Plplot_Thin.Transformation_Data_Type_2; subtype Graphics_Input_Record_Type is Plplot_Thin.PLGraphicsIn; - -- "Rename" the unicode type for characters. + -- "Rename" the unicode type for characters. subtype Unicode is PLplot_Thin.PLUNICODE; -- Rename Plplot_Thin.plfill so that a pointer to it can be passed to @@ -70,6 +72,9 @@ -- "Rename" callback for map functions plmap and plmeridians. subtype Map_Form_Function_Pointer_Type is Plplot_Thin.Map_Form_Function_Pointer_Type; + + -- "Rename" the necessarily constrained array for mapping longitudes and latitudes. + subtype Map_Form_Constrained_Array is PLplot_Thin.Map_Form_Constrained_Array; -------------------------------------------------------------------------------- -- Types and constants for thick binding -- Modified: trunk/examples/ada/x01a.adb.cmake =================================================================== --- trunk/examples/ada/x01a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/x01a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -24,14 +24,12 @@ Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; use Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. @@ -43,7 +41,6 @@ xscale, yscale, xoff, yoff : Long_Float; fontset : Integer := 1; notes : String := "Make sure you get it right!"; - ver : String_80; procedure plot1 is xmin, xmax, ymin, ymax : Long_Float; Modified: trunk/examples/ada/x02a.adb.cmake =================================================================== --- trunk/examples/ada/x02a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/x02a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -25,16 +25,14 @@ Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/x03a.adb.cmake =================================================================== --- trunk/examples/ada/x03a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/x03a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -26,15 +26,13 @@ Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/x04a.adb.cmake =================================================================== --- trunk/examples/ada/x04a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/x04a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -23,13 +23,11 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/x05a.adb.cmake =================================================================== --- trunk/examples/ada/x05a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/x05a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -24,13 +24,11 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/x06a.adb.cmake =================================================================== --- trunk/examples/ada/x06a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/x06a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -25,15 +25,13 @@ Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; use Ada.Strings, Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/x07a.adb.cmake =================================================================== --- trunk/examples/ada/x07a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/x07a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -25,15 +25,13 @@ Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; use Ada.Strings, Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/x10a.adb.cmake =================================================================== --- trunk/examples/ada/x10a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/x10a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -23,13 +23,11 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/x12a.adb.cmake =================================================================== --- trunk/examples/ada/x12a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/x12a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -25,16 +25,14 @@ Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/x13a.adb.cmake =================================================================== --- trunk/examples/ada/x13a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/x13a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -23,13 +23,11 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/x14a.adb.cmake =================================================================== --- trunk/examples/ada/x14a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/x14a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -31,8 +31,7 @@ Ada.Strings.Unbounded, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; use Ada.Text_IO, Ada.Numerics, @@ -40,8 +39,7 @@ Ada.Strings.Fixed, Ada.Strings.Unbounded, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/x17a.adb.cmake =================================================================== --- trunk/examples/ada/x17a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/x17a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -26,16 +26,14 @@ Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Numerics.Float_Random, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; use Ada.Text_IO, Ada.Strings.Unbounded, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Numerics.Float_Random, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/x18a.adb.cmake =================================================================== --- trunk/examples/ada/x18a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/x18a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -26,15 +26,13 @@ Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/x19a.adb.cmake =================================================================== --- trunk/examples/ada/x19a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/x19a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -24,13 +24,11 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. @@ -43,7 +41,7 @@ -- This spec is necessary in order to enforce C calling conventions, used -- in the callback by intervening C code. - procedure mapform19(n : Integer; x, y : in out Real_Vector); + procedure mapform19(n : Integer; x, y : in out Map_Form_Constrained_Array); pragma Convention(C, mapform19); -- Defines specific coordinate transformation for example 19. @@ -57,7 +55,7 @@ -- wrapper function inside plmap and plmeridians that has the "correct" C -- argument list, and then pass a pointer to _that_ when calling plmap and -- plmeridian. - procedure mapform19(n : Integer; x, y : in out Real_Vector) is + procedure mapform19(n : Integer; x, y : in out Map_Form_Constrained_Array) is xp, yp, radius : Long_Float; begin -- DO NOT use x'range for this loop because the C function which calls Modified: trunk/examples/ada/x23a.adb.cmake =================================================================== --- trunk/examples/ada/x23a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/x23a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -29,8 +29,7 @@ Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; use Ada.Text_IO, Ada.Integer_Text_IO, @@ -39,8 +38,7 @@ Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/x24a.adb.cmake =================================================================== --- trunk/examples/ada/x24a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/x24a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -21,11 +21,9 @@ -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA with - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; use - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/x25a.adb.cmake =================================================================== --- trunk/examples/ada/x25a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/x25a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -21,11 +21,9 @@ -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA with - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; use - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/x26a.adb.cmake =================================================================== --- trunk/examples/ada/x26a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/x26a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -57,13 +57,11 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/x27a.adb.cmake =================================================================== --- trunk/examples/ada/x27a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/x27a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -22,12 +22,10 @@ with Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; use Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/x28a.adb.cmake =================================================================== --- trunk/examples/ada/x28a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/x28a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -23,13 +23,11 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/x29a.adb.cmake =================================================================== --- trunk/examples/ada/x29a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/x29a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -24,14 +24,12 @@ Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Calendar, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Calendar, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/x30a.adb.cmake =================================================================== --- trunk/examples/ada/x30a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/x30a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -24,14 +24,12 @@ System, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; use System, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot_Traditional, - PLplot_Auxiliary; + PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/xthick01a.adb.cmake =================================================================== --- trunk/examples/ada/xthick01a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/xthick01a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -24,14 +24,12 @@ Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; use Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. @@ -43,7 +41,6 @@ xscale, yscale, xoff, yoff : Long_Float; fontset : Integer := 1; notes : String := "Make sure you get it right!"; - ver : String_80; procedure plot1 is xmin, xmax, ymin, ymax : Long_Float; Modified: trunk/examples/ada/xthick02a.adb.cmake =================================================================== --- trunk/examples/ada/xthick02a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/xthick02a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -25,16 +25,14 @@ Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, - PLplot, - PLplot_Auxiliary; + PLplot; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, - PLplot, - PLplot_Auxiliary; + PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/xthick03a.adb.cmake =================================================================== --- trunk/examples/ada/xthick03a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/xthick03a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -26,15 +26,13 @@ Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, - PLplot, - PLplot_Auxiliary; + PLplot; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, - PLplot, - PLplot_Auxiliary; + PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/xthick04a.adb.cmake =================================================================== --- trunk/examples/ada/xthick04a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/xthick04a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -23,13 +23,11 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/xthick05a.adb.cmake =================================================================== --- trunk/examples/ada/xthick05a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/xthick05a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -24,13 +24,11 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/xthick06a.adb.cmake =================================================================== --- trunk/examples/ada/xthick06a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/xthick06a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -25,15 +25,13 @@ Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; use Ada.Strings, Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/xthick07a.adb.cmake =================================================================== --- trunk/examples/ada/xthick07a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/xthick07a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -25,15 +25,13 @@ Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; use Ada.Strings, Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/xthick13a.adb.cmake =================================================================== --- trunk/examples/ada/xthick13a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/xthick13a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -23,13 +23,11 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/xthick14a.adb.cmake =================================================================== --- trunk/examples/ada/xthick14a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/xthick14a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -31,8 +31,7 @@ Ada.Strings.Unbounded, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; use Ada.Text_IO, Ada.Numerics, @@ -40,8 +39,7 @@ Ada.Strings.Fixed, Ada.Strings.Unbounded, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/xthick17a.adb.cmake =================================================================== --- trunk/examples/ada/xthick17a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/xthick17a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -26,16 +26,14 @@ Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Numerics.Float_Random, - PLplot, - PLplot_Auxiliary; + PLplot; use Ada.Text_IO, Ada.Strings.Unbounded, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Numerics.Float_Random, - PLplot, - PLplot_Auxiliary; + PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/xthick18a.adb.cmake =================================================================== --- trunk/examples/ada/xthick18a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/xthick18a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -26,15 +26,13 @@ Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, - PLplot, - PLplot_Auxiliary; + PLplot; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, - PLplot, - PLplot_Auxiliary; + PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/xthick19a.adb.cmake =================================================================== --- trunk/examples/ada/xthick19a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/xthick19a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -24,13 +24,11 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. @@ -43,7 +41,7 @@ -- This spec is necessary in order to enforce C calling conventions, used -- in the callback by intervening C code. - procedure mapform19(n : Integer; x, y : in out Real_Vector); + procedure mapform19(n : Integer; x, y : in out Map_Form_Constrained_Array); pragma Convention(C, mapform19); -- Defines specific coordinate transformation for example 19. @@ -57,7 +55,7 @@ -- wrapper function inside Draw_Map and Draw_Latitude_Longitude that has the "correct" C -- argument list, and then pass a pointer to _that_ when calling Draw_Map and -- plmeridian. - procedure mapform19(n : Integer; x, y : in out Real_Vector) is + procedure mapform19(n : Integer; x, y : in out Map_Form_Constrained_Array) is xp, yp, radius : Long_Float; begin -- DO NOT use x'range for this loop because the C function which calls Modified: trunk/examples/ada/xthick23a.adb.cmake =================================================================== --- trunk/examples/ada/xthick23a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/xthick23a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -29,8 +29,7 @@ Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; use Ada.Text_IO, Ada.Integer_Text_IO, @@ -39,8 +38,7 @@ Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/xthick24a.adb.cmake =================================================================== --- trunk/examples/ada/xthick24a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/xthick24a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -21,11 +21,9 @@ -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA with - PLplot, - PLplot_Auxiliary; + PLplot; use - PLplot, - PLplot_Auxiliary; + PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/xthick25a.adb.cmake =================================================================== --- trunk/examples/ada/xthick25a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/xthick25a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -21,11 +21,9 @@ -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA with - PLplot, - PLplot_Auxiliary; + PLplot; use - PLplot, - PLplot_Auxiliary; + PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/xthick26a.adb.cmake =================================================================== --- trunk/examples/ada/xthick26a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/xthick26a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -57,13 +57,11 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/xthick27a.adb.cmake =================================================================== --- trunk/examples/ada/xthick27a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/xthick27a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -22,12 +22,10 @@ with Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; use Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/xthick28a.adb.cmake =================================================================== --- trunk/examples/ada/xthick28a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/xthick28a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -23,13 +23,11 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/xthick29a.adb.cmake =================================================================== --- trunk/examples/ada/xthick29a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/xthick29a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -24,14 +24,12 @@ Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Calendar, - PLplot, - PLplot_Auxiliary; + PLplot; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Calendar, - PLplot, - PLplot_Auxiliary; + PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. Modified: trunk/examples/ada/xthick30a.adb.cmake =================================================================== --- trunk/examples/ada/xthick30a.adb.cmake 2008-09-04 19:06:12 UTC (rev 8748) +++ trunk/examples/ada/xthick30a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) @@ -24,14 +24,12 @@ System, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; use System, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, - PLplot, - PLplot_Auxiliary; + PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE -- DEFINITIONS, FOR EXAMPLE, IF IT IS NOT ADA 2005 WITH ANNEX G.3 COMPLIANCE. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jb...@us...> - 2008-09-05 10:11:09
|
Revision: 8750 http://plplot.svn.sourceforge.net/plplot/?rev=8750&view=rev Author: jbauck Date: 2008-09-05 10:11:15 +0000 (Fri, 05 Sep 2008) Log Message: ----------- Partially unwound the attempt to eliminate PLplot_Auxiliary.ad? from the user program as described in my last commit. PLplot_Auxiliary.ad? is tightly connected to being preprocessed from PLplot_Auxlliary.ad?.cmake to best take advantage of Ada 05 while still working with Ada 95 and my last commit messed this up. Modified Paths: -------------- trunk/bindings/ada/plplot.ads.cmake trunk/bindings/ada/plplot_auxiliary.ads.cmake trunk/bindings/ada/plplot_thin.adb.cmake trunk/bindings/ada/plplot_thin.ads.cmake trunk/bindings/ada/plplot_traditional.ads.cmake trunk/examples/ada/x01a.adb.cmake trunk/examples/ada/x02a.adb.cmake trunk/examples/ada/x03a.adb.cmake trunk/examples/ada/x04a.adb.cmake trunk/examples/ada/x05a.adb.cmake trunk/examples/ada/x06a.adb.cmake trunk/examples/ada/x07a.adb.cmake trunk/examples/ada/x10a.adb.cmake trunk/examples/ada/x12a.adb.cmake trunk/examples/ada/x13a.adb.cmake trunk/examples/ada/x14a.adb.cmake trunk/examples/ada/x17a.adb.cmake trunk/examples/ada/x18a.adb.cmake trunk/examples/ada/x19a.adb.cmake trunk/examples/ada/x23a.adb.cmake trunk/examples/ada/x24a.adb.cmake trunk/examples/ada/x25a.adb.cmake trunk/examples/ada/x26a.adb.cmake trunk/examples/ada/x27a.adb.cmake trunk/examples/ada/x28a.adb.cmake trunk/examples/ada/x29a.adb.cmake trunk/examples/ada/x30a.adb.cmake trunk/examples/ada/xthick01a.adb.cmake trunk/examples/ada/xthick02a.adb.cmake trunk/examples/ada/xthick03a.adb.cmake trunk/examples/ada/xthick04a.adb.cmake trunk/examples/ada/xthick05a.adb.cmake trunk/examples/ada/xthick06a.adb.cmake trunk/examples/ada/xthick07a.adb.cmake trunk/examples/ada/xthick10a.adb.cmake trunk/examples/ada/xthick13a.adb.cmake trunk/examples/ada/xthick14a.adb.cmake trunk/examples/ada/xthick17a.adb.cmake trunk/examples/ada/xthick18a.adb.cmake trunk/examples/ada/xthick19a.adb.cmake trunk/examples/ada/xthick23a.adb.cmake trunk/examples/ada/xthick24a.adb.cmake trunk/examples/ada/xthick25a.adb.cmake trunk/examples/ada/xthick26a.adb.cmake trunk/examples/ada/xthick27a.adb.cmake trunk/examples/ada/xthick28a.adb.cmake trunk/examples/ada/xthick29a.adb.cmake trunk/examples/ada/xthick30a.adb.cmake Modified: trunk/bindings/ada/plplot.ads.cmake =================================================================== --- trunk/bindings/ada/plplot.ads.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/bindings/ada/plplot.ads.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -22,12 +22,14 @@ with PLplot_Thin, + PLplot_Auxiliary, System, Interfaces.C.Pointers, Ada.Strings.Unbounded, Ada.Strings.Maps; use PLplot_Thin, + PLplot_Auxiliary, Ada.Strings.Unbounded; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/bindings/ada/plplot_auxiliary.ads.cmake =================================================================== --- trunk/bindings/ada/plplot_auxiliary.ads.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/bindings/ada/plplot_auxiliary.ads.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -52,11 +52,7 @@ -- type Real_Matrix is array (Integer range <>, Integer range <>) of Long_Float; @Ada_Is_Not_2007_Vector_Matrix_Declarations@ - -- Other array types for the bindings. --- type Boolean_Array_1D is array (Integer range <>) of Boolean; --- type Integer_Array_1D is array (Integer range <>) of Integer; - -------------------------------------------------------------------------------- -- Utility procedures useful in compiling the examples -- -------------------------------------------------------------------------------- Modified: trunk/bindings/ada/plplot_thin.adb.cmake =================================================================== --- trunk/bindings/ada/plplot_thin.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/bindings/ada/plplot_thin.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -22,8 +22,10 @@ with Ada.Text_IO, + PLplot_Auxiliary, System.Address_To_Access_Conversions; use + PLplot_Auxiliary, Ada.Text_IO; package body PLplot_Thin is Modified: trunk/bindings/ada/plplot_thin.ads.cmake =================================================================== --- trunk/bindings/ada/plplot_thin.ads.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/bindings/ada/plplot_thin.ads.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -35,12 +35,14 @@ with Interfaces.C, Interfaces.C.Pointers, + PLplot_Auxiliary, System, Ada.Text_IO, Ada.Strings.Bounded, Ada.Strings.Unbounded; use Interfaces.C, + PLplot_Auxiliary, Ada.Text_IO, Ada.Strings.Bounded, Ada.Strings.Unbounded; Modified: trunk/bindings/ada/plplot_traditional.ads.cmake =================================================================== --- trunk/bindings/ada/plplot_traditional.ads.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/bindings/ada/plplot_traditional.ads.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -22,12 +22,14 @@ with PLplot_Thin, + PLplot_Auxiliary, System, Interfaces.C.Pointers, Ada.Strings.Unbounded, Ada.Strings.Maps; use PLplot_Thin, + PLplot_Auxiliary, Ada.Strings.Unbounded; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/x01a.adb.cmake =================================================================== --- trunk/examples/ada/x01a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/x01a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -24,11 +24,13 @@ Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; use Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/x02a.adb.cmake =================================================================== --- trunk/examples/ada/x02a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/x02a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -25,6 +25,7 @@ Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, + PLplot_Auxiliary, PLplot_Traditional; use @@ -32,6 +33,7 @@ Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, + PLplot_Auxiliary, PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/x03a.adb.cmake =================================================================== --- trunk/examples/ada/x03a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/x03a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -26,12 +26,14 @@ Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, + PLplot_Auxiliary, PLplot_Traditional; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, + PLplot_Auxiliary, PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/x04a.adb.cmake =================================================================== --- trunk/examples/ada/x04a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/x04a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -23,10 +23,12 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/x05a.adb.cmake =================================================================== --- trunk/examples/ada/x05a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/x05a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -24,10 +24,12 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/x06a.adb.cmake =================================================================== --- trunk/examples/ada/x06a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/x06a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -25,12 +25,14 @@ Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; use Ada.Strings, Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/x07a.adb.cmake =================================================================== --- trunk/examples/ada/x07a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/x07a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -25,12 +25,14 @@ Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; use Ada.Strings, Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/x10a.adb.cmake =================================================================== --- trunk/examples/ada/x10a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/x10a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -23,10 +23,12 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/x12a.adb.cmake =================================================================== --- trunk/examples/ada/x12a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/x12a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -25,6 +25,7 @@ Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, + PLplot_Auxiliary, PLplot_Traditional; use @@ -32,6 +33,7 @@ Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, + PLplot_Auxiliary, PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/x13a.adb.cmake =================================================================== --- trunk/examples/ada/x13a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/x13a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -23,10 +23,12 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/x14a.adb.cmake =================================================================== --- trunk/examples/ada/x14a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/x14a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -31,6 +31,7 @@ Ada.Strings.Unbounded, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; use Ada.Text_IO, @@ -39,6 +40,7 @@ Ada.Strings.Fixed, Ada.Strings.Unbounded, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/x17a.adb.cmake =================================================================== --- trunk/examples/ada/x17a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/x17a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -26,6 +26,7 @@ Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Numerics.Float_Random, + PLplot_Auxiliary, PLplot_Traditional; use Ada.Text_IO, @@ -33,6 +34,7 @@ Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Numerics.Float_Random, + PLplot_Auxiliary, PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/x18a.adb.cmake =================================================================== --- trunk/examples/ada/x18a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/x18a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -26,12 +26,14 @@ Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, + PLplot_Auxiliary, PLplot_Traditional; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, + PLplot_Auxiliary, PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/x19a.adb.cmake =================================================================== --- trunk/examples/ada/x19a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/x19a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -24,10 +24,12 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/x23a.adb.cmake =================================================================== --- trunk/examples/ada/x23a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/x23a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -29,6 +29,7 @@ Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; use Ada.Text_IO, @@ -38,6 +39,7 @@ Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/x24a.adb.cmake =================================================================== --- trunk/examples/ada/x24a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/x24a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -21,8 +21,10 @@ -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA with + PLplot_Auxiliary, PLplot_Traditional; use + PLplot_Auxiliary, PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/x25a.adb.cmake =================================================================== --- trunk/examples/ada/x25a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/x25a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -21,8 +21,10 @@ -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA with + PLplot_Auxiliary, PLplot_Traditional; use + PLplot_Auxiliary, PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/x26a.adb.cmake =================================================================== --- trunk/examples/ada/x26a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/x26a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -57,10 +57,12 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/x27a.adb.cmake =================================================================== --- trunk/examples/ada/x27a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/x27a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -22,9 +22,11 @@ with Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; use Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/x28a.adb.cmake =================================================================== --- trunk/examples/ada/x28a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/x28a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -23,10 +23,12 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/x29a.adb.cmake =================================================================== --- trunk/examples/ada/x29a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/x29a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -24,11 +24,13 @@ Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Calendar, + PLplot_Auxiliary, PLplot_Traditional; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Calendar, + PLplot_Auxiliary, PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/x30a.adb.cmake =================================================================== --- trunk/examples/ada/x30a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/x30a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -24,11 +24,13 @@ System, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; use System, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot_Traditional; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/xthick01a.adb.cmake =================================================================== --- trunk/examples/ada/xthick01a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/xthick01a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -24,11 +24,13 @@ Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; use Ada.Text_IO, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/xthick02a.adb.cmake =================================================================== --- trunk/examples/ada/xthick02a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/xthick02a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -25,6 +25,7 @@ Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, + PLplot_Auxiliary, PLplot; use @@ -32,6 +33,7 @@ Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, + PLplot_Auxiliary, PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/xthick03a.adb.cmake =================================================================== --- trunk/examples/ada/xthick03a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/xthick03a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -26,12 +26,14 @@ Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, + PLplot_Auxiliary, PLplot; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, + PLplot_Auxiliary, PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/xthick04a.adb.cmake =================================================================== --- trunk/examples/ada/xthick04a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/xthick04a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -23,10 +23,12 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/xthick05a.adb.cmake =================================================================== --- trunk/examples/ada/xthick05a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/xthick05a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -24,10 +24,12 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/xthick06a.adb.cmake =================================================================== --- trunk/examples/ada/xthick06a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/xthick06a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -25,12 +25,14 @@ Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; use Ada.Strings, Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/xthick07a.adb.cmake =================================================================== --- trunk/examples/ada/xthick07a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/xthick07a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -25,12 +25,14 @@ Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; use Ada.Strings, Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/xthick10a.adb.cmake =================================================================== --- trunk/examples/ada/xthick10a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/xthick10a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -23,10 +23,12 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/xthick13a.adb.cmake =================================================================== --- trunk/examples/ada/xthick13a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/xthick13a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -23,10 +23,12 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/xthick14a.adb.cmake =================================================================== --- trunk/examples/ada/xthick14a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/xthick14a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -31,6 +31,7 @@ Ada.Strings.Unbounded, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; use Ada.Text_IO, @@ -39,6 +40,7 @@ Ada.Strings.Fixed, Ada.Strings.Unbounded, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/xthick17a.adb.cmake =================================================================== --- trunk/examples/ada/xthick17a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/xthick17a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -26,6 +26,7 @@ Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Numerics.Float_Random, + PLplot_Auxiliary, PLplot; use Ada.Text_IO, @@ -33,6 +34,7 @@ Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Numerics.Float_Random, + PLplot_Auxiliary, PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/xthick18a.adb.cmake =================================================================== --- trunk/examples/ada/xthick18a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/xthick18a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -26,12 +26,14 @@ Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, + PLplot_Auxiliary, PLplot; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Strings, Ada.Strings.Fixed, + PLplot_Auxiliary, PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/xthick19a.adb.cmake =================================================================== --- trunk/examples/ada/xthick19a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/xthick19a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -24,10 +24,12 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/xthick23a.adb.cmake =================================================================== --- trunk/examples/ada/xthick23a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/xthick23a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -29,6 +29,7 @@ Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; use Ada.Text_IO, @@ -38,6 +39,7 @@ Ada.Strings.Fixed, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/xthick24a.adb.cmake =================================================================== --- trunk/examples/ada/xthick24a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/xthick24a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -21,8 +21,10 @@ -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA with + PLplot_Auxiliary, PLplot; use + PLplot_Auxiliary, PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/xthick25a.adb.cmake =================================================================== --- trunk/examples/ada/xthick25a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/xthick25a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -21,8 +21,10 @@ -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA with + PLplot_Auxiliary, PLplot; use + PLplot_Auxiliary, PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/xthick26a.adb.cmake =================================================================== --- trunk/examples/ada/xthick26a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/xthick26a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -57,10 +57,12 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/xthick27a.adb.cmake =================================================================== --- trunk/examples/ada/xthick27a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/xthick27a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -22,9 +22,11 @@ with Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; use Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/xthick28a.adb.cmake =================================================================== --- trunk/examples/ada/xthick28a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/xthick28a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -23,10 +23,12 @@ with Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/xthick29a.adb.cmake =================================================================== --- trunk/examples/ada/xthick29a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/xthick29a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -24,11 +24,13 @@ Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Calendar, + PLplot_Auxiliary, PLplot; use Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, Ada.Calendar, + PLplot_Auxiliary, PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE Modified: trunk/examples/ada/xthick30a.adb.cmake =================================================================== --- trunk/examples/ada/xthick30a.adb.cmake 2008-09-04 20:55:52 UTC (rev 8749) +++ trunk/examples/ada/xthick30a.adb.cmake 2008-09-05 10:11:15 UTC (rev 8750) @@ -24,11 +24,13 @@ System, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; use System, Ada.Numerics, Ada.Numerics.Long_Elementary_Functions, + PLplot_Auxiliary, PLplot; -- COMMENT THIS LINE IF YOUR COMPILER DOES NOT INCLUDE THESE This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2008-09-09 09:16:47
|
Revision: 8758 http://plplot.svn.sourceforge.net/plplot/?rev=8758&view=rev Author: andrewross Date: 2008-09-09 09:16:57 +0000 (Tue, 09 Sep 2008) Log Message: ----------- Some further fixes required to get gcc visibility support to work using -fvisibility=hidden. These are mostly to do with dynamic drivers. Since these don't work on Windows (?) the import / export macros are not in place. There is also a fix for plcore where the -DMAKINGPLDLL options were being overwritten within src/CMakeLists.txt. This only fixes the ps driver as a proof of concept. For now you will need to disable all other drivers and all bindings. To test you need to do export CC="-fvisibility=hidden" before running cmake. With this, ctest passes all C example tests fine. At the least all drivers will have to ensure they export plD_DEVICE_INFO_xxx plD_dispatch_init_xxx Modified Paths: -------------- trunk/drivers/CMakeLists.txt trunk/drivers/ps.c trunk/include/plplotP.h trunk/include/plstrm.h trunk/src/CMakeLists.txt Modified: trunk/drivers/CMakeLists.txt =================================================================== --- trunk/drivers/CMakeLists.txt 2008-09-09 06:38:21 UTC (rev 8757) +++ trunk/drivers/CMakeLists.txt 2008-09-09 09:16:57 UTC (rev 8758) @@ -27,7 +27,7 @@ if(ENABLE_DYNDRIVERS) set_source_files_properties( get-drv-info.c - PROPERTIES COMPILE_FLAGS "-I${LTDL_INCLUDE_DIR}" + PROPERTIES COMPILE_FLAGS "-I${LTDL_INCLUDE_DIR} -DUSINGPLDLL" ) include_directories( @@ -63,9 +63,14 @@ if(${SOURCE_ROOT_NAME}_COMPILE_FLAGS) set_source_files_properties( ${${SOURCE_ROOT_NAME}_SOURCE} - PROPERTIES COMPILE_FLAGS ${${SOURCE_ROOT_NAME}_COMPILE_FLAGS} + PROPERTIES COMPILE_FLAGS "${${SOURCE_ROOT_NAME}_COMPILE_FLAGS} -DUSINGPLDLL" ) #message("${SOURCE_ROOT_NAME}_COMPILE_FLAGS = ${${SOURCE_ROOT_NAME}_COMPILE_FLAGS}") + else(${SOURCE_ROOT_NAME}_COMPILE_FLAGS) + set_source_files_properties( + ${${SOURCE_ROOT_NAME}_SOURCE} + PROPERTIES COMPILE_FLAGS "-DUSINGPLDLL" + ) endif(${SOURCE_ROOT_NAME}_COMPILE_FLAGS) add_library(${SOURCE_ROOT_NAME} MODULE ${${SOURCE_ROOT_NAME}_SOURCE}) # ${SOURCE_ROOT_NAME}_LINK_FLAGS is ideally a list of the full path names Modified: trunk/drivers/ps.c =================================================================== --- trunk/drivers/ps.c 2008-09-09 06:38:21 UTC (rev 8757) +++ trunk/drivers/ps.c 2008-09-09 09:16:57 UTC (rev 8758) @@ -49,15 +49,15 @@ /* Device info */ -const char* plD_DEVICE_INFO_ps = +PLDLLEXPORT const char * plD_DEVICE_INFO_ps = "ps:PostScript File (monochrome):0:ps:29:psm\n" "psc:PostScript File (color):0:ps:30:psc"; /* Prototypes for functions in this file. */ -void plD_dispatch_init_psm ( PLDispatchTable *pdt ); -void plD_dispatch_init_psc ( PLDispatchTable *pdt ); +PLDLLEXPORT void plD_dispatch_init_psm ( PLDispatchTable *pdt ); +PLDLLEXPORT void plD_dispatch_init_psc ( PLDispatchTable *pdt ); static char *ps_getdate (void); static void ps_init (PLStream *); Modified: trunk/include/plplotP.h =================================================================== --- trunk/include/plplotP.h 2008-09-09 06:38:21 UTC (rev 8757) +++ trunk/include/plplotP.h 2008-09-09 09:16:57 UTC (rev 8758) @@ -174,6 +174,8 @@ #define pl_fgetpos(a,b) (-1L == (*b = ftell(a))) #endif +#include "pldll.h" + /* Include all externally-visible definitions and prototypes */ /* plplot.h also includes some handy system header files */ @@ -533,7 +535,7 @@ /* Driver interface filter -- passes all coordinates through a variety of filters. */ -void +PLDLLIMPEXP void difilt(PLINT *, PLINT *, PLINT, PLINT *, PLINT *, PLINT *, PLINT *); @@ -580,7 +582,7 @@ /* parse driver specific options, as in -drvopt <option[=value]>* */ -int +PLDLLIMPEXP int plParseDrvOpts(DrvOpt *); /* give help on driver specific options */ @@ -671,7 +673,7 @@ /* All the drivers call this to set physical pixels/mm. */ -void +PLDLLIMPEXP void plP_setpxl(PLFLT xpmm0, PLFLT ypmm0); /* Get background parameters (including line width) for 3d plot. */ @@ -711,7 +713,7 @@ /* Sets up physical limits of plotting device. */ -void +PLDLLIMPEXP void plP_setphy(PLINT xmin, PLINT xmax, PLINT ymin, PLINT ymax); /* Set up the subpage boundaries according to the current subpage selected */ @@ -1016,7 +1018,7 @@ } FCI_to_FontName_Table; /* Internal function to obtain a pointer to a valid font name. */ -char * +PLDLLIMPEXP char * plP_FCI2FontName ( PLUNICODE fci, const FCI_to_FontName_Table lookup[], const int nlookup); @@ -1051,7 +1053,7 @@ /* get drivers directory */ #ifdef ENABLE_DYNDRIVERS -char* +PLDLLIMPEXP char* plGetDrvDir (void); #endif Modified: trunk/include/plstrm.h =================================================================== --- trunk/include/plstrm.h 2008-09-09 06:38:21 UTC (rev 8757) +++ trunk/include/plstrm.h 2008-09-09 09:16:57 UTC (rev 8758) @@ -734,7 +734,7 @@ /* Opens file for output, prompting if not set. */ -void +PLDLLIMPEXP void plOpenFile(PLStream *pls); /* Sets up next file member name (in pls->FileName), but does not open it. */ @@ -749,17 +749,17 @@ /* Initializes family file parameters. */ -void +PLDLLIMPEXP void plFamInit(PLStream *pls); /* Starts new member file of family file set if necessary. */ -void +PLDLLIMPEXP void plGetFam(PLStream *pls); /* Rotates physical coordinates if necessary for given orientation. */ -void +PLDLLIMPEXP void plRotPhy(PLINT orient, PLINT xmin, PLINT ymin, PLINT xmax, PLINT ymax, PLINT *px, PLINT *py); Modified: trunk/src/CMakeLists.txt =================================================================== --- trunk/src/CMakeLists.txt 2008-09-09 06:38:21 UTC (rev 8757) +++ trunk/src/CMakeLists.txt 2008-09-09 09:16:57 UTC (rev 8758) @@ -57,9 +57,10 @@ endif(BUILD_SHARED_LIBS) if(ENABLE_DYNDRIVERS) + get_source_file_property(PLCORE_COMPILE_PROPS plcore.c COMPILE_FLAGS) set_source_files_properties( plcore.c - PROPERTIES COMPILE_FLAGS "-I${LTDL_INCLUDE_DIR}" + PROPERTIES COMPILE_FLAGS "${PLCORE_COMPILE_PROPS} -I${LTDL_INCLUDE_DIR}" ) else(ENABLE_DYNDRIVERS) if(ENABLE_tcl) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2008-09-09 09:55:39
|
Revision: 8759 http://plplot.svn.sourceforge.net/plplot/?rev=8759&view=rev Author: andrewross Date: 2008-09-09 09:55:50 +0000 (Tue, 09 Sep 2008) Log Message: ----------- Fix tcl / tk bindings to work with gcc -fvisibility=hidden flag. Modified Paths: -------------- trunk/bindings/tcl/CMakeLists.txt trunk/bindings/tk/CMakeLists.txt trunk/bindings/tk/pltk.h trunk/bindings/tk/tkMain.c trunk/include/pdf.h trunk/include/plplotP.h Modified: trunk/bindings/tcl/CMakeLists.txt =================================================================== --- trunk/bindings/tcl/CMakeLists.txt 2008-09-09 09:16:57 UTC (rev 8758) +++ trunk/bindings/tcl/CMakeLists.txt 2008-09-09 09:55:50 UTC (rev 8759) @@ -39,15 +39,8 @@ "-I${TCL_INCLUDE_PATH}" ) -if(WIN32 AND BUILD_SHARED_LIBS) - SET(libvar "tclmatrix${LIB_TAG}_LIB_SRCS") - include_directories( - ${CMAKE_SOURCE_DIR}/include - ) -endif(WIN32 AND BUILD_SHARED_LIBS) - if(BUILD_SHARED_LIBS) - SET_SOURCE_FILES_PROPERTIES(${${libvar}} + SET_SOURCE_FILES_PROPERTIES(${tclmatrix${LIB_TAG}_LIB_SRCS} PROPERTIES COMPILE_FLAGS "-DMAKINGPLDLL" ) endif(BUILD_SHARED_LIBS) @@ -162,6 +155,11 @@ libplplottcltk${LIB_TAG}_COMPILE_FLAGS "${libplplottcltk${LIB_TAG}_COMPILE_FLAGS} ${TKLIB_COMPILE_FLAGS}" ) + if(BUILD_SHARED_LIBS) + set_source_files_properties(${plplottcltk${LIB_TAG}_LIB_SRCS} + PROPERTIES COMPILE_FLAGS "-DUSINGPLDLL" + ) + endif(BUILD_SHARED_LIBS) set(plplottcltk${LIB_TAG}_link_libraries ${plplottcltk${LIB_TAG}_link_libraries} ${TK_LIBRARY} Modified: trunk/bindings/tk/CMakeLists.txt =================================================================== --- trunk/bindings/tk/CMakeLists.txt 2008-09-09 09:16:57 UTC (rev 8758) +++ trunk/bindings/tk/CMakeLists.txt 2008-09-09 09:55:50 UTC (rev 8759) @@ -95,6 +95,12 @@ ${CMAKE_BINARY_DIR}/include ) + + if(BUILD_SHARED_LIBS) + SET_SOURCE_FILES_PROPERTIES(plserver.c + PROPERTIES COMPILE_FLAGS "-DUSINGPLDLL" ) + endif(BUILD_SHARED_LIBS) + add_executable(plserver plserver.c) target_link_libraries(plserver plplot${LIB_TAG} plplottcltk${LIB_TAG}) Modified: trunk/bindings/tk/pltk.h =================================================================== --- trunk/bindings/tk/pltk.h 2008-09-09 09:16:57 UTC (rev 8758) +++ trunk/bindings/tk/pltk.h 2008-09-09 09:55:50 UTC (rev 8759) @@ -23,12 +23,12 @@ #define TCL_STORAGE_CLASS DLLEXPORT #endif /* BUILD_Vfs */ -EXTERN int +EXTERN PLDLLIMPEXP int Pltk_Init( Tcl_Interp *interp ); /* Main program for wish, with PLplot extensions. */ -int +EXTERN PLDLLIMPEXP int pltkMain(int argc, const char **argv, char *RcFileName, int (*AppInit)(Tcl_Interp *interp)); Modified: trunk/bindings/tk/tkMain.c =================================================================== --- trunk/bindings/tk/tkMain.c 2008-09-09 09:16:57 UTC (rev 8758) +++ trunk/bindings/tk/tkMain.c 2008-09-09 09:55:50 UTC (rev 8759) @@ -176,7 +176,7 @@ *---------------------------------------------------------------------- */ -int +PLDLLIMPEXP int pltkMain(int argc, const char **argv, char *RcFileName, int (*AppInit)(Tcl_Interp *interp)) { Modified: trunk/include/pdf.h =================================================================== --- trunk/include/pdf.h 2008-09-09 09:16:57 UTC (rev 8758) +++ trunk/include/pdf.h 2008-09-09 09:55:50 UTC (rev 8759) @@ -84,14 +84,14 @@ void pdf_set PLARGS((char *option, int value)); PDFstrm *pdf_fopen PLARGS((const char *fileName, const char *mode)); -PDFstrm *pdf_bopen PLARGS((U_CHAR *buffer, long bufmax)); +PLDLLIMPEXP PDFstrm *pdf_bopen PLARGS((U_CHAR *buffer, long bufmax)); PLDLLIMPEXP PDFstrm *pdf_finit PLARGS((FILE *file)); PDFstrm *plLibOpenPdfstrm PLARGS((const char *fn)); PLDLLIMPEXP int pdf_close PLARGS((PDFstrm *pdfs)); int pdf_putc PLARGS((int c, PDFstrm *pdfs)); -int pdf_getc PLARGS((PDFstrm *pdfs)); -int pdf_ungetc PLARGS((int c, PDFstrm *pdfs)); +PLDLLIMPEXP int pdf_getc PLARGS((PDFstrm *pdfs)); +PLDLLIMPEXP int pdf_ungetc PLARGS((int c, PDFstrm *pdfs)); int pdf_rdx PLARGS((U_CHAR *x, long nitems, PDFstrm *pdfs)); PLDLLIMPEXP int pdf_rd_header PLARGS((PDFstrm *pdfs, char *header)); Modified: trunk/include/plplotP.h =================================================================== --- trunk/include/plplotP.h 2008-09-09 09:16:57 UTC (rev 8758) +++ trunk/include/plplotP.h 2008-09-09 09:55:50 UTC (rev 8759) @@ -507,7 +507,7 @@ /* Bin up cmap 1 space and assign colors to make inverse mapping easy. */ -void +PLDLLIMPEXP void plcmap1_calc(void); /* Draws a slanting tick at position (mx,my) (measured in mm) of */ @@ -924,7 +924,7 @@ /* Escape function, for driver-specific commands. */ -void +PLDLLIMPEXP void plP_esc(PLINT op, void *ptr); /* Set up plot window parameters. */ @@ -939,17 +939,17 @@ /* Does required startup initialization of library. */ -void +PLDLLIMPEXP void pllib_init(void); /* Does preliminary setup of device driver. */ -void +PLDLLIMPEXP void pllib_devinit(void); /* Utility to copy one PLColor to another. */ -void +PLDLLIMPEXP void pl_cpcolor(PLColor *to, PLColor *from); /* Does required startup initialization of a stream. */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2008-09-09 12:51:16
|
Revision: 8760 http://plplot.svn.sourceforge.net/plplot/?rev=8760&view=rev Author: andrewross Date: 2008-09-09 12:51:18 +0000 (Tue, 09 Sep 2008) Log Message: ----------- Fix up remaining drivers so that they can be compiled with -fvisibility=hidden. Modified Paths: -------------- trunk/bindings/tcl/pltcl.h trunk/drivers/aqt.c trunk/drivers/cairo.c trunk/drivers/cgm.c trunk/drivers/dg300.c trunk/drivers/gcw.c trunk/drivers/gd.c trunk/drivers/gnome.c trunk/drivers/hpgl.c trunk/drivers/impress.c trunk/drivers/linuxvga.c trunk/drivers/ljii.c trunk/drivers/ljiip.c trunk/drivers/mem.c trunk/drivers/ntk.c trunk/drivers/null.c trunk/drivers/pbm.c trunk/drivers/pdf.c trunk/drivers/plmeta.c trunk/drivers/pstex.c trunk/drivers/psttf.cc trunk/drivers/svg.c trunk/drivers/tek.c trunk/drivers/tk.c trunk/drivers/tkwin.c trunk/drivers/wingcc.c trunk/drivers/wxwidgets.cpp trunk/drivers/wxwidgets.h trunk/drivers/xfig.c trunk/drivers/xwin.c trunk/drivers/xwinttf.c trunk/include/plplotP.h trunk/src/CMakeLists.txt trunk/src/plfreetype.c Modified: trunk/bindings/tcl/pltcl.h =================================================================== --- trunk/bindings/tcl/pltcl.h 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/bindings/tcl/pltcl.h 2008-09-09 12:51:18 UTC (rev 8760) @@ -49,7 +49,7 @@ /* Tcl command -- wait until the specified condition is satisfied. */ -int +PLDLLIMPEXP int plWait_Until(ClientData, Tcl_Interp *, int, const char **); /* Tcl command -- return the IP address for the current host. */ Modified: trunk/drivers/aqt.c =================================================================== --- trunk/drivers/aqt.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/aqt.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -51,7 +51,7 @@ static NSAutoreleasePool *arpool; /* Objective-C autorelease pool */ static id adapter; /* Adapter object */ -const char* plD_DEVICE_INFO_aqt = "aqt:AquaTerm (Mac OS X):1:aqt:50:aqt"; +PLDLLEXPORT const char* plD_DEVICE_INFO_aqt = "aqt:AquaTerm (Mac OS X):1:aqt:50:aqt"; static int currentPlot = 0; static int maxWindows = 30; @@ -186,7 +186,7 @@ /* PLplot interface functions */ -void plD_dispatch_init_aqt (PLDispatchTable *pdt); +PLDLLEXPORT void plD_dispatch_init_aqt (PLDispatchTable *pdt); void plD_init_aqt (PLStream *); void plD_line_aqt (PLStream *, short, short, short, short); void plD_polyline_aqt (PLStream *, short *, short *, PLINT); Modified: trunk/drivers/cairo.c =================================================================== --- trunk/drivers/cairo.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/cairo.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -100,7 +100,7 @@ #endif } PLCairo; -const char* plD_DEVICE_INFO_cairo = +PLDLLEXPORT const char* plD_DEVICE_INFO_cairo = #if defined(PLD_xcairo) "xcairo:Cairo X Windows Driver:1:cairo:59:xcairo\n" #endif @@ -796,7 +796,7 @@ static int XScreen; static Window rootWindow; -void plD_dispatch_init_xcairo (PLDispatchTable *pdt); +PLDLLEXPORT void plD_dispatch_init_xcairo (PLDispatchTable *pdt); void plD_init_xcairo (PLStream *); void plD_eop_xcairo (PLStream *); void plD_tidy_xcairo (PLStream *); @@ -1126,7 +1126,7 @@ #if defined(PLD_pdfcairo) -void plD_dispatch_init_pdfcairo (PLDispatchTable *pdt); +PLDLLEXPORT void plD_dispatch_init_pdfcairo (PLDispatchTable *pdt); void plD_init_pdfcairo (PLStream *); /*--------------------------------------------------------------------- @@ -1197,7 +1197,7 @@ #if defined(PLD_pscairo) -void plD_dispatch_init_pscairo (PLDispatchTable *pdt); +PLDLLEXPORT void plD_dispatch_init_pscairo (PLDispatchTable *pdt); void plD_init_pscairo (PLStream *); /*--------------------------------------------------------------------- @@ -1270,7 +1270,7 @@ #if defined(PLD_svgcairo) -void plD_dispatch_init_svgcairo (PLDispatchTable *pdt); +PLDLLEXPORT void plD_dispatch_init_svgcairo (PLDispatchTable *pdt); void plD_init_svgcairo (PLStream *); /*--------------------------------------------------------------------- @@ -1341,7 +1341,7 @@ #if defined(PLD_pngcairo) -void plD_dispatch_init_pngcairo (PLDispatchTable *pdt); +PLDLLEXPORT void plD_dispatch_init_pngcairo (PLDispatchTable *pdt); void plD_init_pngcairo (PLStream *); void plD_bop_pngcairo (PLStream *); void plD_eop_pngcairo (PLStream *); @@ -1472,7 +1472,7 @@ #if defined(PLD_memcairo) -void plD_dispatch_init_memcairo (PLDispatchTable *pdt); +PLDLLEXPORT void plD_dispatch_init_memcairo (PLDispatchTable *pdt); void plD_init_memcairo (PLStream *); void plD_eop_memcairo (PLStream *); void plD_bop_memcairo (PLStream *); @@ -1659,7 +1659,7 @@ #if defined(PLD_extcairo) -void plD_dispatch_init_extcairo (PLDispatchTable *pdt); +PLDLLEXPORT void plD_dispatch_init_extcairo (PLDispatchTable *pdt); void plD_init_extcairo (PLStream *); void plD_bop_extcairo (PLStream *); void plD_eop_extcairo (PLStream *); Modified: trunk/drivers/cgm.c =================================================================== --- trunk/drivers/cgm.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/cgm.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -81,7 +81,7 @@ #include <cd.h> /* Device info */ -const char* plD_DEVICE_INFO_cgm = "cgm:CGM file:0:cgm:44:cgm"; +PLDLLEXPORT const char* plD_DEVICE_INFO_cgm = "cgm:CGM file:0:cgm:44:cgm"; /* Prototypes for functions in this file. */ @@ -157,7 +157,7 @@ void plD_esc_cgm (PLStream *, PLINT, void *); -void plD_dispatch_init_cgm( PLDispatchTable *pdt ) +PLDLLEXPORT void plD_dispatch_init_cgm( PLDispatchTable *pdt ) { #ifndef ENABLE_DYNDRIVERS pdt->pl_MenuStr = "CGM (Computer Graphics metafile) file"; Modified: trunk/drivers/dg300.c =================================================================== --- trunk/drivers/dg300.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/dg300.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -10,9 +10,9 @@ #include "drivers.h" /* Device info */ -const char* plD_DEVICE_INFO_dg300 = "dg300:DG300 Terminal:0:dg300:25:dg300"; +PLDLLEXPORT const char* plD_DEVICE_INFO_dg300 = "dg300:DG300 Terminal:0:dg300:25:dg300"; -void plD_dispatch_init_dg ( PLDispatchTable *pdt ); +PLDLLEXPORT void plD_dispatch_init_dg ( PLDispatchTable *pdt ); void plD_init_dg (PLStream *); void plD_line_dg (PLStream *, short, short, short, short); Modified: trunk/drivers/gcw.c =================================================================== --- trunk/drivers/gcw.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/gcw.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -83,14 +83,11 @@ /* Font lookup table that is constructed in plD_FreeType_init*/ extern FCI_to_FontName_Table FontLookup[N_TrueTypeLookup]; -extern void plD_FreeType_init(PLStream *pls); -extern void plD_FreeType_Destroy(PLStream *pls); - #endif /* HAVE_FREETYPE */ /* Device info */ -const char* plD_DEVICE_INFO_gcw = "gcw:Gnome Canvas Widget:1:gcw:10:gcw"; +PLDLLEXPORT const char* plD_DEVICE_INFO_gcw = "gcw:Gnome Canvas Widget:1:gcw:10:gcw"; /* Global driver options */ @@ -142,7 +139,7 @@ void plD_state_gcw(PLStream *, PLINT); void plD_esc_gcw(PLStream *, PLINT, void *); -void plD_dispatch_init_gcw( PLDispatchTable *pdt ) +PLDLLEXPORT void plD_dispatch_init_gcw( PLDispatchTable *pdt ) { #ifdef DEBUG_GCW_1 Modified: trunk/drivers/gd.c =================================================================== --- trunk/drivers/gd.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/gd.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -132,7 +132,7 @@ * and finally one of each. */ -const char* plD_DEVICE_INFO_gd = +PLDLLEXPORT const char* plD_DEVICE_INFO_gd = #if defined(PLD_png) "png:PNG file:0:gd:39:png\n" #endif @@ -193,11 +193,6 @@ static void init_freetype_lv1 (PLStream *pls); static void init_freetype_lv2 (PLStream *pls); -extern void plD_FreeType_init(PLStream *pls); -extern void plD_render_freetype_text (PLStream *pls, EscText *args); -extern void plD_FreeType_Destroy(PLStream *pls); -extern void pl_set_extended_cmap0(PLStream *pls, int ncol0_width, int ncol0_org); - #endif /* top level declarations */ @@ -285,7 +280,7 @@ #ifdef PLD_png -void plD_dispatch_init_png( PLDispatchTable *pdt ) +PLDLLEXPORT void plD_dispatch_init_png( PLDispatchTable *pdt ) { #ifndef ENABLE_DYNDRIVERS pdt->pl_MenuStr = "PNG file"; @@ -307,7 +302,7 @@ #ifdef PLD_jpeg -void plD_dispatch_init_jpeg( PLDispatchTable *pdt ) +PLDLLEXPORT void plD_dispatch_init_jpeg( PLDispatchTable *pdt ) { #ifndef ENABLE_DYNDRIVERS pdt->pl_MenuStr = "JPEG File"; @@ -329,7 +324,7 @@ #ifdef PLD_gif -void plD_dispatch_init_gif( PLDispatchTable *pdt ) +PLDLLEXPORT void plD_dispatch_init_gif( PLDispatchTable *pdt ) { #ifndef ENABLE_DYNDRIVERS pdt->pl_MenuStr = "GIF File"; Modified: trunk/drivers/gnome.c =================================================================== --- trunk/drivers/gnome.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/gnome.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -39,7 +39,7 @@ #include <unistd.h> /* Device info */ -const char* plD_DEVICE_INFO_gnome = "gnome:Gnome Canvas:1:gnome:6:gnome"; +PLDLLEXPORT const char* plD_DEVICE_INFO_gnome = "gnome:Gnome Canvas:1:gnome:6:gnome"; /*#undef DEBUG*/ #define DEBUG @@ -773,7 +773,7 @@ void plD_state_gnome (PLStream *, PLINT); void plD_esc_gnome (PLStream *, PLINT, void *); -void plD_dispatch_init_gnome( PLDispatchTable *pdt ) +PLDLLEXPORT void plD_dispatch_init_gnome( PLDispatchTable *pdt ) { #ifndef ENABLE_DYNDRIVERS pdt->pl_MenuStr = "Gnome Canvas"; Modified: trunk/drivers/hpgl.c =================================================================== --- trunk/drivers/hpgl.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/hpgl.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -37,7 +37,7 @@ #include "drivers.h" /* Device info */ -const char* plD_DEVICE_INFO_hpgl = +PLDLLEXPORT const char* plD_DEVICE_INFO_hpgl = #if defined(PLD_hp7470) "hp7470:HP 7470 Plotter File (HPGL Cartridge, Small Plotter):0:hpgl:34:hp7470\n" #endif @@ -137,7 +137,7 @@ #ifdef PLD_hp7470 void plD_init_hp7470 (PLStream *); -void plD_dispatch_init_hp7470( PLDispatchTable *pdt ) +PLDLLEXPORT void plD_dispatch_init_hp7470( PLDispatchTable *pdt ) { hpgl_dispatch_init_helper( pdt, "HP 7470 Plotter File (HPGL Cartridge, Small Plotter)", @@ -173,7 +173,7 @@ #ifdef PLD_hp7580 void plD_init_hp7580 (PLStream *); -void plD_dispatch_init_hp7580( PLDispatchTable *pdt ) +PLDLLEXPORT void plD_dispatch_init_hp7580( PLDispatchTable *pdt ) { hpgl_dispatch_init_helper( pdt, "HP 7580 Plotter File (Large Plotter)", "hp7580", Modified: trunk/drivers/impress.c =================================================================== --- trunk/drivers/impress.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/impress.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -10,11 +10,11 @@ #include "drivers.h" /* Device info */ -const char* plD_DEVICE_INFO_impress = "imp:Impress File:0:impress:37:imp"; +PLDLLEXPORT const char* plD_DEVICE_INFO_impress = "imp:Impress File:0:impress:37:imp"; /* Function prototypes */ -void plD_dispatch_init_imp ( PLDispatchTable *pdt ); +PLDLLEXPORT void plD_dispatch_init_imp ( PLDispatchTable *pdt ); void plD_init_imp (PLStream *); void plD_line_imp (PLStream *, short, short, short, short); Modified: trunk/drivers/linuxvga.c =================================================================== --- trunk/drivers/linuxvga.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/linuxvga.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -18,7 +18,7 @@ #include <vga.h> /* Device info */ -const char* plD_DEVICE_INFO_linuxvga = "linuxvga:Linux VGA driver:0:linuxvga:8:vga"; +PLDLLEXPORT const char* plD_DEVICE_INFO_linuxvga = "linuxvga:Linux VGA driver:0:linuxvga:8:vga"; /* Function prototypes */ @@ -59,7 +59,7 @@ static page_state; -void plD_dispatch_init_vga( PLDispatchTable *pdt ) +PLDLLEXPORT void plD_dispatch_init_vga( PLDispatchTable *pdt ) { #ifndef ENABLE_DYNDRIVERS pdt->pl_MenuStr = "Linux console VGA Screen"; Modified: trunk/drivers/ljii.c =================================================================== --- trunk/drivers/ljii.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/ljii.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -22,12 +22,12 @@ #endif /* Device info */ -const char* plD_DEVICE_INFO_ljii = +PLDLLEXPORT const char* plD_DEVICE_INFO_ljii = "ljii:LaserJet II Bitmap File (150 dpi):0:ljii:33:ljii"; /* Function prototypes */ -void plD_dispatch_init_ljii ( PLDispatchTable *pdt ); +PLDLLEXPORT void plD_dispatch_init_ljii ( PLDispatchTable *pdt ); void plD_init_ljii (PLStream *); void plD_line_ljii (PLStream *, short, short, short, short); Modified: trunk/drivers/ljiip.c =================================================================== --- trunk/drivers/ljiip.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/ljiip.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -27,12 +27,12 @@ #endif /* Device info */ -const char* plD_DEVICE_INFO_ljiip = +PLDLLEXPORT const char* plD_DEVICE_INFO_ljiip = "ljiip:LaserJet IIp/deskjet compressed graphics:0:ljiip:32:ljiip"; /* Function prototypes */ -void plD_dispatch_init_ljiip ( PLDispatchTable *pdt ); +PLDLLEXPORT void plD_dispatch_init_ljiip ( PLDispatchTable *pdt ); void plD_init_ljiip (PLStream *); void plD_line_ljiip (PLStream *, short, short, short, short); Modified: trunk/drivers/mem.c =================================================================== --- trunk/drivers/mem.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/mem.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -21,9 +21,9 @@ #include "drivers.h" /* Device info */ -const char* plD_DEVICE_INFO_mem = "mem:User-supplied memory device:-1:mem:46:mem"; +PLDLLEXPORT const char* plD_DEVICE_INFO_mem = "mem:User-supplied memory device:-1:mem:46:mem"; -void plD_dispatch_init_mem ( PLDispatchTable *pdt ); +PLDLLEXPORT void plD_dispatch_init_mem ( PLDispatchTable *pdt ); void plD_init_mem (PLStream *); void plD_line_mem (PLStream *, short, short, short, short); Modified: trunk/drivers/ntk.c =================================================================== --- trunk/drivers/ntk.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/ntk.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -34,10 +34,10 @@ #include <tk.h> /* Device info */ -const char* plD_DEVICE_INFO_ntk = "ntk:New tk driver:1:ntk:43:ntk"; +PLDLLEXPORT const char* plD_DEVICE_INFO_ntk = "ntk:New tk driver:1:ntk:43:ntk"; -void plD_dispatch_init_ntk ( PLDispatchTable *pdt ); +PLDLLEXPORT void plD_dispatch_init_ntk ( PLDispatchTable *pdt ); void plD_init_ntk (PLStream *); void plD_line_ntk (PLStream *, short, short, short, short); Modified: trunk/drivers/null.c =================================================================== --- trunk/drivers/null.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/null.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -10,9 +10,9 @@ #include "drivers.h" /* Device info */ -const char* plD_DEVICE_INFO_null = "null:Null device:-1:null:42:null"; +PLDLLEXPORT const char* plD_DEVICE_INFO_null = "null:Null device:-1:null:42:null"; -void plD_dispatch_init_null ( PLDispatchTable *pdt ); +PLDLLEXPORT void plD_dispatch_init_null ( PLDispatchTable *pdt ); void plD_init_null (PLStream *); void plD_line_null (PLStream *, short, short, short, short); Modified: trunk/drivers/pbm.c =================================================================== --- trunk/drivers/pbm.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/pbm.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -14,10 +14,10 @@ #include "drivers.h" /* Device info */ -const char* plD_DEVICE_INFO_pbm = "pbm:PDB (PPM) Driver:0:pbm:38:pbm"; +PLDLLEXPORT const char* plD_DEVICE_INFO_pbm = "pbm:PDB (PPM) Driver:0:pbm:38:pbm"; -void plD_dispatch_init_pbm ( PLDispatchTable *pdt ); +PLDLLEXPORT void plD_dispatch_init_pbm ( PLDispatchTable *pdt ); void plD_init_pbm (PLStream *); void plD_line_pbm (PLStream *, short, short, short, short); Modified: trunk/drivers/pdf.c =================================================================== --- trunk/drivers/pdf.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/pdf.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -87,7 +87,7 @@ } pdfdev; /* local variables */ -const char* plD_DEVICE_INFO_pdf = "pdf:Portable Document Format PDF:1:pdf:58:pdf"; +PLDLLEXPORT const char* plD_DEVICE_INFO_pdf = "pdf:Portable Document Format PDF:1:pdf:58:pdf"; static jmp_buf env; /*********************************************************************** @@ -102,7 +102,7 @@ static void process_string( PLStream *, EscText * ); /* PLplot interface functions */ -void plD_dispatch_init_pdf (PLDispatchTable *pdt); +PLDLLEXPORT void plD_dispatch_init_pdf (PLDispatchTable *pdt); void plD_init_pdf (PLStream *); void plD_line_pdf (PLStream *, short, short, short, short); void plD_polyline_pdf (PLStream *, short *, short *, PLINT); Modified: trunk/drivers/plmeta.c =================================================================== --- trunk/drivers/plmeta.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/plmeta.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -37,10 +37,10 @@ #include <string.h> /* Device info */ -const char* plD_DEVICE_INFO_plmeta = "plmeta:PLplot Native Meta-File:0:plmeta:26:plm"; +PLDLLEXPORT const char* plD_DEVICE_INFO_plmeta = "plmeta:PLplot Native Meta-File:0:plmeta:26:plm"; -void plD_dispatch_init_plm ( PLDispatchTable *pdt ); +PLDLLEXPORT void plD_dispatch_init_plm ( PLDispatchTable *pdt ); void plD_init_plm (PLStream *); void plD_line_plm (PLStream *, short, short, short, short); Modified: trunk/drivers/pstex.c =================================================================== --- trunk/drivers/pstex.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/pstex.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -12,7 +12,7 @@ #include "ps.h" /* Device info */ -const char* plD_DEVICE_INFO_pstex = +PLDLLEXPORT const char* plD_DEVICE_INFO_pstex = "pstex:Combined Postscript/LaTeX files:0:pstex:41:pstex"; /*--------------------------------------------------------------------------*\ @@ -32,7 +32,7 @@ "Color Postscript/LaTeX (color=1|0)"}, {NULL, DRV_INT, NULL, NULL}}; -void plD_dispatch_init_pstex( PLDispatchTable *pdt ) +PLDLLEXPORT void plD_dispatch_init_pstex( PLDispatchTable *pdt ) { #ifndef ENABLE_DYNDRIVERS pdt->pl_MenuStr ="Combined Postscript/LaTeX files" ; Modified: trunk/drivers/psttf.cc =================================================================== --- trunk/drivers/psttf.cc 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/psttf.cc 2008-09-09 12:51:18 UTC (rev 8760) @@ -56,15 +56,15 @@ /* Device info */ -const char* plD_DEVICE_INFO_psttf = +PLDLLEXPORT const char* plD_DEVICE_INFO_psttf = "psttf:PostScript File (monochrome):0:psttf:55:psttfm\n" "psttfc:PostScript File (color):0:psttf:56:psttfc"; /* Prototypes for functions in this file. */ -void plD_dispatch_init_psttfm ( PLDispatchTable *pdt ); -void plD_dispatch_init_psttfc ( PLDispatchTable *pdt ); +PLDLLEXPORT void plD_dispatch_init_psttfm ( PLDispatchTable *pdt ); +PLDLLEXPORT void plD_dispatch_init_psttfc ( PLDispatchTable *pdt ); static char *ps_getdate (void); static void ps_init (PLStream *); Modified: trunk/drivers/svg.c =================================================================== --- trunk/drivers/svg.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/svg.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -48,7 +48,7 @@ /* local variables */ -const char* plD_DEVICE_INFO_svg = "svg:Scalable Vector Graphics (SVG 1.1):1:svg:57:svg"; +PLDLLEXPORT const char* plD_DEVICE_INFO_svg = "svg:Scalable Vector Graphics (SVG 1.1):1:svg:57:svg"; static int canvasXSize = 0; static int canvasYSize = 0; @@ -94,7 +94,7 @@ /* PLplot interface functions */ -void plD_dispatch_init_svg (PLDispatchTable *pdt); +PLDLLEXPORT void plD_dispatch_init_svg (PLDispatchTable *pdt); void plD_init_svg (PLStream *); void plD_line_svg (PLStream *, short, short, short, short); void plD_polyline_svg (PLStream *, short *, short *, PLINT); Modified: trunk/drivers/tek.c =================================================================== --- trunk/drivers/tek.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/tek.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -23,7 +23,7 @@ /* Device info */ -const char* plD_DEVICE_INFO_tek = +PLDLLEXPORT const char* plD_DEVICE_INFO_tek = #if defined(PLD_conex) "conex:Conex vt320/tek emulator:1:tek:24:conex\n" #endif @@ -178,7 +178,7 @@ pdt->pl_esc = (plD_esc_fp) plD_esc_tek; } -void plD_dispatch_init_xterm ( PLDispatchTable *pdt ) +PLDLLEXPORT void plD_dispatch_init_xterm ( PLDispatchTable *pdt ) { tek_dispatch_init_helper( pdt, "Xterm Window", "xterm", @@ -186,7 +186,7 @@ (plD_init_fp) plD_init_xterm ); } -void plD_dispatch_init_tekt ( PLDispatchTable *pdt ) +PLDLLEXPORT void plD_dispatch_init_tekt ( PLDispatchTable *pdt ) { tek_dispatch_init_helper( pdt, "Tektronix Terminal (4010)", "tekt", @@ -194,7 +194,7 @@ (plD_init_fp) plD_init_tekt ); } -void plD_dispatch_init_tek4107t ( PLDispatchTable *pdt ) +PLDLLEXPORT void plD_dispatch_init_tek4107t ( PLDispatchTable *pdt ) { tek_dispatch_init_helper( pdt, "Tektronix Terminal (4105/4107)", "tek4107t", @@ -202,7 +202,7 @@ (plD_init_fp) plD_init_tek4107t ); } -void plD_dispatch_init_mskermit ( PLDispatchTable *pdt ) +PLDLLEXPORT void plD_dispatch_init_mskermit ( PLDispatchTable *pdt ) { tek_dispatch_init_helper( pdt, "MS-Kermit emulator", "mskermit", @@ -210,7 +210,7 @@ (plD_init_fp) plD_init_mskermit ); } -void plD_dispatch_init_versaterm( PLDispatchTable *pdt ) +PLDLLEXPORT void plD_dispatch_init_versaterm( PLDispatchTable *pdt ) { tek_dispatch_init_helper( pdt, "Versaterm vt100/tek emulator", "versaterm", @@ -218,7 +218,7 @@ (plD_init_fp) plD_init_versaterm ); } -void plD_dispatch_init_vlt ( PLDispatchTable *pdt ) +PLDLLEXPORT void plD_dispatch_init_vlt ( PLDispatchTable *pdt ) { tek_dispatch_init_helper( pdt, "VLT vt100/tek emulator", "vlt", @@ -226,7 +226,7 @@ (plD_init_fp) plD_init_vlt ); } -void plD_dispatch_init_conex ( PLDispatchTable *pdt ) +PLDLLEXPORT void plD_dispatch_init_conex ( PLDispatchTable *pdt ) { tek_dispatch_init_helper( pdt, "Conex vt320/tek emulator", "conex", @@ -234,7 +234,7 @@ (plD_init_fp) plD_init_conex ); } -void plD_dispatch_init_tekf ( PLDispatchTable *pdt ) +PLDLLEXPORT void plD_dispatch_init_tekf ( PLDispatchTable *pdt ) { tek_dispatch_init_helper( pdt, "Tektronix File (4010)", "tekf", @@ -242,7 +242,7 @@ (plD_init_fp) plD_init_tekf ); } -void plD_dispatch_init_tek4107f ( PLDispatchTable *pdt ) +PLDLLEXPORT void plD_dispatch_init_tek4107f ( PLDispatchTable *pdt ) { tek_dispatch_init_helper( pdt, "Tektronix File (4105/4107)", "tek4107f", Modified: trunk/drivers/tk.c =================================================================== --- trunk/drivers/tk.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/tk.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -63,7 +63,7 @@ #endif /* Device info */ -const char* plD_DEVICE_INFO_tk = "tk:Tcl/TK Window:1:tk:7:tk"; +PLDLLEXPORT const char* plD_DEVICE_INFO_tk = "tk:Tcl/TK Window:1:tk:7:tk"; /* Number of instructions to skip between updates */ @@ -89,7 +89,7 @@ /* Driver entry and dispatch setup */ -void plD_dispatch_init_tk ( PLDispatchTable *pdt ); +PLDLLEXPORT void plD_dispatch_init_tk ( PLDispatchTable *pdt ); void plD_init_tk (PLStream *); void plD_line_tk (PLStream *, short, short, short, short); Modified: trunk/drivers/tkwin.c =================================================================== --- trunk/drivers/tkwin.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/tkwin.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -80,7 +80,7 @@ #endif /* Device info */ -const char* plD_DEVICE_INFO_tkwin = "tkwin:New tk driver:1:tkwin:45:tkwin"; +PLDLLEXPORT const char* plD_DEVICE_INFO_tkwin = "tkwin:New tk driver:1:tkwin:45:tkwin"; void * ckcalloc(size_t nmemb, size_t size); @@ -202,7 +202,7 @@ static void StoreCmap1 (PLStream *pls); static void WaitForPage(PLStream *pls); -void plD_dispatch_init_tkwin ( PLDispatchTable *pdt ); +PLDLLEXPORT void plD_dispatch_init_tkwin ( PLDispatchTable *pdt ); void plD_init_tkwin (PLStream *); void plD_line_tkwin (PLStream *, short, short, short, short); Modified: trunk/drivers/wingcc.c =================================================================== --- trunk/drivers/wingcc.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/wingcc.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -62,7 +62,7 @@ /* Device info */ -const char* plD_DEVICE_INFO_wingcc = "wingcc:Win32 (GCC):1:wingcc:9:wingcc"; +PLDLLEXPORT const char* plD_DEVICE_INFO_wingcc = "wingcc:Win32 (GCC):1:wingcc:9:wingcc"; /* Struct to hold device-specific info. */ @@ -112,7 +112,7 @@ } wingcc_Dev; -void plD_dispatch_init_wingcc ( PLDispatchTable *pdt ); +PLDLLEXPORT void plD_dispatch_init_wingcc ( PLDispatchTable *pdt ); void plD_init_wingcc (PLStream *); void plD_line_wingcc (PLStream *, short, short, short, short); @@ -133,10 +133,6 @@ static void init_freetype_lv1 (PLStream *pls); static void init_freetype_lv2 (PLStream *pls); -extern void plD_FreeType_init(PLStream *pls); -extern void plD_render_freetype_text (PLStream *pls, EscText *args); -extern void plD_FreeType_Destroy(PLStream *pls); -extern void pl_set_extended_cmap0(PLStream *pls, int ncol0_width, int ncol0_org); #endif Modified: trunk/drivers/wxwidgets.cpp =================================================================== --- trunk/drivers/wxwidgets.cpp 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/wxwidgets.cpp 2008-09-09 12:51:18 UTC (rev 8760) @@ -94,14 +94,14 @@ \*----------------------------------------------------------------------*/ /* Device info */ -const char* plD_DEVICE_INFO_wxwidgets = "wxwidgets:wxWidgets DC:1:wxwidgets:51:wxwidgets"; +PLDLLEXPORT const char* plD_DEVICE_INFO_wxwidgets = "wxwidgets:wxWidgets DC:1:wxwidgets:51:wxwidgets"; /*--------------------------------------------------------------------------*\ * void plD_dispatch_init_wxwidgets( PLDispatchTable *pdt ) * * Make driver functions known to plplot. \*--------------------------------------------------------------------------*/ -void plD_dispatch_init_wxwidgets( PLDispatchTable *pdt ) +PLDLLEXPORT void plD_dispatch_init_wxwidgets( PLDispatchTable *pdt ) { #ifndef ENABLE_DYNDRIVERS pdt->pl_MenuStr = "wxWidgets DC"; Modified: trunk/drivers/wxwidgets.h =================================================================== --- trunk/drivers/wxwidgets.h 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/wxwidgets.h 2008-09-09 12:51:18 UTC (rev 8760) @@ -31,13 +31,6 @@ static void plD_set_pixel_wxwidgets( PLStream *pls, short x, short y, PLINT colour ); static void init_freetype_lv1( PLStream *pls ); static void init_freetype_lv2( PLStream *pls ); -extern "C" -{ - extern void plD_FreeType_init( PLStream *pls ); - extern void plD_render_freetype_text( PLStream *pls, EscText *args ); - extern void plD_FreeType_Destroy( PLStream *pls ); - extern void pl_set_extended_cmap0( PLStream *pls, int ncol0_width, int ncol0_org ); -} #endif #ifndef max_number_of_grey_levels_used_in_text_smoothing Modified: trunk/drivers/xfig.c =================================================================== --- trunk/drivers/xfig.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/xfig.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -10,11 +10,11 @@ #include "drivers.h" /* Device info */ -const char* plD_DEVICE_INFO_xfig = "xfig:Fig file:0:xfig:31:xfig"; +PLDLLEXPORT const char* plD_DEVICE_INFO_xfig = "xfig:Fig file:0:xfig:31:xfig"; /* Function prototypes */ -void plD_dispatch_init_xfig ( PLDispatchTable *pdt ); +PLDLLEXPORT void plD_dispatch_init_xfig ( PLDispatchTable *pdt ); void plD_init_xfig (PLStream *); void plD_line_xfig (PLStream *, short, short, short, short); Modified: trunk/drivers/xwin.c =================================================================== --- trunk/drivers/xwin.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/xwin.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -45,7 +45,7 @@ #endif /* Device info */ -const char* plD_DEVICE_INFO_xwin = "xwin:X-Window (Xlib):1:xwin:5:xw"; +PLDLLEXPORT const char* plD_DEVICE_INFO_xwin = "xwin:X-Window (Xlib):1:xwin:5:xw"; static int synchronize = 0; /* change to 1 for X synchronized operation */ /* Use "-drvopt sync" cmd line option to set. */ @@ -126,7 +126,7 @@ /* Driver entry and dispatch setup */ -void plD_dispatch_init_xw ( PLDispatchTable *pdt ); +PLDLLEXPORT void plD_dispatch_init_xw ( PLDispatchTable *pdt ); void plD_init_xw (PLStream *); void plD_line_xw (PLStream *, short, short, short, short); Modified: trunk/drivers/xwinttf.c =================================================================== --- trunk/drivers/xwinttf.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/drivers/xwinttf.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -57,7 +57,7 @@ /* local variables */ -const char* plD_DEVICE_INFO_xwinttf = "xwinttf:TrueType X Windows Driver:1:xwinttf:59:xwinttf"; +PLDLLEXPORT const char* plD_DEVICE_INFO_xwinttf = "xwinttf:TrueType X Windows Driver:1:xwinttf:59:xwinttf"; static int currentPage = -1; static int XScreen; @@ -126,7 +126,7 @@ /* PLplot interface functions */ -void plD_dispatch_init_xwinttf (PLDispatchTable *pdt); +PLDLLEXPORT void plD_dispatch_init_xwinttf (PLDispatchTable *pdt); void plD_init_xwinttf (PLStream *); void plD_line_xwinttf (PLStream *, short, short, short, short); void plD_polyline_xwinttf (PLStream *, short *, short *, PLINT); Modified: trunk/include/plplotP.h =================================================================== --- trunk/include/plplotP.h 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/include/plplotP.h 2008-09-09 12:51:18 UTC (rev 8760) @@ -1057,6 +1057,22 @@ plGetDrvDir (void); #endif +#ifdef HAVE_FREETYPE +PLDLLIMPEXP void +plD_FreeType_init(PLStream *); + +PLDLLIMPEXP void +plD_render_freetype_text (PLStream *, EscText *); + +PLDLLIMPEXP void +plD_FreeType_Destroy(PLStream *); + +PLDLLIMPEXP void +pl_set_extended_cmap0(PLStream *, int, int); + +#endif + + #ifdef __cplusplus } #endif Modified: trunk/src/CMakeLists.txt =================================================================== --- trunk/src/CMakeLists.txt 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/src/CMakeLists.txt 2008-09-09 12:51:18 UTC (rev 8760) @@ -185,7 +185,8 @@ endif(HAVE_QHULL) if(WITH_FREETYPE) - set_source_files_properties(plfreetype.c PROPERTIES COMPILE_FLAGS "-I${FREETYPE_INCLUDE_DIR}") + get_source_file_property(PLFREETYPE_COMPILE_PROPS plfreetype.c COMPILE_FLAGS) + set_source_files_properties(plfreetype.c PROPERTIES COMPILE_FLAGS "${PLFREETYPE_COMPILE_PROPS} -I${FREETYPE_INCLUDE_DIR}") set( libplplot${LIB_TAG}_LINK_LIBRARIES ${libplplot${LIB_TAG}_LINK_LIBRARIES} Modified: trunk/src/plfreetype.c =================================================================== --- trunk/src/plfreetype.c 2008-09-09 09:55:50 UTC (rev 8759) +++ trunk/src/plfreetype.c 2008-09-09 12:51:18 UTC (rev 8760) @@ -94,7 +94,7 @@ #define FT_Data _FT_Data_ /* Font lookup table that is constructed in plD_FreeType_init*/ -FCI_to_FontName_Table FontLookup[N_TrueTypeLookup]; +PLDLLIMPEXP_DATA(FCI_to_FontName_Table) FontLookup[N_TrueTypeLookup]; /* TOP LEVEL DEFINES */ /* Freetype lets you set the text size absolutely. It also takes into This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |