Project

General

Profile

GraphicsOpsExamples2.java

Sergey Ivanovskiy, 08/29/2015 04:10 PM

Download (11.7 KB)

 
1
package test;
2

    
3

    
4
import javax.swing.*;
5

    
6
import com.goldencode.p2j.ui.client.gui.driver.LineStroke;
7

    
8
import java.awt.*;
9
import java.awt.geom.AffineTransform;
10
import java.awt.geom.Line2D;
11

    
12
public class GraphicsOpsExamples2
13
{
14
   static class StrokeManager
15
   {
16
      // initialize dot pattern 
17
      private final Stroke dotStroke = new BasicStroke(LineStroke.DOT_LINE_WIDTH,
18
               BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0.0f, new float[] {
19
                        LineStroke.DOT_STEP, LineStroke.DOT_STEP }, LineStroke.DOT_STEP);
20

    
21
      private final Stroke dotSmallStroke = new BasicStroke(LineStroke.DOT_LINE_WIDTH,
22
               BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0.0f, new float[] {
23
                        LineStroke.DOT_STEP_SMALL, LineStroke.DOT_STEP_SMALL },
24
               LineStroke.DOT_STEP_SMALL);
25

    
26
      private final Stroke dotSmallThinStroke = new BasicStroke(LineStroke.DOT_LINE_THIN_WIDTH,
27
               BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0.0f, new float[] {
28
                        LineStroke.DOT_STEP_SMALL, LineStroke.DOT_STEP_SMALL },
29
               LineStroke.DOT_STEP_SMALL);
30

    
31
      public final void setLineStroke(Graphics2D g2, LineStroke stroke, int strokeWidth)
32
      { // default line stroke
33
         Stroke javaStroke;
34

    
35
         switch (stroke)
36
         {
37
            case SPECIFIED_WIDTH:
38
               javaStroke = new BasicStroke(strokeWidth);
39
               break;
40
            case DOTTED:
41
               javaStroke = dotStroke;
42
               break;
43
            case DOTTED_SMALL:
44
               javaStroke = dotSmallStroke;
45
               break;
46
            case DOTTED_SMALL_THIN:
47
               javaStroke = dotSmallThinStroke;
48
               break;
49
            default:
50
               javaStroke = new BasicStroke();
51
         }
52

    
53
         g2.setStroke(javaStroke);
54
      }
55
   }
56

    
57
   public static void main(String[] args)
58
   {
59
      SwingUtilities.invokeLater(new Runnable()
60
      {
61
         public void run()
62
         {
63
            final JFrame frame = new JFrame("Graphics Operations");
64
            frame.setSize(800, 600);
65
            frame.setLocation(150, 150);
66
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
67
            
68
            final StrokeManager strokeManager = new StrokeManager();
69
            frame.setContentPane(new JComponent()
70
            {
71
               public void paint(Graphics g)
72
               {
73
                  Graphics2D g2 = (Graphics2D) g;
74
                  g2.setBackground(Color.white);
75
                  g2.clearRect(0, 0, 800, 600);
76
                  g2.setColor(Color.black);
77
                  strokeManager.setLineStroke(g2, LineStroke.SPECIFIED_WIDTH, 1);
78
                  g2.drawLine(10, 10, 790, 30);
79
                  g2.drawLine(10, 30, 790, 10);
80
                  g2.drawRect(40, 40, 55, 30);
81
                  //g2.fillRect(125, 40, 55, 30);
82
                  g2.drawLine(210, 40, 210, 70);
83
                  g2.drawLine(241, 40, 241, 70);
84
                  g2.drawLine(250, 40, 305, 40);
85
                  g2.drawLine(250, 70, 305, 70);
86

    
87
                  g2.drawLine(320, 40, 350, 70);
88
                  g2.drawLine(320, 70, 350, 40);
89
                  
90
                  strokeManager.setLineStroke(g2, LineStroke.SPECIFIED_WIDTH, 2);
91
                  g2.drawLine(10, 80, 790, 100);
92
                  g2.drawLine(10, 100, 790, 80);
93
                  g2.drawRect(40, 110, 55, 30);
94
                  //g2.fillRect(125, 110, 55, 30);
95
                  g2.drawLine(210, 110, 210, 140);
96
                  g2.drawLine(241, 110, 241, 140);
97
                  g2.drawLine(250, 110, 305, 110);
98
                  g2.drawLine(250, 140, 305, 140);
99
                  
100
                  g2.drawLine(320, 110, 350, 140);
101
                  g2.drawLine(320, 140, 350, 110);
102

    
103
                  strokeManager.setLineStroke(g2, LineStroke.SPECIFIED_WIDTH, 3);
104
                  g2.drawLine(10, 150, 790, 170);
105
                  g2.drawLine(10, 170, 790, 150);
106
                  g2.drawRect(40, 180, 55, 30);
107
                  //g2.fillRect(125, 180, 55, 30);
108
                  g2.drawLine(210, 180, 210, 210);
109
                  g2.drawLine(241, 180, 241, 210);
110
                  g2.drawLine(250, 180, 305, 180);
111
                  g2.drawLine(250, 210, 305, 210);
112
                  g2.drawLine(320, 180, 350, 210);
113
                  g2.drawLine(320, 210, 350, 180);
114

    
115
                  strokeManager.setLineStroke(g2, LineStroke.DOTTED, 3);
116
                  g2.drawLine(10, 220, 790, 240);
117
                  g2.drawLine(10, 240, 790, 220);
118
                  g2.drawRect(40, 250, 55, 30);
119
                  //g2.fillRect(125, 250, 55, 30);
120
                  g2.drawLine(210, 250, 210, 280);
121
                  g2.drawLine(241, 250, 241, 280);
122
                  g2.drawLine(250, 250, 305, 250);
123
                  g2.drawLine(250, 280, 305, 280);
124
                  g2.drawLine(320, 250, 350, 280);
125
                  g2.drawLine(320, 280, 350, 250);
126
                  strokeManager.setLineStroke(g2, LineStroke.DOTTED_SMALL, 3);
127
                  g2.drawLine(10, 290, 790, 310);
128
                  g2.drawLine(10, 310, 790, 290);
129
                  g2.drawRect(40, 320, 55, 30);
130
                  //g2.fillRect(125, 320, 55, 30);
131
                  g2.drawLine(210, 320, 210, 350);
132
                  g2.drawLine(241, 320, 241, 350);
133
                  g2.drawLine(250, 320, 305, 320);
134
                  g2.drawLine(250, 350, 305, 350);
135
                  g2.drawLine(320, 320, 350, 350);
136
                  g2.drawLine(320, 350, 350, 320);
137
                  strokeManager.setLineStroke(g2, LineStroke.DOTTED_SMALL_THIN, 3);
138
                  g2.drawLine(10, 360, 790, 380);
139
                  g2.drawRect(40, 390, 55, 30);
140
                  //g2.fillRect(125, 390, 55, 30);
141
                  g2.drawLine(210, 390, 210, 420);
142
                  g2.drawLine(241, 390, 241, 420);
143
                  g2.drawLine(250, 390, 305, 390);
144
                  g2.drawLine(250, 420, 305, 420);
145
                  g2.drawLine(320, 390, 350, 420);
146
                  g2.drawLine(320, 420, 350, 390);
147

    
148
                  
149
                  
150
//                PaintPrimitives.TRANSLATE_POP 1; x = -358; y = -4
151
//                PaintPrimitives.TRANSLATE_PUSH 2; x = 379; y = 4
152
//                PaintPrimitives.CLIP 3; x = 0; y = 0; width = 20; height = 18
153
//                PaintPrimitives.SET_COLOR r = 240; g = 240; b = 240
154
//                PaintPrimitives.FILL_3D_RECT x = 0; y = 0; width = 19; height = 17; raised = true
155
//                PaintPrimitives.SET_COLOR r = 0; g = 0; b = 0
156
//                PaintPrimitives.SET_LINE_STROKE strokeStyleId = 1; strokeWidth = 2
157
//                PaintPrimitives.DRAW_LINE x1 = 4; y1 = 3; x2 = 15; y2 = 14
158
//                PaintPrimitives.DRAW_LINE x1 = 4; y1 = 14; x2 = 15; y2 = 3
159
//                PaintPrimitives.DRAW_LINE x1 = 5; y1 = 14; x2 = 16; y2 = 3
160
//                PaintPrimitives.SET_COLOR r = 240; g = 240; b = 240
161
//                PaintPrimitives.FILL_RECT x = 2; y = 2; width = 15; height = 2
162
//                PaintPrimitives.FILL_RECT x = 2; y = 14; width = 15; height = 2
163
//                PaintPrimitives.SET_COLOR r = 0; g = 0; b = 0
164
//                PaintPrimitives.SET_LINE_STROKE strokeStyleId = 0; strokeWidth = 0
165
                  strokeManager.setLineStroke(g2, LineStroke.SPECIFIED_WIDTH, 2);
166
                  g2.setColor(Color.black);
167
                  g2.translate(0, 450);
168
                  g2.drawString("1. Close button precise emulation", 0, -10);
169
                  g2.drawLine(4, 3, 15, 14);
170
                  g2.drawLine(4, 14, 15, 3);
171
                  g2.drawLine(5, 14, 16, 3);
172
                  g2.setColor(Color.white);
173
                  g2.fillRect(2, 2, 15, 2);
174
                  g2.fillRect(2, 14, 15, 2);
175
                  
176
                  g2.translate(340, 0);
177
                  g2.setColor(Color.black);
178
                  g2.drawString("2. Close button with help of shapes", 0, -10);
179
                  Line2D.Float l1 = new Line2D.Float(4, 3, 15, 14);
180
                  g2.draw(g2.getStroke().createStrokedShape(l1));
181
                  Line2D.Float l2 = new Line2D.Float(4, 14, 15, 3);
182
                  g2.draw(g2.getStroke().createStrokedShape(l2));
183
                  g2.setColor(Color.white);
184
                  g2.fillRect(2, 2, 15, 2);
185
                  g2.fillRect(2, 14, 15, 2);
186

    
187
                  g2.translate(-340, 30);
188
//                  g2.setColor(Color.black);
189
//                  Polygon p1 = new Polygon();
190
//                  p1.addPoint(4, 3);
191
//                  p1.addPoint(5, 4);
192
//                  p1.addPoint(6, 5);
193
//                  p1.addPoint(7, 6);
194
//                  p1.addPoint(8, 7);
195
//                  p1.addPoint(9, 8);
196
//                  p1.addPoint(10, 9);
197
//                  p1.addPoint(11, 10);
198
//                  p1.addPoint(12, 11);
199
//                  p1.addPoint(13, 12);
200
//                  p1.addPoint(14, 13);
201
//                  p1.addPoint(15, 14);
202
//                  g2.draw(p1);
203
//                  Polygon p2 = new Polygon();
204
//                  p2.addPoint(4, 14);
205
//                  p2.addPoint(5, 13);
206
//                  p2.addPoint(6, 12);
207
//                  p2.addPoint(7, 11);
208
//                  p2.addPoint(8, 10);
209
//                  p2.addPoint(9, 9);
210
//                  p2.addPoint(10, 8);
211
//                  p2.addPoint(11, 7);
212
//                  p2.addPoint(12, 6);
213
//                  p2.addPoint(13, 5);
214
//                  p2.addPoint(14, 4);
215
//                  p2.addPoint(15, 3);
216
//                  p2.addPoint(5, 14);
217
//                  p2.addPoint(6, 13);
218
//                  p2.addPoint(7, 12);
219
//                  p2.addPoint(8, 11);
220
//                  p2.addPoint(9, 10);
221
//                  p2.addPoint(10, 9);
222
//                  p2.addPoint(11, 8);
223
//                  p2.addPoint(12, 7);
224
//                  p2.addPoint(13, 6);
225
//                  p2.addPoint(14, 5);
226
//                  p2.addPoint(15, 4);
227
//                  p2.addPoint(16, 3);
228
//                  g2.draw(p2);
229
//                  g2.setColor(Color.white);
230
//                  g2.fillRect(2, 2, 15, 2);
231
//                  g2.fillRect(2, 14, 15, 2);
232
                  //first successful
233

    
234
                  g2.setColor(Color.black);
235
                  g2.drawString("3. Close button to draw line / with antialias on", 0, 0);
236
                  
237
                  g2.translate(0, 10);
238

    
239
                  AffineTransform at = g2.getTransform();
240
                  g2.translate(4, 3);
241
                  g2.setColor(Color.black);
242
                  g2.drawLine(0, 0, 11, 11);
243
                  g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
244
                  AffineTransform at1 = new AffineTransform(g2.getTransform());
245
                  at1.rotate(Math.PI / 2.0, 5.5, 5.5);
246
                  g2.setTransform(at1);
247
                  g2.drawLine(0, 0, 11, 11);
248
                  g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
249
                  g2.setTransform(at);
250
                  g2.setColor(Color.white);
251
                  g2.fillRect(2, 2, 15, 2);
252
                  g2.fillRect(2, 14, 15, 2);
253
                  //second successful
254
                  g2.setColor(Color.black);
255
                  g2.translate(50, 0);
256
                  g2.drawLine(4, 3, 15, 14);
257
                  g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
258
                  g2.drawLine(4, 14, 15, 3);
259
                  g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
260
                  //g2.drawLine(5, 14, 16, 3);
261
                  g2.setColor(Color.white);
262
                  g2.fillRect(2, 2, 15, 2);
263
                  g2.fillRect(2, 14, 15, 2);
264

    
265
               }
266
            });
267
            
268
            frame.setVisible(true);
269
         }
270
      });
271
   }
272
}
273