3
Displays Greek letters and mathematically interesting Unicode ranges
4
Copyright (C) 2005 Alan Irwin
5
Copyright (C) 2005 Andrew Ross
8
This file is part of PLplot.
10
PLplot is free software; you can redistribute it and/or modify
11
it under the terms of the GNU General Library Public License as published
12
by the Free Software Foundation; either version 2 of the License, or
13
(at your option) any later version.
15
PLplot is distributed in the hope that it will be useful,
16
but WITHOUT ANY WARRANTY; without even the implied warranty of
17
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
GNU Library General Public License for more details.
20
You should have received a copy of the GNU Library General Public License
21
along with PLplot; if not, write to the Free Software
22
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
31
* Displays Greek letters and mathematically interesting Unicode ranges
34
static char* Greek[] = {
35
"#gA","#gB","#gG","#gD","#gE","#gZ","#gY","#gH","#gI","#gK","#gL","#gM",
36
"#gN","#gC","#gO","#gP","#gR","#gS","#gT","#gU","#gF","#gX","#gQ","#gW",
37
"#ga","#gb","#gg","#gd","#ge","#gz","#gy","#gh","#gi","#gk","#gl","#gm",
38
"#gn","#gc","#go","#gp","#gr","#gs","#gt","#gu","#gf","#gx","#gq","#gw",
41
static int Type1[] = {
42
0x0020,0x0021,0x0023,0x0025,0x0026,
43
0x0028,0x0029,0x002b,0x002c,0x002e,
44
0x002f,0x0030,0x0031,0x0032,0x0033,
45
0x0034,0x0035,0x0036,0x0037,0x0038,
46
0x0039,0x003a,0x003b,0x003c,0x003d,
47
0x003e,0x003f,0x005b,0x005d,0x005f,
48
0x007b,0x007c,0x007d,0x00a9,0x00ac,
49
0x00ae,0x00b0,0x00b1,0x00d7,0x00f7,
50
0x0192,0x0391,0x0392,0x0393,0x0394,
51
0x0395,0x0396,0x0397,0x0398,0x0399,
52
0x039a,0x039b,0x039c,0x039d,0x039e,
53
0x039f,0x03a0,0x03a1,0x03a3,0x03a4,
54
0x03a5,0x03a6,0x03a7,0x03a8,0x03a9,
55
0x03b1,0x03b2,0x03b3,0x03b4,0x03b5,
56
0x03b6,0x03b7,0x03b8,0x03b9,0x03ba,
57
0x03bb,0x03bc,0x03bd,0x03be,0x03bf,
58
0x03c0,0x03c1,0x03c2,0x03c3,0x03c4,
59
0x03c5,0x03c6,0x03c7,0x03c8,0x03c9,
60
0x03d1,0x03d2,0x03d5,0x03d6,0x2022,
61
0x2026,0x2032,0x2033,0x203e,0x2044,
62
0x2111,0x2118,0x211c,0x2122,0x2126,
63
0x2135,0x2190,0x2191,0x2192,0x2193,
64
0x2194,0x21b5,0x21d0,0x21d1,0x21d2,
65
0x21d3,0x21d4,0x2200,0x2202,0x2203,
66
0x2205,0x2206,0x2207,0x2208,0x2209,
67
0x220b,0x220f,0x2211,0x2212,0x2215,
68
0x2217,0x221a,0x221d,0x221e,0x2220,
69
0x2227,0x2228,0x2229,0x222a,0x222b,
70
0x2234,0x223c,0x2245,0x2248,0x2260,
71
0x2261,0x2264,0x2265,0x2282,0x2283,
72
0x2284,0x2286,0x2287,0x2295,0x2297,
73
0x22a5,0x22c5,0x2320,0x2321,0x2329,
74
0x232a,0x25ca,0x2660,0x2663,0x2665,
78
static char* title[] = {
79
"#<0x10>PLplot Example 23 - Greek Letters",
80
"#<0x10>PLplot Example 23 - Type 1 Symbol Font Glyphs by Unicode (a)",
81
"#<0x10>PLplot Example 23 - Type 1 Symbol Font Glyphs by Unicode (b)",
82
"#<0x10>PLplot Example 23 - Type 1 Symbol Font Glyphs by Unicode (c)",
83
"#<0x10>PLplot Example 23 - Number Forms Unicode Block",
84
"#<0x10>PLplot Example 23 - Arrows Unicode Block (a)",
85
"#<0x10>PLplot Example 23 - Arrows Unicode Block (b)",
86
"#<0x10>PLplot Example 23 - Mathematical Operators Unicode Block (a)",
87
"#<0x10>PLplot Example 23 - Mathematical Operators Unicode Block (b)",
88
"#<0x10>PLplot Example 23 - Mathematical Operators Unicode Block (c)",
89
"#<0x10>PLplot Example 23 - Mathematical Operators Unicode Block (d)",
120
static int nxcells[] = {
134
static int nycells[] = {
148
/* non-zero values Must be consistent with nxcells and nycells. */
149
static int offset[] = {
164
main(int argc, char *argv[])
166
PLFLT xmin, xmax, ymin, ymax, ycharacter_scale, yoffset;
167
PLFLT chardef, charht, deltax, deltay, x, y;
168
int i, j, page, length, slice;
171
plparseopts(&argc, argv, PL_PARSE_FULL);
175
for (page=0; page<11; page++) {
179
/* Set up viewport and window */
181
plvpor(0.02, 0.98, 0.02, 0.90);
182
plwind(0.0, 1.0, 0.0, 1.0);
183
plgspa(&xmin, &xmax, &ymin, &ymax);
185
ycharacter_scale = (1.0 - 0.0)/(ymax-ymin);
187
/* Factor should be 0.5, but heuristically it turns out to be larger. */
188
plgchr(&chardef, &charht);
189
yoffset = 1.0*charht*ycharacter_scale;
191
/* Draw the grid using plbox */
194
deltax = 1.0/((PLFLT)nxcells[page]);
195
deltay = 1.0/((PLFLT)nycells[page]);
196
plbox("bcg", deltax, 0, "bcg", deltay, 0);
198
length=hi[page]-lo[page];
200
for (j=nycells[page]-1;j>=-1;j--) {
202
for (i=0;i<nxcells[page];i++) {
204
if (slice < length) {
206
sprintf(cmdString,"#%s",Greek[slice]);
208
else if ((page >= 1) && (page <= 3)) {
209
sprintf(cmdString,"##[0x%.4x]",Type1[offset[page]+slice]);
211
else if (page >= 4) {
212
sprintf(cmdString,"##[0x%.4x]",lo[page]+slice);
214
plptex(x,y+yoffset,1.,0.,0.5, &cmdString[1]);
215
plptex(x,y-yoffset,1.,0.,0.5, cmdString);
223
plmtex("t", 1.5, 0.5, 0.5, title[page]);
226
/* Restore defaults */