-
Notifications
You must be signed in to change notification settings - Fork 33
/
Copy pathISurfaceGraphicGL.java
130 lines (99 loc) · 3.68 KB
/
ISurfaceGraphicGL.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*---
iGeo - http://igeo.jp
Copyright (c) 2002-2013 Satoru Sugihara
This file is part of iGeo.
iGeo is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation, version 3.
iGeo is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with iGeo. If not, see <http://www.gnu.org/licenses/>.
---*/
package igeo.gui;
import java.util.ArrayList;
//import java.awt.Color;
import igeo.*;
/**
Graphic subobject class to draw a surface object by OpenGL.
It contains ISurfaceGraphicFillGL and ISurfaceGraphicWireframeGL inside.
@author Satoru Sugihara
*/
public class ISurfaceGraphicGL extends IGraphicObject{
//public static float defaultColorRed = .5f; //1f;
//public static float defaultColorGreen = .5f; //1f;
//public static float defaultColorBlue = .5f; //1f;
//public static float defaultColorAlpha = 1f;
//public static float defaultShininess=0.3f; //0.5f; //1f; //5f; //1f; //0.1f; //0.5f; //1f;
public ISurfaceGraphicFillGL fill;
public ISurfaceGraphicWireframeGL wireframe;
public ISurfaceGraphicGL(ISurface srf){
super(srf);
// fill and wireframe are instantiated here but actual geometry initialization is done at the first draw by each object
wireframe = new ISurfaceGraphicWireframeGL(srf);
fill = new ISurfaceGraphicFillGL(srf);
}
public ISurfaceGraphicGL(ISurfaceR srf){
super(srf);
// fill and wireframe are instantiated here but actual geometry initialization is done at the first draw by each object
wireframe = new ISurfaceGraphicWireframeGL(srf);
fill = new ISurfaceGraphicFillGL(srf);
}
public ISurfaceGraphicGL(IObject obj, ISurfaceGeo srf){
super(obj);
// fill and wireframe are instantiated here but actual geometry initialization is done at the first draw by each object
wireframe = new ISurfaceGraphicWireframeGL(obj,srf);
fill = new ISurfaceGraphicFillGL(obj,srf);
}
public void setAttribute(IAttribute attr){
super.setAttribute(attr);
if(fill!=null) fill.setAttribute(attr);
if(wireframe!=null) wireframe.setAttribute(attr);
}
public void setColor(IColor c){
super.setColor(c);
if(fill!=null) fill.setColor(c);
if(wireframe!=null) wireframe.setColor(c);
}
public void setWeight(float w){
if(wireframe!=null) wireframe.setWeight(w);
}
public float getWeight(){
if(wireframe!=null) return wireframe.getWeight();
return -1f;
}
@Override public void update(){
if(fill!=null) fill.update();
if(wireframe!=null) wireframe.update();
}
public boolean isDrawable(IGraphicMode m){ return m.isGL(); }
public void draw(IGraphics g){
// fill first or wireframe first?
if(g.view().mode().isFill()){
/*
if(fill==null){
if(parent instanceof ISurface)
fill = new ISurfaceGraphicFillGL((ISurface)parent);
else if(parent instanceof ISurfaceR)
fill = new ISurfaceGraphicFillGL((ISurfaceR)parent);
fill.setColor(color);
}
*/
fill.draw(g);
}
if(g.view().mode().isWireframe()){
/*
if(wireframe==null){
if(parent instanceof ISurface)
wireframe = new ISurfaceGraphicWireframeGL((ISurface)parent);
else if(parent instanceof ISurfaceR)
wireframe = new ISurfaceGraphicWireframeGL((ISurfaceR)parent);
wireframe.setColor(color);
}
*/
wireframe.draw(g);
}
}
}