Statistics
| Revision:

svn-gvsig-desktop / tags / v1_1_Build_1009 / libraries / libCq CMS for java.old / src / org / cresques / px / PxObjList.java @ 12649

History | View | Annotate | Download (4.94 KB)

1 2809 nacho
/*
2
 * Cresques Mapping Suite. Graphic Library for constructing mapping applications.
3
 *
4
 * Copyright (C) 2004-5.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
19
 *
20
 * For more information, contact:
21
 *
22
 * cresques@gmail.com
23
 */
24 2 luisw
package org.cresques.px;
25
26 94 luisw
import org.cresques.cts.ICoordTrans;
27
import org.cresques.cts.IProjection;
28 2809 nacho
29 2 luisw
import org.cresques.geo.Projected;
30
import org.cresques.geo.Projection;
31
import org.cresques.geo.ReProjection;
32 91 luisw
import org.cresques.geo.ViewPortData;
33 2 luisw
34 2809 nacho
import java.awt.Color;
35
import java.awt.Graphics2D;
36
import java.awt.geom.Point2D;
37
38
import java.util.Iterator;
39
import java.util.Vector;
40
41
42 96 luisw
public class PxObjList implements Colored, Drawable, IObjList {
43 2809 nacho
    IProjection proj = null;
44
    private Color pc = null;
45
    private Color fColor = null;
46
    protected Extent extent = null;
47
    Vector data = null;
48 2 luisw
49 2809 nacho
    public PxObjList() {
50
        data = new Vector();
51
        extent = new Extent();
52
    }
53 2 luisw
54 2809 nacho
    public PxObjList(IProjection proj) {
55
        data = new Vector();
56
        this.proj = proj;
57
        extent = new Extent();
58
    }
59 2 luisw
60 2809 nacho
    public IProjection getProjection() {
61
        return proj;
62
    }
63 2 luisw
64 2809 nacho
    public void setProjection(IProjection p) {
65
        proj = p;
66
    }
67 2 luisw
68 2809 nacho
    public void reProject(ICoordTrans rp) {
69
        extent = new Extent();
70
71
        Iterator iter = data.iterator();
72
        Projected obj = null;
73
74
        while (iter.hasNext()) {
75
            obj = (Projected) iter.next();
76
            obj.reProject(rp);
77
            extent.add(((Extent.Has) obj).getExtent());
78
        }
79
80
        setProjection(rp.getPDest());
81
    }
82
83
    public Extent getExtent() {
84
        return extent;
85
    }
86
87
    public Color c() {
88
        return pc;
89
    }
90
91
    public Color c(Color color) {
92
        pc = color;
93
94
        return pc;
95
    }
96
97
    public void setColor(Color color) {
98
        pc = color;
99
    }
100
101
    public Color getColor() {
102
        return pc;
103
    }
104
105
    public void setFillColor(Color color) {
106
        fColor = color;
107
    }
108
109
    public Color getFillColor() {
110
        return fColor;
111
    }
112
113
    public void draw(Graphics2D g, ViewPortData vp) {
114
        System.err.println("draw :" + this + ": " + size() + "objetos.");
115
116
        if (pc != null) {
117
            g.setColor(pc);
118
        }
119
120
        Iterator iter = data.iterator();
121
        Drawable dwObj = null;
122
123
        while (iter.hasNext()) {
124
            dwObj = (Drawable) iter.next();
125
126
            //if (dwObj.getClass() == PxContour.class)
127
            //        drawPxContour(g, vp, (PxContour) dwObj);
128
            //else
129
130
            /*extent = ((Extent.Has) dwObj).getExtent();
131
            if (vp.getExtent().minX()> extent.maxX()) continue;
132
            if (vp.getExtent().minY()> extent.maxY()) continue;
133
            if (vp.getExtent().maxX()< extent.minX()) continue;
134
            if (vp.getExtent().maxY()< extent.minY()) continue;*/
135
            dwObj.draw(g, vp);
136
        }
137
    }
138
139
    public IObjList getAt(Point2D pt) {
140
        PxObjList oList = new PxObjList();
141
        Iterator iter = data.iterator();
142
143
        while (iter.hasNext()) {
144
            PxObj o = (PxObj) iter.next();
145
146
            if (o.getExtent().isAt(pt)) {
147
                oList.add(o);
148
            }
149
        }
150
151
        return oList;
152
    }
153
154
    public Iterator iterator() {
155
        return data.iterator();
156
    }
157
158
    public int size() {
159
        return data.size();
160
    }
161
162
    public void add(Extent.Has obj) {
163
        if (obj != null) {
164
            extent.add(obj.getExtent());
165
            data.add(obj);
166
        }
167
    }
168
169
    public void remove(Object obj) {
170
        data.remove(obj);
171
    }
172
173
    public void clear() {
174
        extent = new Extent();
175
        data.clear();
176
    }
177
178
    /**
179
     * Prueba de reproyecci?n.
180
     *
181
     */
182
    public void drawPxContour(Graphics2D g, ViewPortData vp, PxContour obj) {
183
        IProjection prj = obj.getProjection();
184
        obj.setColor(pc);
185
        obj.setFillColor(fColor);
186
187
        if (prj != null) {
188
            if (prj != vp.getProjection()) {
189
                ICoordTrans rp = null;
190
191
                if (proj instanceof Projection) {
192
                    rp = new ReProjection(((Projection) proj),
193
                                          ((Projection) vp.getProjection()));
194
                }
195
196
                obj.draw(g, vp, rp);
197
            } else {
198
                obj.draw(g, vp);
199
            }
200
        } else {
201
            System.err.println("Proyecci?n nula o inadecuada.");
202
        }
203
    }
204
}