OSDN Git Service

initial
[gokigen/A01d.git] / app / src / main / java / net / osdn / gokigen / a01d / liveview / message / ShowMessageHolder.java
1 package net.osdn.gokigen.a01d.liveview.message;
2
3 import android.graphics.Color;
4 import android.view.ViewDebug;
5
6 /**
7  *
8  *
9  * Created by MRSa on 2017/03/01.
10  */
11 public class ShowMessageHolder implements IMessageDrawer, IMessageHolder
12 {
13     /**
14      *
15      */
16     private class messageHolder
17     {
18         private String message = "";
19         private int color = Color.BLUE;
20         private int textSize = 16;
21
22         String getMessage()
23         {
24             return message;
25         }
26
27         void setMessage(String message)
28         {
29             this.message = message;
30         }
31
32         int getColor()
33         {
34             return color;
35         }
36
37         void setColor(int color)
38         {
39             this.color = color;
40         }
41
42         int getTextSize()
43         {
44             return textSize;
45         }
46
47         void setTextSize(int textSize)
48         {
49             this.textSize = textSize;
50         }
51     }
52
53     private messageHolder upperLeft = new messageHolder();
54     private messageHolder upperRight = new messageHolder();
55     private messageHolder center = new messageHolder();
56     private messageHolder lowerLeft = new messageHolder();
57     private messageHolder lowerRight = new messageHolder();
58     private messageHolder upperCenter = new messageHolder();
59     private messageHolder lowerCenter = new messageHolder();
60     private messageHolder leftCenter = new messageHolder();
61     private messageHolder rightCenter = new messageHolder();
62     private float level_horizontal = Float.NaN;
63     private float level_vertical = Float.NaN;
64
65     private float LEVELGAUGE_THRESHOLD_MIDDLE = 2.0f;
66     private float LEVELGAUGE_THRESHOLD_OVER = 15.0f;
67
68     /**
69      *   コンストラクタ
70      *
71      */
72     public ShowMessageHolder()
73     {
74         center.setTextSize(24);
75     }
76
77     /**
78      *
79      *
80      */
81     private messageHolder decideHolder(MessageArea area)
82     {
83         messageHolder target;
84         switch (area)
85         {
86             case CENTER:
87                 target = center;
88                 break;
89
90             case UPLEFT:
91                 target = upperLeft;
92                 break;
93
94             case UPRIGHT:
95                 target = upperRight;
96                 break;
97
98             case LOWLEFT:
99                 target = lowerLeft;
100                 break;
101
102             case LOWRIGHT:
103                 target = lowerRight;
104                 break;
105
106             case UPCENTER:
107                 target = upperCenter;
108                 break;
109
110             case LOWCENTER:
111                 target = lowerCenter;
112                 break;
113
114             case LEFTCENTER:
115                 target = leftCenter;
116                 break;
117
118             case RIGHTCENTER:
119                 target = rightCenter;
120                 break;
121
122             default:
123                 target = null;
124                 break;
125         }
126         return (target);
127     }
128
129     /**
130      *
131      *
132      */
133     @Override
134     public void setMessageToShow(MessageArea area, int color, int size, String message)
135     {
136         messageHolder target = decideHolder(area);
137         if (target != null)
138         {
139             target.setColor(color);
140             target.setTextSize(size);
141             target.setMessage(message);
142         }
143     }
144
145     /**
146      *
147      *
148      */
149     @Override
150     public void setLevelToShow(LevelArea area, float value)
151     {
152         if (area == LevelArea.LEVEL_HORIZONTAL)
153         {
154             level_horizontal = value;
155         }
156         else if (area == LevelArea.LEVEL_VERTICAL)
157         {
158            level_vertical = value;
159         }
160     }
161
162     /**
163      *
164      *
165      */
166     @Override
167     public int getSize(MessageArea area)
168     {
169         messageHolder target = decideHolder(area);
170         if (target != null)
171         {
172             return (target.getTextSize());
173         }
174         return (0);
175     }
176
177     /**
178      *
179      *
180      */
181     @Override
182     public int getColor(MessageArea area)
183     {
184         messageHolder target = decideHolder(area);
185         if (target != null)
186         {
187             return (target.getColor());
188         }
189         return (0);
190     }
191
192     /**
193      *
194      *
195      */
196     @Override
197     public String getMessage(MessageArea area)
198     {
199         messageHolder target = decideHolder(area);
200         if (target != null)
201         {
202             return (target.getMessage());
203         }
204         return ("");
205     }
206
207     /**
208      *
209      *
210      */
211     @Override
212     public boolean isLevel()
213     {
214         return (!((Float.isNaN(level_horizontal))||(Float.isNaN(level_vertical))));
215     }
216
217     /**
218      *
219      *
220      */
221     @Override
222     public float getLevel(LevelArea area)
223     {
224         float value;
225         if (area == LevelArea.LEVEL_HORIZONTAL)
226         {
227             value = level_horizontal;
228         }
229         else //  if (area == LevelArea.LEVEL_VERTICAL)
230         {
231             value = level_vertical;
232         }
233         return (value);
234     }
235
236     /**
237      *   傾きの色を取得する
238      *
239      */
240     @Override
241     public int getLevelColor(float value)
242     {
243         value = Math.abs(value);
244
245         if (value < LEVELGAUGE_THRESHOLD_MIDDLE)
246         {
247             return (Color.GREEN);
248         }
249         if (value > LEVELGAUGE_THRESHOLD_OVER)
250         {
251             return (Color.RED);
252         }
253         return (Color.YELLOW);
254     }
255
256     /**
257      *
258      *
259      */
260     @Override
261     public IMessageDrawer getMessageDrawer()
262     {
263         return (this);
264     }
265 }