~ubuntu-branches/ubuntu/intrepid/plplot/intrepid

« back to all changes in this revision

Viewing changes to examples/c/x23c.c

  • Committer: Bazaar Package Importer
  • Author(s): Rafael Laboissiere
  • Date: 2006-11-04 10:19:34 UTC
  • mfrom: (2.1.8 edgy)
  • Revision ID: james.westby@ubuntu.com-20061104101934-mlirvdg4gpwi6i5q
Tags: 5.6.1-10
* Orphaning the package
* debian/control: Changed the maintainer to the Debian QA Group

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* 
 
2
 
 
3
    Displays Greek letters and mathematically interesting Unicode ranges
 
4
    Copyright (C) 2005 Alan Irwin 
 
5
    Copyright (C) 2005 Andrew Ross 
 
6
 
 
7
 
 
8
    This file is part of PLplot.
 
9
 
 
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.
 
14
 
 
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.
 
19
 
 
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
 
23
 
 
24
*/
 
25
 
 
26
#include "plcdemos.h"
 
27
 
 
28
/*
 
29
 * main
 
30
 *
 
31
 * Displays Greek letters and mathematically interesting Unicode ranges
 
32
*/
 
33
 
 
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",
 
39
};
 
40
 
 
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,
 
75
0x2666,
 
76
};
 
77
 
 
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)",
 
90
};
 
91
 
 
92
static int lo[] = {
 
93
0x0,
 
94
0x0,
 
95
0x40,
 
96
0x80,
 
97
0x2153,
 
98
0x2190,
 
99
0x21d0,
 
100
0x2200,
 
101
0x2240,
 
102
0x2280,
 
103
0x22c0,
 
104
};
 
105
 
 
106
static int hi[] = {
 
107
0x30,
 
108
0x40,
 
109
0x80,
 
110
0xA6,
 
111
0x2184,
 
112
0x21d0,
 
113
0x2200,
 
114
0x2240,
 
115
0x2280,
 
116
0x22c0,
 
117
0x2300,
 
118
};
 
119
 
 
120
static int nxcells[] = {
 
121
12,
 
122
8,
 
123
8,
 
124
8,
 
125
8,
 
126
8,
 
127
8,
 
128
8,
 
129
8,
 
130
8,
 
131
8,
 
132
};
 
133
 
 
134
static int nycells[] = {
 
135
8,
 
136
8,
 
137
8,
 
138
8,
 
139
8,
 
140
8,
 
141
8,
 
142
8,
 
143
8,
 
144
8,
 
145
8,
 
146
};
 
147
 
 
148
/* non-zero values Must be consistent with nxcells and nycells. */
 
149
static int offset[] = {
 
150
0,
 
151
0,
 
152
64,
 
153
128,
 
154
0,
 
155
0,
 
156
0,
 
157
0,
 
158
0,
 
159
0,
 
160
0,
 
161
};
 
162
 
 
163
int
 
164
main(int argc, char *argv[])
 
165
{
 
166
    PLFLT xmin, xmax, ymin, ymax, ycharacter_scale, yoffset;
 
167
    PLFLT chardef, charht, deltax, deltay, x, y;
 
168
    int i, j, page, length, slice;
 
169
    char cmdString[20];
 
170
 
 
171
    plparseopts(&argc, argv, PL_PARSE_FULL);
 
172
 
 
173
    plinit();
 
174
    
 
175
    for (page=0; page<11; page++) {
 
176
 
 
177
        pladv(0);
 
178
 
 
179
        /* Set up viewport and window */
 
180
 
 
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);
 
184
        plschr(0., 0.8);
 
185
        ycharacter_scale = (1.0 - 0.0)/(ymax-ymin);
 
186
 
 
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;
 
190
 
 
191
        /* Draw the grid using plbox */
 
192
 
 
193
        plcol0(2);
 
194
        deltax = 1.0/((PLFLT)nxcells[page]);
 
195
        deltay = 1.0/((PLFLT)nycells[page]);
 
196
        plbox("bcg", deltax, 0, "bcg", deltay, 0);
 
197
        plcol0(15);
 
198
        length=hi[page]-lo[page];
 
199
        slice = 0;
 
200
        for (j=nycells[page]-1;j>=-1;j--) {
 
201
            y = (0.5+j)*deltay;
 
202
            for (i=0;i<nxcells[page];i++) {
 
203
                x  = (0.5+i)*deltax;
 
204
                if (slice < length) {
 
205
                    if (page == 0) {
 
206
                        sprintf(cmdString,"#%s",Greek[slice]);
 
207
                    }
 
208
                    else if ((page >= 1) && (page <= 3)) {
 
209
                        sprintf(cmdString,"##[0x%.4x]",Type1[offset[page]+slice]);
 
210
                    }
 
211
                    else if (page >= 4) {
 
212
                        sprintf(cmdString,"##[0x%.4x]",lo[page]+slice);
 
213
                    }
 
214
                    plptex(x,y+yoffset,1.,0.,0.5, &cmdString[1]);
 
215
                    plptex(x,y-yoffset,1.,0.,0.5, cmdString);
 
216
                }
 
217
                slice += 1;
 
218
            }
 
219
        }
 
220
 
 
221
        plschr(0., 1.0);
 
222
        /* Page title */
 
223
        plmtex("t", 1.5, 0.5, 0.5, title[page]);
 
224
    }
 
225
 
 
226
    /* Restore defaults */
 
227
    plcol0(1);
 
228
 
 
229
    plend();
 
230
    exit(0);
 
231
 
 
232
}
 
233