|
hello7.c.java |
|
1 package sutut1;
2
3 import javax.servlet.*;
4 import javax.servlet.http.*;
5 import java.io.*;
6 import java.util.*;
7
8 import us.oh.state.common.utility.*;
9
10 public class hello7 extends HttpServlet {
11
12 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
13 response.setContentType("application/pdf");
14 PdfChart page = new PdfChart(response.getOutputStream());
15 // Identify the chart
16 page.setTextColor(0x0);
17 page.setFont(page.BOLD, 24);
18 page.println("Tutorial - Hello 7c");
19 page.setFont(page.NORMAL, 12);
20 page.println(new Date().toString());
21
22 // Get value sets and associate them to the chart
23 page.appendValues(sineWave(36));
24 double [] noise = generateNoise(72);
25 page.appendValues(digitalMean(noise, 6));
26 page.appendValues(noisyWave(noise));
27
28 // Apply grid lines
29 page.appendGridX(0.5, 1, 0x000088);
30 page.appendGridX(1.0, 9, 0x0);
31 page.appendGridY(1.0, 2, 0x0);
32
33 // Draw the main chart
34 page.drawMain(1.5, 7.0, 6.5, 3.0, 36, 4, 0xdddddd, 2.0, 0x0);
35
36 // Decorate the chart
37 String [] xLabels = new String [13];
38 for (int i = 0; i < xLabels.length; ++i) {
39 xLabels[i] = Integer.toString(i * 30);
40 }
41 page.drawBottomLabels(0.05, 0.375, 90.0, xLabels, 0.05);
42 page.drawLeftLabels(0.375, -0.05, 0.0,
43 new String [] {"-1.0", "-0.5", "0.0", "0.5", "1.0"}, 0.05);
44 page.drawLegend(5.5, 5.25, 2.0, 1.0, 0.09, 0.09, 0xdddddd, 2.0, 0x0);
45
46 // Output the chart to the PDF file
47 page.close();
48 }
49
50 // Instance a simple sine wave value set
51 ValueSet sineWave(int resolution) {
52 double [] v = new double[resolution + 1];
53 for (int i = 0; i < v.length; ++i) {
54 v[i] = Math.sin((double)i * 2.0 * Math.PI / (double)(v.length - 1));
55 }
56 ValueSet vs = new AreaValueSet("Sine Wave", 1.0, 0x00ff00,
57 v, 0.0, 2.0 * Math.PI, 0xaaaaff, true);
58 vs.setRange(-1.0, 1.0, -1.0);
59 return vs;
60 }
61
62 // Produce sine wave data which is modulated with random offsets
63 double [] generateNoise(int resolution) {
64 double [] v = new double[resolution + 1];
65 for (int i = 0; i < v.length; ++i) {
66 v[i] = Math.sin((double)i * 2.0 * Math.PI / (double)(v.length - 1))
67 / 2.0 + Math.random() - 0.5;
68 }
69 return v;
70 }
71
72 // Instance a sine wave value set which is modulated with random offsets
73 ValueSet noisyWave(double [] values) {
74 BurstGlyphValueSet vs = new BurstGlyphValueSet("Noisy Wave", 1.0, 0xffff00,
75 values, 0.0, 2.0 * Math.PI, 0xff00ff, 8, new double [] {0.05, 0.02});
76 vs.setConnected(true);
77 vs.setRange(-1.0, 1.0, -1.0);
78 return vs;
79 }
80
81 // Bars to represent a summarization of the noise
82 ValueSet digitalMean(double [] values, int interval) {
83 double [] v = new double [values.length / interval - 1];
84 int i = 0;
85 int n = 0;
86 v[n] = 0.0;
87 while (i++ < values.length) {
88 v[n] += values[i];
89 if ((i % interval) == 0) {
90 if (++n < v.length) v[n] = 0.0;
91 else break;
92 }
93 }
94 ValueSet vs = new BarValueSet("Digital Mean", 1.0, 0x00ffff, v, 0x000088, 0.125);
95 vs.setRange(-(double)interval, (double)interval, 0.0);
96 return vs;
97 }
98
99 }
|
hello7.c.java |
|