Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libFMap / src / com / iver / cit / gvsig / fmap / ExtentHistory.java @ 449

History | View | Annotate | Download (2.82 KB)

1
/* Generated by Together */
2

    
3
package com.iver.cit.gvsig.fmap;
4

    
5
import java.awt.geom.Rectangle2D;
6

    
7
import com.iver.utiles.XMLEntity;
8

    
9
public class ExtentHistory {
10
    private int NUMREC;
11
    private Rectangle2D[] extents;
12
    private int num = 0;
13

    
14
    /**
15
     * Creates a new ExtentsHistory object.
16
     */
17
    public ExtentHistory() {
18
        NUMREC = 4;
19
        extents = new Rectangle2D.Double[NUMREC];
20
    }
21

    
22
    /**
23
     * Creates a new ExtentsHistory object.
24
     *
25
     * @param numEntries Numero de entradas que se guardan en el historico de
26
     *        rect?ngulos, por defecto 20
27
     */
28
    public ExtentHistory(int numEntries) {
29
        NUMREC = numEntries;
30
    }
31

    
32
    /**
33
     * Pone un nuevo rect?ngulo al final del array
34
     *
35
     * @param ext Rect?ngulo que se a?ade al hist?rico
36
     */
37
    public void put(Rectangle2D.Double ext) {
38
        if ((ext != null) && ((num < 1) || (ext != extents[num - 1]))) {
39
            if (num < (NUMREC)) {
40
                extents[num] = ext;
41
                num = num + 1;
42
            } else {
43
                for (int i = 0; i < (NUMREC - 1); i++) {
44
                    extents[i] = extents[i + 1];
45
                }
46

    
47
                extents[num - 1] = ext;
48
            }
49
        }
50
    }
51

    
52
    /**
53
     * Devuelve true si hay alg?n rect?ngulo en el hist?rico
54
     *
55
     * @return true o false en caso de que haya o no haya rect?ngulos
56
     */
57
    public boolean hasPrevious() {
58
        return num > 0;
59
    }
60

    
61
    /**
62
     * Obtiene el ?ltimo rect?ngulo que se a?adi? al hist?rico
63
     *
64
     * @return Ultimo rect?ngulo a?adido
65
     */
66
    public Rectangle2D get() {
67
        Rectangle2D ext = extents[num - 1];
68

    
69
        return ext;
70
    }
71

    
72
    /**
73
     * Devuelve el ?ltimo rect?ngulo del hist?rico y lo elimina del mismo
74
     *
75
     * @return Ultimo rect?ngulo a?adido
76
     */
77
    public Rectangle2D removePrev() {
78
        Rectangle2D ext = extents[num - 1];
79
        num = num - 1;
80

    
81
        return ext;
82
    }
83
    public XMLEntity getXMLEntity(){
84
            XMLEntity xml=new XMLEntity();
85
            xml.putProperty("num",num);
86
            xml.putProperty("numrec",NUMREC);
87
            for (int i=0;i<NUMREC;i++){
88
                    if (extents[i] != null){
89
                    xml.putProperty("extent"+i+"X",extents[i].getX());
90
                    xml.putProperty("extent"+i+"Y",extents[i].getY());
91
                    xml.putProperty("extent"+i+"W",extents[i].getWidth());
92
                    xml.putProperty("extent"+i+"H",extents[i].getHeight());
93
                    }
94
            }
95
            return xml;
96
    }
97
    public static ExtentHistory createFromXML(XMLEntity xml){
98
            ExtentHistory eh=new ExtentHistory();
99
            eh.num=xml.getIntProperty("num");
100
            eh.NUMREC=xml.getIntProperty("numrec");
101
            for (int i=0;i<eh.NUMREC;i++){
102
                    eh.extents[i].setRect(xml.getDoubleProperty("extent"+i+"X"),xml.getDoubleProperty("extent"+i+"Y"),xml.getDoubleProperty("extent"+i+"W"),xml.getDoubleProperty("extent"+i+"H"));
103
            }
104
            return eh;
105
    }
106
}