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. |