Update Copyright + Do not generate files if propertiesMap not changed
[scilab.git] / scilab / modules / graphic_objects / src / java / org / scilab / modules / graphic_objects / graphicObject / ClippableProperty.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
4  * Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
5  *
6  * This file must be used under the terms of the CeCILL.
7  * This source file is licensed as described in the file COPYING, which
8  * you should have received as part of this distribution.  The terms
9  * are also available at
10  * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
11  *
12  */
13
14 package org.scilab.modules.graphic_objects.graphicObject;
15
16 import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
17
18 /**
19  * ClippableProperty class
20  * @author Manuel JULIACHS
21  */
22 public class ClippableProperty {
23     /** ClippableProperty properties */
24     public enum ClippablePropertyType { CLIPSTATE, CLIPBOX, CLIPBOXSET };
25
26     /** Indicates how clipping is performed */
27     public static enum ClipStateType { OFF, CLIPGRF, ON;
28
29                                        /**
30                                         * Converts an integer to the corresponding enum
31                                         * @param intValue the integer value
32                                         * @return the clip state type enum
33                                         */
34     public static ClipStateType intToEnum(Integer intValue) {
35         switch (intValue) {
36             case 0:
37                 return ClipStateType.OFF;
38             case 1:
39                 return ClipStateType.CLIPGRF;
40             case 2:
41                 return ClipStateType.ON;
42             default:
43                 return null;
44         }
45     }
46
47                                      }
48
49     /** Clipping state */
50     private ClipStateType clipState;
51
52     /** Clip box (4- or 6-element array) */
53     private double[] clipBox;
54
55     /** Specifies whether the clip box has been set at least once */
56     private boolean clipBoxSet;
57
58     /** Constructor */
59     public ClippableProperty() {
60         clipState = ClipStateType.OFF;
61         clipBox = new double[4];
62         clipBoxSet = false;
63     }
64
65     /**
66      * Copy constructor
67      * @param clippableProperty the ClippableProperty to copy
68      */
69     public ClippableProperty(ClippableProperty clippableProperty) {
70         clipState = clippableProperty.clipState;
71
72         clipBox = new double[4];
73
74         for (int i = 0; i < clipBox.length; i++) {
75             clipBox[i] = clippableProperty.clipBox[i];
76         }
77
78         clipBoxSet = clippableProperty.clipBoxSet;
79     }
80
81     /**
82      * @return the clipBox
83      */
84     public Double[] getClipBox() {
85         Double[] retClipBox = new Double[clipBox.length];
86
87         for (int i = 0; i < clipBox.length; i++) {
88             retClipBox[i] = clipBox[i];
89         }
90
91         return retClipBox;
92     }
93
94     /**
95      * @param clipBox the clipBox to set
96      */
97     public UpdateStatus setClipBox(Double[] clipBox) {
98         UpdateStatus status = UpdateStatus.NoChange;
99         if (clipBoxSet == false) {
100             clipBoxSet = true;
101             status = UpdateStatus.Success;
102         }
103
104         if (status == UpdateStatus.Success) {
105             for (int i = 0; i < clipBox.length; i++) {
106                 this.clipBox[i] = clipBox[i];
107             }
108         } else {
109             for (int i = 0; i < clipBox.length; i++) {
110                 if (this.clipBox[i] != clipBox[i]) {
111                     this.clipBox[i] = clipBox[i];
112                     status = UpdateStatus.Success;
113                 }
114             }
115         }
116
117         return status;
118     }
119
120     /**
121      * @return the clipState
122      */
123     public ClipStateType getClipState() {
124         return clipState;
125     }
126
127     /**
128      * @param clipState the clipState to set
129      */
130     public UpdateStatus setClipState(ClipStateType clipState) {
131         if (clipState == ClipStateType.ON && clipBoxSet == false) {
132             clipState = ClipStateType.CLIPGRF;
133         }
134
135         if (this.clipState != clipState) {
136             this.clipState = clipState;
137             return UpdateStatus.Success;
138         }
139
140         return UpdateStatus.NoChange;
141     }
142
143     /**
144      * @return the clipBoxSet
145      */
146     public Boolean getClipBoxSet() {
147         return clipBoxSet;
148     }
149
150     /**
151      * @param clipBoxSet the clipBoxSet to set
152      */
153     public UpdateStatus setClipBoxSet(Boolean clipBoxSet) {
154         if (this.clipBoxSet != clipBoxSet) {
155             this.clipBoxSet = clipBoxSet;
156             return UpdateStatus.Success;
157         }
158
159         return UpdateStatus.NoChange;
160     }
161 }