|
hello7.b.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 7b");
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 page.appendValues(noisyWave(72));
25
26 // Apply grid lines
27 page.appendGridX(0.5, 1, 0x000088);
28 page.appendGridX(1.0, 9, 0x0);
29 page.appendGridY(1.0, 2, 0x0);
30
31 // Draw the main chart
32 page.drawMain(1.5, 7.0, 6.5, 3.0, 36, 4, 0xdddddd, 2.0, 0x0);
33
34 // Decorate the chart
35 String [] xLabels = new String [13];
36 for (int i = 0; i < xLabels.length; ++i) {
37 xLabels[i] = Integer.toString(i * 30);
38 }
39 page.drawBottomLabels(0.05, 0.375, 90.0, xLabels, 0.05);
40 page.drawLeftLabels(0.375, -0.05, 0.0,
41 new String [] {"-1.0", "-0.5", "0.0", "0.5", "1.0"}, 0.05);
42 page.drawLegend(5.5, 5.25, 2.0, 1.0, 0.09, 0.09, 0xdddddd, 2.0, 0x0);
43
44 // Output the chart to the PDF file
45 page.close();
46 }
47
48 // Instance a simple sine wave value set
49 ValueSet sineWave(int resolution) {
50 double [] v = new double[resolution + 1];
51 for (int i = 0; i < v.length; ++i) {
52 v[i] = Math.sin((double)i * 2.0 * Math.PI / (double)(v.length - 1));
53 }
54 AreaValueSet vs = new AreaValueSet("Sine Wave", 1.0, 0x00ff00,
55 v, 0.0, 2.0 * Math.PI, 0xaaaaff, true);
56 vs.setRange(-1.0, 1.0, -1.0);
57 return vs;
58 }
59
60 // Instance a sine wave value set which is modulated with random offsets
61 ValueSet noisyWave(int resolution) {
62 double [] v = new double[resolution + 1];
63 for (int i = 0; i < v.length; ++i) {
64 v[i] = Math.sin((double)i * 2.0 * Math.PI / (double)(v.length - 1))
65 / 2.0 + Math.random() - 0.5;
66 }
67 LineValueSet vs = new LineValueSet("Noisy Wave", 1.0, 0xff0000,
68 v, 0.0, 2.0 * Math.PI);
69 vs.setRange(-1.0, 1.0, -1.0);
70 return vs;
71 }
72
73 }
|
hello7.b.java |
|