From: <and...@us...> - 2008-08-20 07:21:21
|
Revision: 8684 http://plplot.svn.sourceforge.net/plplot/?rev=8684&view=rev Author: andrewross Date: 2008-08-20 07:21:31 +0000 (Wed, 20 Aug 2008) Log Message: ----------- Add intial tcl version of example 23. Still needs debugging. Modified Paths: -------------- trunk/examples/tcl/CMakeLists.txt Added Paths: ----------- trunk/examples/tcl/x23 trunk/examples/tcl/x23.tcl Modified: trunk/examples/tcl/CMakeLists.txt =================================================================== --- trunk/examples/tcl/CMakeLists.txt 2008-08-20 00:29:40 UTC (rev 8683) +++ trunk/examples/tcl/CMakeLists.txt 2008-08-20 07:21:31 UTC (rev 8684) @@ -49,6 +49,7 @@ "18" "19" "22" +"23" "24" "25" "26" Added: trunk/examples/tcl/x23 =================================================================== --- trunk/examples/tcl/x23 (rev 0) +++ trunk/examples/tcl/x23 2008-08-20 07:21:31 UTC (rev 8684) @@ -0,0 +1,19 @@ +#!/bin/sh +#--------------------------------*- Tcl -*------------------------------------# +# $Id:$ +# +# Maurice LeBrun +# 12/24/02 +# +# A front-end to x23.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 x23.tcl + +plinit +x23 +plend Property changes on: trunk/examples/tcl/x23 ___________________________________________________________________ Added: svn:executable + * Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/examples/tcl/x23.tcl =================================================================== --- trunk/examples/tcl/x23.tcl (rev 0) +++ trunk/examples/tcl/x23.tcl 2008-08-20 07:21:31 UTC (rev 8684) @@ -0,0 +1,379 @@ +# $Id:$ +# +# Displays Greek letters and mathematically interesting Unicode ranges +# Copyright (C) 2005,2008 Alan Irwin +# Copyright (C) 2005,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 +# + +# +# Displays Greek letters and mathematically interesting Unicode ranges +# + +proc x23 {{w loopback}} { + + set Greek0 "#gA" + set Greek1 "#gB" + set Greek2 "#gG" + set Greek3 "#gD" + set Greek4 "#gE" + set Greek5 "#gZ" + set Greek6 "#gY" + set Greek7 "#gH" + set Greek8 "#gI" + set Greek9 "#gK" + set Greek10 "#gL" + set Greek11 "#gM" + set Greek12 "#gN" + set Greek13 "#gC" + set Greek14 "#gO" + set Greek15 "#gP" + set Greek16 "#gR" + set Greek17 "#gS" + set Greek18 "#gT" + set Greek19 "#gU" + set Greek20 "#gF" + set Greek21 "#gX" + set Greek22 "#gQ" + set Greek23 "#gW" + set Greek24 "#ga" + set Greek25 "#gb" + set Greek26 "#gg" + set Greek27 "#gd" + set Greek28 "#ge" + set Greek29 "#gz" + set Greek30 "#gy" + set Greek31 "#gh" + set Greek32 "#gi" + set Greek33 "#gk" + set Greek34 "#gl" + set Greek35 "#gm" + set Greek36 "#gn" + set Greek37 "#gc" + set Greek38 "#go" + set Greek39 "#gp" + set Greek40 "#gr" + set Greek41 "#gs" + set Greek42 "#gt" + set Greek43 "#gu" + set Greek44 "#gf" + set Greek45 "#gx" + set Greek46 "#gq" + set Greek47 "#gw" + + + matrix Type1 i 166 = { + 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 + } + + set title0 "#<0x10>PLplot Example 23 - Greek Letters" + set title1 "#<0x10>PLplot Example 23 - Type 1 Symbol Font Glyphs by Unicode (a)" + set title2 "#<0x10>PLplot Example 23 - Type 1 Symbol Font Glyphs by Unicode (b)" + set title3 "#<0x10>PLplot Example 23 - Type 1 Symbol Font Glyphs by Unicode (c)" + set title4 "#<0x10>PLplot Example 23 - Number Forms Unicode Block" + set title5 "#<0x10>PLplot Example 23 - Arrows Unicode Block (a)" + set title6 "#<0x10>PLplot Example 23 - Arrows Unicode Block (b)" + set title7 "#<0x10>PLplot Example 23 - Mathematical Operators Unicode Block (a)" + set title8 "#<0x10>PLplot Example 23 - Mathematical Operators Unicode Block (b)" + set title9 "#<0x10>PLplot Example 23 - Mathematical Operators Unicode Block (c)" + set title10 "#<0x10>PLplot Example 23 - Mathematical Operators Unicode Block (d)" + + + matrix lo i 11 = { + 0x0, + 0x0, + 0x40, + 0x80, + 0x2153, + 0x2190, + 0x21d0, + 0x2200, + 0x2240, + 0x2280, + 0x22c0 + } + + matrix hi i 11 = { + 0x30, + 0x40, + 0x80, + 0xA6, + 0x2184, + 0x21d0, + 0x2200, + 0x2240, + 0x2280, + 0x22c0, + 0x2300 + } + + matrix nxcells i 11 = { + 12, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8 + } + + matrix nycells i 11 = { + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8 + } + + # non-zero values Must be consistent with nxcells and nycells. + matrix offset i 11 = { + 0, + 0, + 64, + 128, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + } + +# 30 possible FCI values. + matrix fci i 30 = { + 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, + } + + set family(0) "sans-serif" + set family(1) "serif" + set family(2) "monospace" + set family(3) "script" + set family(4) "symbol" + + set style(0) "upright" + set style(1) "italic" + set style(2) "oblique" + + set weight(0) "medium" + set weight(1) "bold" + + for {set page 0} {$page<11} {incr page} { + + $w cmd pladv 0 + + # Set up viewport and window + + $w cmd plvpor 0.02 0.98 0.02 0.90 + $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)}] + + # Factor should be 0.5, but heuristically it turns out to be larger. + $w cmd plgchr chardef charht + set yoffset [ expr {1.0*$charht*$ycharacter_scale} ] + + # Draw the grid using plbox + + $w cmd plcol0 2 + set deltax [ expr {1.0/[nxcells $page]} ] + set deltay [ expr {1.0/[nycells $page]} ] + $w cmd plbox "bcg" $deltax 0 "bcg" $deltay 0 + $w cmd plcol0 15 + set length [ expr {[hi $page]-[lo $page]} ] + set slice 0 + for {set j [ expr {[nycells $page]-1} ]} {$j>=-1} {incr j -1} { + set y [ expr {(0.5+$j)*$deltay} ] + for {set i 0} {$i<[nxcells $page]} {incr i} { + 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}]] + } + $w cmd plptex $x [ expr {$y+$yoffset}] 1. 0. 0.5 $cmdString + $w cmd plptex $x [ expr {$y-$yoffset}] 1. 0. 0.5 $cmdString + } + incr slice + } + } + + $w cmd plschr 0. 1.0 + # Page title + $w cmd plmtex "t" 1.5 0.5 0.5 [set title$page] + } + + # 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) + + for {set page 11} {$page<16} {incr page} { + set dy 0.030 + + $w cmd pladv 0 + $w cmd plvpor 0.02 0.98 0.02 0.90 + $w cmd plwind 0.0 1.0 0.0 1.0 + $w cmd plsfci 0 + if {$page == 11} { + $w cmd plmtex "t" 1.5 0.5 0.5 "#<0x10>PLplot Example 23 - Set Font with plsfci" + } elseif {$page == 12} { + $w cmd plmtex "t" 1.5 0.5 0.5 "#<0x10>PLplot Example 23 - Set Font with plsfont" + } elseif {$page == 13} { + $w cmd plmtex "t" 1.5 0.5 0.5 "#<0x10>PLplot Example 23 - Set Font with ##<0x8nnnnnnn> construct" + } elseif {$page == 14} { + $w cmd plmtex "t" 1.5 0.5 0.5 "#<0x10>PLplot Example 23 - Set Font with ##<0xmn> constructs" + } elseif {$page == 15} { + $w cmd plmtex "t" 1.5 0.5 0.5 "#<0x10>PLplot Example 23 - Set Font with ##<FCI COMMAND STRING/> constructs" + } + $w cmd plschr 0. 0.75 + for {set i 0} {$i< 30} {incr i} { + set family_index [ expr {$i % 5}] + set style_index [ expr {($i/5) % 3}] + set weight_index [ expr {(($i/5)/3) % 2}] + if {$page == 11} { + $w cmd plsfci [fci $i] + set string [format "Page 12, %s, %s, %s: The quick brown fox jumps over the lazy dog" \ + $family($family_index) \ + $style($style_index) \ + $weight($weight_index) \ + ] + } elseif {$page == 12} { + $w cmd plsfont $family_index $style_index $weight_index + set string [format \ + "Page 13, %s, %s, %s: The quick brown fox jumps over the lazy dog" \ + $family($family_index) \ + $style($style_index) \ + $weight($weight_index) \ + ] + } elseif {$page == 13} { + set string [format \ + "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] \ + ] + } elseif {$page == 14} { + set string [format \ + "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 \ + ] + } elseif {$page == 15} { + set string [format \ + "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) \ + ] + } + $w cmd plptex 0. [ expr {1. - ($i+0.5)*$dy}] 1. 0. 0. $string + } + + $w cmd plschr 0. 1.0 + } + + # Restore defaults + $w cmd plcol0 1 +} Property changes on: trunk/examples/tcl/x23.tcl ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |