RadioSvegliaGBE
Matrix.cpp
Go to the documentation of this file.
1 
11  // Inclusione <automatica> dell'header che si sta implementando
12 #include "Matrix.h"
13 
14 // Implementazione del metodo 'Init' della categoria 'Init'
15 // Init (1) --> default
17 {
18  // Se esiste, dealloco istanza corrente
19  if (m_Matrix)
20  {
21  // Deallocazione
22  delete m_Matrix;
23 
24  //Sanificazione manuale
25  m_Matrix = nullptr;
26  }
27 
28  // Assegnazione constexpr agli attributi della classe (valori di default)
36 
37  // Costruzione dell'oggetto di classe "RGBmatrixPanel" con il corrispettivo costruttore parametrico
38  m_Matrix = new RGBmatrixPanel(m_A, m_B, m_C, m_CLK, m_LAT, m_OE, m_DOUBLE_BUFFERING);
39 
40  // Dopo l'allocazione, controllo che effettivamente � andata a buon fine. Un puntatore nullo (i.e. 'nullptr') sarebbe indice di errori durante l'allocazione.
41  if (m_Matrix)
42  return true;
43 
44  return false;
45 }
46 
47 // Implementazione del metodo 'Init' della categoria 'Init'
48 // Init (2) --> parametrico
49 bool Matrix::Init(const bool& t_DOUBLE_BUFFERING)
50 {
51  // Se esiste, dealloco istanza corrente
52  if (m_Matrix)
53  {
54  // Deallocazione
55  delete m_Matrix;
56 
57  //Sanificazione manuale
58  m_Matrix = nullptr;
59  }
60 
61  // Assegnazione constexpr agli attributi della classe (valori di default)
68 
69  // Assegnazione valore del parametro 't_DOUBLE_BUFFERING' all'attributo della classe 'm_DOUBLE_BUFFERING'
70  m_DOUBLE_BUFFERING = t_DOUBLE_BUFFERING;
71 
72  // Costruzione dell'oggetto di classe "RGBmatrixPanel" con il corrispettivo costruttore parametrico
73  m_Matrix = new RGBmatrixPanel(m_A, m_B, m_C, m_CLK, m_LAT, m_OE, m_DOUBLE_BUFFERING);
74 
75  // Dopo l'allocazione, controllo che effettivamente � andata a buon fine. Un puntatore nullo (i.e. 'nullptr') sarebbe indice di errori durante l'allocazione.
76  if (m_Matrix)
77  return true;
78 
79  return false;
80 }
81 
82 // Implementazione del metodo 'Init' della categoria 'Init'
83 // Init (3) --> parametrico
84 bool Matrix::Init(const unsigned int& t_A, const unsigned int& t_B, const unsigned int& t_C,
85  const unsigned int& t_CLK, const unsigned int& t_LAT, const unsigned int& t_OE,
86  const bool& t_DOUBLE_BUFFERING)
87 {
88  // Se esiste, dealloco istanza corrente
89  if (m_Matrix)
90  {
91  // Deallocazione
92  delete m_Matrix;
93 
94  //Sanificazione manuale
95  m_Matrix = nullptr;
96  }
97 
98  // Assegnazione valore dei parametri agli attributi della classe
99  m_CLK = t_CLK;
100  m_OE = t_OE;
101  m_LAT = t_LAT;
102  m_A = t_A;
103  m_B = t_B;
104  m_C = t_C;
105  m_DOUBLE_BUFFERING = t_DOUBLE_BUFFERING;
106 
107  // Costruzione dell'oggetto di classe "RGBmatrixPanel" con il corrispettivo costruttore parametrico
108  m_Matrix = new RGBmatrixPanel(m_A, m_B, m_C, m_CLK, m_LAT, m_OE, m_DOUBLE_BUFFERING);
109 
110  // Dopo l'allocazione, controllo che effettivamente � andata a buon fine. Un puntatore nullo (i.e. 'nullptr') sarebbe indice di errori durante l'allocazione.
111  if (m_Matrix)
112  return true;
113 
114  return false;
115 }
116 
117 // Implementazione del metodo 'Begin' della categoria 'Service Management'
119 {
120  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato già allocato.
121  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
122  if (m_Matrix)
123  {
124  // Avvio la matrice con l'utilizzo del metodo 'begin' della classe "RGBmatrixPanel"
125  m_Matrix->begin();
126 
127  // Assegnazione dello stato di avviamento della matrice --> 'true' (da default --> 'false')
128  m_isStarted = true;
129 
130  return true;
131  }
132  else
133  return false;
134 }
135 
136 // Implementazione del metodo 'get_Matrix' della categoria 'LowLevel getters'
137 RGBmatrixPanel* const Matrix::get_Matrix()
138 {
139  // Ritorno l'attributo 'm_Matrix' perch� rappresenta gi� un puntatore
140  return m_Matrix;
141 }
142 
143 // Implementazione del metodo 'get_CLK' della categoria 'LowLevel getters'
144 unsigned int* const Matrix::get_CLK()
145 {
146  // Ritorno l'indirizzo di memoria dell'attributo 'm_CLK'
147  // Calcolo dell'indirizzo attraverso utilizzo dell'operatore '&'
148  return &m_CLK;
149 }
150 
151 // Implementazione del metodo 'get_OE' della categoria 'LowLevel getters'
152 unsigned int* const Matrix::get_OE()
153 {
154  // Ritorno l'indirizzo di memoria dell'attributo 'm_OE'
155  // Calcolo dell'indirizzo attraverso utilizzo dell'operatore '&'
156  return &m_OE;
157 }
158 
159 // Implementazione del metodo 'get_LAT' della categoria 'LowLevel getters'
160 unsigned int* const Matrix::get_LAT()
161 {
162  // Ritorno l'indirizzo di memoria dell'attributo 'm_LAT'
163  // Calcolo dell'indirizzo attraverso utilizzo dell'operatore '&'
164  return &m_LAT;
165 }
166 
167 // Implementazione del metodo 'get_A' della categoria 'LowLevel getters'
168 unsigned int* const Matrix::get_A()
169 {
170  // Ritorno l'indirizzo di memoria dell'attributo 'm_A'
171  // Calcolo dell'indirizzo attraverso utilizzo dell'operatore '&'
172  return &m_A;
173 }
174 
175 // Implementazione del metodo 'get_B' della categoria 'LowLevel getters'
176 unsigned int* const Matrix::get_B()
177 {
178  // Ritorno l'indirizzo di memoria dell'attributo 'm_B'
179  // Calcolo dell'indirizzo attraverso utilizzo dell'operatore '&'
180  return &m_B;
181 }
182 
183 // Implementazione del metodo 'get_C' della categoria 'LowLevel getters'
184 unsigned int* const Matrix::get_C()
185 {
186  // Ritorno l'indirizzo di memoria dell'attributo 'm_C'
187  // Calcolo dell'indirizzo attraverso utilizzo dell'operatore '&'
188  return &m_C;
189 }
190 
191 // Implementazione del metodo 'get_DOUBLE_BUFFERING' della categoria 'LowLevel getters'
193 {
194  // Ritorno l'indirizzo di memoria dell'attributo 'm_DOUBLE_BUFFERING'
195  // Calcolo dell'indirizzo attraverso utilizzo dell'operatore '&'
196  return &m_DOUBLE_BUFFERING;
197 }
198 
199 // Implementazione del metodo 'ReInit' della categoria 'LowLevel reallocator'
201 {
202  // Se esiste, dealloco istanza corrente
203  if (m_Matrix)
204  {
205  // Deallocazione
206  delete m_Matrix;
207 
208  //Sanificazione manuale
209  m_Matrix = nullptr;
210  }
211 
212  // Costruzione dell'oggetto di classe "RGBmatrixPanel" con il corrispettivo costruttore parametrico
213  m_Matrix = new RGBmatrixPanel(m_A, m_B, m_C, m_CLK, m_LAT, m_OE, m_DOUBLE_BUFFERING);
214 
215  // Dopo l'allocazione, controllo che effettivamente � andata a buon fine. Un puntatore nullo (i.e. 'nullptr') sarebbe indice di errori durante l'allocazione.
216  if (m_Matrix)
217  return true;
218 
219  return false;
220 }
221 
222 // Implementazione del metodo 'DefineShades' della categoria 'Risorse Interne'
223 void Matrix::DefineShades(const Color& t_COLOR, unsigned int& t_RED, unsigned int& t_GREEN, unsigned int& t_BLUE)
224 {
225  // Determino il colore scelto attraverso il campo enumerativo
226  switch (t_COLOR)
227  {
228  case Color::AQUA:
229  t_RED = 0;
230  t_GREEN = 255;
231  t_BLUE = 255;
232  break;
233 
234  case Color::BLACK:
235  t_RED = 0;
236  t_GREEN = 0;
237  t_BLUE = 0;
238  break;
239 
240  case Color::BLUE:
241  t_RED = 0;
242  t_GREEN = 0;
243  t_BLUE = 255;
244  break;
245 
246  case Color::FUCHSIA:
247  t_RED = 255;
248  t_GREEN = 0;
249  t_BLUE = 255;
250  break;
251 
252  case Color::GREEN:
253  t_RED = 0;
254  t_GREEN = 128;
255  t_BLUE = 0;
256  break;
257 
258  case Color::LIME:
259  t_RED = 0;
260  t_GREEN = 255;
261  t_BLUE = 0;
262  break;
263 
264  case Color::NAVY:
265  t_RED = 0;
266  t_GREEN = 0;
267  t_BLUE = 128;
268  break;
269 
270  case Color::PURPLE:
271  t_RED = 128;
272  t_GREEN = 0;
273  t_BLUE = 128;
274  break;
275 
276  case Color::RED:
277  t_RED = 255;
278  t_GREEN = 0;
279  t_BLUE = 0;
280  break;
281 
282  case Color::TEAL:
283  t_RED = 0;
284  t_GREEN = 128;
285  t_BLUE = 128;
286  break;
287 
288  case Color::WHITE:
289  t_RED = 255;
290  t_GREEN = 255;
291  t_BLUE = 255;
292  break;
293 
294  case Color::YELLOW:
295  t_RED = 255;
296  t_GREEN = 255;
297  t_BLUE = 0;
298  break;
299  }
300 }
301 
302 // Implementazione del metodo 'from_String_to_Char' della categoria 'Risorse Interne'
303 char* Matrix::from_String_to_Char(String& t_toConvert)
304 {
305  // Ottengo il contenitore allocato
306  char* l_Container = allocate_forConversion(t_toConvert.length() + 1);
307 
308  // Imposto il contenitore (per la successiva deallocazione)
309  set_Container(l_Container);
310 
311  // Converto con il metodo di Arduino 'toCharArray'
312  t_toConvert.toCharArray(l_Container, t_toConvert.length() + 1);
313 
314  // Ritorno il contenitore contenente la stringa convertita
315  return l_Container;
316 }
317 
318 // Implementazione del metodo 'allocate_forConversion' della categoria 'Risorse Interne'
319 char* Matrix::allocate_forConversion(const unsigned int& t_Length)
320 {
321  // Allocazione
322  char* l_Container = new char[t_Length];
323 
324  return l_Container;
325 }
326 
327 // Implementazione del metodo 'deallocate_forConversion' della categoria 'Risorse Interne'
328 bool Matrix::deallocate_forConversion(char* t_toDeallocate)
329 {
330  if (!t_toDeallocate)
331  return false;
332 
333  delete[] t_toDeallocate;
334  return true;
335 }
336 
337 // Implementazione del metodo 'set_Container' della categoria 'Risorse Interne'
338 void Matrix::set_Container(char* t_toSet)
339 {
340  m_Container = t_toSet;
341 }
342 
343 // Implementazione del metodo 'reset_Container' della categoria 'Risorse Interne'
345 {
346  m_Container = nullptr;
347 }
348 
349 // Implementazione del metodo 'Clear' della categoria 'Metodi'
351 {
352  // Effettuo l'operazione attraverso il metodo 'fillScreen' della classe "RGBmatrixPanel"
353 
354  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
355  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
356  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
357  if (m_Matrix && m_isStarted)
358  {
359  // Nessuna specializzazione del comportamento
360  // Effettuo la "pulizia" dello schermo
361  m_Matrix->fillScreen(0);
362 
363  return true;
364  }
365  else
366  return false;
367 }
368 
369 // Implementazione del metodo 'set_Cursor' della categoria 'Metodi'
370 bool Matrix::set_Cursor(const int& t_x, const int& t_y)
371 {
372  // Effettuo l'operazione attraverso il metodo 'setCursor' della classe "RGBmatrixPanel'
373 
374  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
375  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
376  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
377  if (m_Matrix && m_isStarted)
378  {
379  // Nessuna specializzazione del comportamento
380  m_Matrix->setCursor(t_x, t_y);
381 
382  return true;
383  }
384  else
385  return false;
386 }
387 
388 // Implementazione del metodo 'swapBuffers' della categoria 'Metodi'
390 {
391  // Effettuo l'operazione attraverso il metodo 'swapBuffers' della classe "RGBmatrixPanel'
392 
393  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
394  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
395  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
397  {
398  // Specializzazione --> 'DOUBLE_BUFFERING'
399  switch (t_Switch)
400  {
402  m_Matrix->swapBuffers((bool)IncrementalModifyBuffer::ALLOW_INCREMENTAL_MODIFY); /*true*/
403  break;
404 
406  m_Matrix->swapBuffers((bool)IncrementalModifyBuffer::LOCK_INCREMENTAL_MODIFY); /*false*/
407  break;
408 
410  return false;
411  break;
412  }
413 
414  return true;
415  }
416  else
417  return false;
418 }
419 
420 // Implementazione del metodo 'set_Color' della categoria 'Metodi'
421 // set_Color (1)
422 bool Matrix::set_Color(const unsigned int& t_RED, const unsigned int& t_GREEN, const unsigned int& t_BLUE)
423 {
424  // Effettuo l'operazione attraverso il metodo 'setTextColor' della classe "RGBmatrixPanel'
425 
426  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
427  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
428  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
429  if (m_Matrix && m_isStarted)
430  {
431  // Nessuna specializzazione del comportamento
432  m_Matrix->setTextColor(m_Matrix->Color888(t_RED, t_GREEN, t_BLUE));
433 
434  return true;
435  }
436  else
437  return false;
438 }
439 
440 // Implementazione del metodo 'set_Color' della categoria 'Metodi'
441 // set_Color (2)
442 bool Matrix::set_Color(const Color& t_COLOR)
443 {
444  // Effettuo l'operazione attraverso il metodo 'setTextColor' della classe "RGBmatrixPanel'
445 
446  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
447  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
448  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
449  if (m_Matrix && m_isStarted)
450  {
451  unsigned int l_RED;
452  unsigned int l_GREEN;
453  unsigned int l_BLUE;
454 
455  // Determino il colore scelto attraverso il campo enumerativo
456  DefineShades(t_COLOR, l_RED, l_GREEN, l_BLUE);
457 
458  // Nessuna specializzazione del comportamento
459  m_Matrix->setTextColor(m_Matrix->Color888(l_RED, l_GREEN, l_BLUE));
460 
461  return true;
462  }
463  else
464  return false;
465 }
466 
467 // Implementazione del metodo 'set_TextSize' della categoria 'Metodi'
468 bool Matrix::set_TextSize(const unsigned int& t_Size)
469 {
470  // Effettuo l'operazione attraverso il metodo 'setTextSize' della classe "RGBmatrixPanel'
471 
472  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
473  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
474  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
475  if (m_Matrix && m_isStarted)
476  {
477  // Nessuna specializzazione del comportamento
478  m_Matrix->setTextSize(t_Size);
479 
480  return true;
481  }
482  else
483  return false;
484 }
485 
486 // Implementazione del metodo 'Show' della categoria 'Metodi'
487 // Show (1)
488 bool Matrix::Show(const char* t_toShow)
489 {
490  // Effettuo l'operazione attraverso il metodo 'print' della classe "RGBmatrixPanel'
491 
492  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
493  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
494  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
495  if (m_Matrix && m_isStarted)
496  {
497  m_Matrix->print(t_toShow);
498 
499  return true;
500  }
501  else
502  return false;
503 }
504 
505 // Implementazione del metodo 'Show' della categoria 'Metodi'
506 // Show (2)
507 bool Matrix::Show(String& t_toShow)
508 {
509  // Effettuo l'operazione attraverso il metodo 'print' della classe "RGBmatrixPanel'
510 
511  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
512  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
513  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
514  if (m_Matrix && m_isStarted)
515  {
516  // Conversione
517  char* l_convertedString = from_String_to_Char(t_toShow);
518 
519  m_Matrix->print(l_convertedString);
520 
521  return true;
522  }
523  else
524  return false;
525 }
529 
530 // Implementazione del metodo 'SwapBuffersAutomated' della categoria 'Metodi di Automazione'
532 {
533  // Effettuo l'operazione attraverso il metodo 'swapBuffers' della classe "RGBmatrixPanel'
534 
535  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
536  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
537  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
539  {
540  // Specializzazione --> 'DOUBLE_BUFFERING'
542 
543  // Nonostante lo stato di 'IncrementalModifyBuffer' sia impostato su 'LOCK_INCREMENTAL_MODIFY', è necessaria una "pulizia" "di sicurezza" per
544  // assicurarsi l'eliminazione di eventuali informazioni precedentemente stampato sullo stato di 'IncrementalModifyBuffer::ALLOW_INCREMENTAL_MODIFY'
545  Clear();
546 
547  return true;
548  }
549  else
550  return false;
551 }
552 
553 // Implementazione del metodo 'ShowAutomated' della categoria 'Metodi di Automazione'
554 // ShowAutomated (1.1)
555 bool Matrix::ShowAutomated(const char* t_toShow, const int& t_x, const int& t_y, const unsigned int& t_Size,
556  const unsigned int& t_RED, const unsigned int& t_GREEN, const unsigned int& t_BLUE, const IncrementalModifyBuffer& t_Switch /* = IncrementalModifyBuffer::INVALID_REFERENCE */)
557 {
558  // Effettuo l'operazione attraverso il metodo 'print' della classe "RGBmatrixPanel'
559 
560  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
561  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
562  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
563  if (m_Matrix && m_isStarted)
564  {
565  // Specializzazione
566  if (m_DOUBLE_BUFFERING)
567  {
568  // 'DOUBLE_BUFFERING'
569  // Imposto il cursore nella posizione ricevuta dai parametri 't_x', 't_y'
570  set_Cursor(t_x, t_y);
571 
572  // Imposto la dimensione del testo da visualizzare ricevuta dal parametro 't_Size'
573  set_TextSize(t_Size);
574 
575  // Imposto il colore del testo da visualizzare ricevuto dai parametri 't_RED', 't_GREEN', 't_BLUE'
576  set_Color(t_RED, t_GREEN, t_BLUE);
577 
578  // Visualizzo le informazioni sulla matrice ricevute dal parametro 't_toShow'
579  Show(t_toShow);
580 
581  // Per visualizzare effettivamente le informazioni, effettuo lo swap dei buffer
582  if (!SwapBuffers(t_Switch)) { return false; }
583  }
584  else
585  {
586  // 'SINGLE_BUFFERING'
587  // Imposto il cursore nella posizione ricevuta dai parametri 't_x', 't_y'
588  set_Cursor(t_x, t_y);
589 
590  // Imposto la dimensione del testo da visualizzare ricevuta dal parametro 't_Size'
591  set_TextSize(t_Size);
592 
593  // Imposto il colore del testo da visualizzare ricevuto dai parametri 't_RED', 't_GREEN', 't_BLUE'
594  set_Color(t_RED, t_GREEN, t_BLUE);
595 
596  // Visualizzo le informazioni sulla matrice ricevute dal parametro 't_toShow'
597  Show(t_toShow);
598  }
599 
600  return true;
601  }
602  else
603  return false;
604 }
605 
606 // Implementazione del metodo 'ShowAutomated' della categoria 'Metodi di Automazione'
607 // ShowAutomated (1.2)
608 bool Matrix::ShowAutomated(const char* t_toShow, const int& t_x, const int& t_y, const unsigned int& t_Size, const Color& t_COLOR,
609  const IncrementalModifyBuffer& t_Switch /* = IncrementalModifyBuffer::INVALID_REFERENCE */)
610 {
611  // Effettuo l'operazione attraverso il metodo 'print' della classe "RGBmatrixPanel'
612 
613  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
614  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
615  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
616  if (m_Matrix && m_isStarted)
617  {
618  // Specializzazione
619  if (m_DOUBLE_BUFFERING)
620  {
621  // 'DOUBLE_BUFFERING'
622  // Imposto il cursore nella posizione ricevuta dai parametri 't_x', 't_y'
623  set_Cursor(t_x, t_y);
624 
625  // Imposto la dimensione del testo da visualizzare ricevuta dal parametro 't_Size'
626  set_TextSize(t_Size);
627 
628  // Imposto il colore del testo da visualizzare ricevuto dai parametri 't_RED', 't_GREEN', 't_BLUE'
629  set_Color(t_COLOR);
630 
631  // Visualizzo le informazioni sulla matrice ricevute dal parametro 't_toShow'
632  Show(t_toShow);
633 
634  // Per visualizzare effettivamente le informazioni, effettuo lo swap dei buffer
635  if (!SwapBuffers(t_Switch)) { return false; }
636  }
637  else
638  {
639  // 'SINGLE_BUFFERING'
640  // Imposto il cursore nella posizione ricevuta dai parametri 't_x', 't_y'
641  set_Cursor(t_x, t_y);
642 
643  // Imposto la dimensione del testo da visualizzare ricevuta dal parametro 't_Size'
644  set_TextSize(t_Size);
645 
646  // Imposto il colore del testo da visualizzare ricevuto dai parametri 't_RED', 't_GREEN', 't_BLUE'
647  set_Color(t_COLOR);
648 
649  // Visualizzo le informazioni sulla matrice ricevute dal parametro 't_toShow'
650  Show(t_toShow);
651  }
652 
653  return true;
654  }
655  else
656  return false;
657 }
658 
659 // Implementazione del metodo 'ShowAutomated' della categoria 'Metodi di Automazione'
660 // ShowAutomated (2.1)
661 bool Matrix::ShowAutomated(String& t_toShow, const int& t_x, const int& t_y, const unsigned int& t_Size,
662  const unsigned int& t_RED, const unsigned int& t_GREEN, const unsigned int& t_BLUE, const IncrementalModifyBuffer& t_Switch /* = IncrementalModifyBuffer::INVALID_REFERENCE */)
663 {
664  // Effettuo l'operazione attraverso il metodo 'print' della classe "RGBmatrixPanel'
665 
666  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
667  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
668  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
669  if (m_Matrix && m_isStarted)
670  {
671  // Specializzazione
672  if (m_DOUBLE_BUFFERING)
673  {
674  // 'DOUBLE_BUFFERING'
675  // Imposto il cursore nella posizione ricevuta dai parametri 't_x', 't_y'
676  set_Cursor(t_x, t_y);
677 
678  // Imposto la dimensione del testo da visualizzare ricevuta dal parametro 't_Size'
679  set_TextSize(t_Size);
680 
681  // Imposto il colore del testo da visualizzare ricevuto dai parametri 't_RED', 't_GREEN', 't_BLUE'
682  set_Color(t_RED, t_GREEN, t_BLUE);
683 
684  // Visualizzo le informazioni sulla matrice ricevute dal parametro 't_toShow'
685  Show(t_toShow);
686 
687  // Per via della chiamata all'overload del metodo 'Show' con parametro --> 'String&', effettuo le operazioni di deallocazione
689  reset_Container();
690 
691  // Per visualizzare effettivamente le informazioni, effettuo lo swap dei buffer
692  if (!SwapBuffers(t_Switch)) { return false; }
693  }
694  else
695  {
696  // 'SINGLE_BUFFERING'
697  // Imposto il cursore nella posizione ricevuta dai parametri 't_x', 't_y'
698  set_Cursor(t_x, t_y);
699 
700  // Imposto la dimensione del testo da visualizzare ricevuta dal parametro 't_Size'
701  set_TextSize(t_Size);
702 
703  // Imposto il colore del testo da visualizzare ricevuto dai parametri 't_RED', 't_GREEN', 't_BLUE'
704  set_Color(t_RED, t_GREEN, t_BLUE);
705 
706  // Visualizzo le informazioni sulla matrice ricevute dal parametro 't_toShow'
707  Show(t_toShow);
708 
709  // Per via della chiamata all'overload del metodo 'Show' con parametro --> 'String&', effettuo le operazioni di deallocazione
711  reset_Container();
712  }
713 
714  return true;
715  }
716  else
717  return false;
718 }
719 
720 // Implementazione del metodo 'ShowAutomated' della categoria 'Metodi di Automazione'
721 // ShowAutomated (2.2)
722 bool Matrix::ShowAutomated(String& t_toShow, const int& t_x, const int& t_y, const unsigned int& t_Size, const Color& t_COLOR,
723  const IncrementalModifyBuffer& t_Switch /* = IncrementalModifyBuffer::INVALID_REFERENCE */)
724 {
725  // Effettuo l'operazione attraverso il metodo 'print' della classe "RGBmatrixPanel'
726 
727  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
728  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
729  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
730  if (m_Matrix && m_isStarted)
731  {
732  // Specializzazione
733  if (m_DOUBLE_BUFFERING)
734  {
735  // 'DOUBLE_BUFFERING'
736  // Imposto il cursore nella posizione ricevuta dai parametri 't_x', 't_y'
737  set_Cursor(t_x, t_y);
738 
739  // Imposto la dimensione del testo da visualizzare ricevuta dal parametro 't_Size'
740  set_TextSize(t_Size);
741 
742  // Imposto il colore del testo da visualizzare ricevuto dai parametri 't_RED', 't_GREEN', 't_BLUE'
743  set_Color(t_COLOR);
744 
745  // Visualizzo le informazioni sulla matrice ricevute dal parametro 't_toShow'
746  Show(t_toShow);
747 
748  // Per via della chiamata all'overload del metodo 'Show' con parametro --> 'String&', effettuo le operazioni di deallocazione
750  reset_Container();
751 
752  // Per visualizzare effettivamente le informazioni, effettuo lo swap dei buffer
753  if (!SwapBuffers(t_Switch)) { return false; }
754  }
755  else
756  {
757  // 'SINGLE_BUFFERING'
758  // Imposto il cursore nella posizione ricevuta dai parametri 't_x', 't_y'
759  set_Cursor(t_x, t_y);
760 
761  // Imposto la dimensione del testo da visualizzare ricevuta dal parametro 't_Size'
762  set_TextSize(t_Size);
763 
764  // Imposto il colore del testo da visualizzare ricevuto dai parametri 't_RED', 't_GREEN', 't_BLUE'
765  set_Color(t_COLOR);
766 
767  // Visualizzo le informazioni sulla matrice ricevute dal parametro 't_toShow'
768  Show(t_toShow);
769 
770  // Per via della chiamata all'overload del metodo 'Show' con parametro --> 'String&', effettuo le operazioni di deallocazione
772  reset_Container();
773  }
774 
775  return true;
776  }
777  else
778  return false;
779 }
780 
781 // Implementazione del metodo 'ClearShowAutomated' della categoria 'Metodi di Automazione'
782 // ClearShowAutomated (1.1)
783 bool Matrix::ClearShowAutomated(const char* t_toShow, const int& t_x, const int& t_y, const unsigned int& t_Size,
784  const unsigned int& t_RED, const unsigned int& t_GREEN, const unsigned int& t_BLUE, const IncrementalModifyBuffer& t_Switch /* = IncrementalModifyBuffer::INVALID_REFERENCE */)
785 {
786  // Effettuo l'operazione attraverso il metodo 'print' della classe "RGBmatrixPanel'
787 
788  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
789  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
790  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
791  if (m_Matrix && m_isStarted)
792  {
793  // Specializzazione
794  if (m_DOUBLE_BUFFERING)
795  {
796  // 'DOUBLE_BUFFERING'
797  // "Pulisco" il 'back-buffer'
798  Clear();
799 
800  // Imposto il cursore nella posizione ricevuta dai parametri 't_x', 't_y'
801  set_Cursor(t_x, t_y);
802 
803  // Imposto la dimensione del testo da visualizzare ricevuta dal parametro 't_Size'
804  set_TextSize(t_Size);
805 
806  // Imposto il colore del testo da visualizzare ricevuto dai parametri 't_RED', 't_GREEN', 't_BLUE'
807  set_Color(t_RED, t_GREEN, t_BLUE);
808 
809  // Visualizzo le informazioni sulla matrice ricevute dal parametro 't_toShow'
810  Show(t_toShow);
811 
812  // Per visualizzare effettivamente le informazioni, effettuo lo swap dei buffer
813  if (!SwapBuffers(t_Switch)) { return false; }
814  }
815  else
816  {
817  // 'SINGLE_BUFFERING'
818  // "Pulisco" lo schermo / buffer
819  Clear();
820 
821  // Imposto il cursore nella posizione ricevuta dai parametri 't_x', 't_y'
822  set_Cursor(t_x, t_y);
823 
824  // Imposto la dimensione del testo da visualizzare ricevuta dal parametro 't_Size'
825  set_TextSize(t_Size);
826 
827  // Imposto il colore del testo da visualizzare ricevuto dai parametri 't_RED', 't_GREEN', 't_BLUE'
828  set_Color(t_RED, t_GREEN, t_BLUE);
829 
830  // Visualizzo le informazioni sulla matrice ricevute dal parametro 't_toShow'
831  Show(t_toShow);
832  }
833 
834  return true;
835  }
836  else
837  return false;
838 }
839 
840 // Implementazione del metodo 'ClearShowAutomated' della categoria 'Metodi di Automazione'
841 // ClearShowAutomated (1.2)
842 bool Matrix::ClearShowAutomated(const char* t_toShow, const int& t_x, const int& t_y, const unsigned int& t_Size, const Color& t_COLOR,
843  const IncrementalModifyBuffer& t_Switch /* = IncrementalModifyBuffer::INVALID_REFERENCE */)
844 {
845  // Effettuo l'operazione attraverso il metodo 'print' della classe "RGBmatrixPanel'
846 
847  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
848  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
849  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
850  if (m_Matrix && m_isStarted)
851  {
852  // Specializzazione
853  if (m_DOUBLE_BUFFERING)
854  {
855  // 'DOUBLE_BUFFERING'
856  // "Pulisco" il 'back-buffer'
857  Clear();
858 
859  // Imposto il cursore nella posizione ricevuta dai parametri 't_x', 't_y'
860  set_Cursor(t_x, t_y);
861 
862  // Imposto la dimensione del testo da visualizzare ricevuta dal parametro 't_Size'
863  set_TextSize(t_Size);
864 
865  // Imposto il colore del testo da visualizzare ricevuto dai parametri 't_RED', 't_GREEN', 't_BLUE'
866  set_Color(t_COLOR);
867 
868  // Visualizzo le informazioni sulla matrice ricevute dal parametro 't_toShow'
869  Show(t_toShow);
870 
871  // Per visualizzare effettivamente le informazioni, effettuo lo swap dei buffer
872  if (!SwapBuffers(t_Switch)) { return false; }
873  }
874  else
875  {
876  // 'SINGLE_BUFFERING'
877  // "Pulisco" lo schermo / buffer
878  Clear();
879 
880  // Imposto il cursore nella posizione ricevuta dai parametri 't_x', 't_y'
881  set_Cursor(t_x, t_y);
882 
883  // Imposto la dimensione del testo da visualizzare ricevuta dal parametro 't_Size'
884  set_TextSize(t_Size);
885 
886  // Imposto il colore del testo da visualizzare ricevuto dai parametri 't_RED', 't_GREEN', 't_BLUE'
887  set_Color(t_COLOR);
888 
889  // Visualizzo le informazioni sulla matrice ricevute dal parametro 't_toShow'
890  Show(t_toShow);
891  }
892 
893  return true;
894  }
895  else
896  return false;
897 }
898 
899 // Implementazione del metodo 'ClearShowAutomated' della categoria 'Metodi di Automazione'
900 // ClearShowAutomated (2.1)
901 bool Matrix::ClearShowAutomated(String& t_toShow, const int& t_x, const int& t_y, const unsigned int& t_Size,
902  const unsigned int& t_RED, const unsigned int& t_GREEN, const unsigned int& t_BLUE, const IncrementalModifyBuffer& t_Switch /* = IncrementalModifyBuffer::INVALID_REFERENCE */)
903 {
904  // Effettuo l'operazione attraverso il metodo 'print' della classe "RGBmatrixPanel'
905 
906  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
907  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
908  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
909  if (m_Matrix && m_isStarted)
910  {
911  // Specializzazione
912  if (m_DOUBLE_BUFFERING)
913  {
914  // 'DOUBLE_BUFFERING'
915  // "Pulisco" il 'back-buffer'
916  Clear();
917 
918  // Imposto il cursore nella posizione ricevuta dai parametri 't_x', 't_y'
919  set_Cursor(t_x, t_y);
920 
921  // Imposto la dimensione del testo da visualizzare ricevuta dal parametro 't_Size'
922  set_TextSize(t_Size);
923 
924  // Imposto il colore del testo da visualizzare ricevuto dai parametri 't_RED', 't_GREEN', 't_BLUE'
925  set_Color(t_RED, t_GREEN, t_BLUE);
926 
927  // Visualizzo le informazioni sulla matrice ricevute dal parametro 't_toShow'
928  Show(t_toShow);
929 
930  // Per via della chiamata all'overload del metodo 'Show' con parametro --> 'String&', effettuo le operazioni di deallocazione
932  reset_Container();
933 
934  // Per visualizzare effettivamente le informazioni, effettuo lo swap dei buffer
935  if (!SwapBuffers(t_Switch)) { return false; }
936  }
937  else
938  {
939  // 'SINGLE_BUFFERING'
940  // "Pulisco" lo schermo / buffer
941  Clear();
942 
943  // Imposto il cursore nella posizione ricevuta dai parametri 't_x', 't_y'
944  set_Cursor(t_x, t_y);
945 
946  // Imposto la dimensione del testo da visualizzare ricevuta dal parametro 't_Size'
947  set_TextSize(t_Size);
948 
949  // Imposto il colore del testo da visualizzare ricevuto dai parametri 't_RED', 't_GREEN', 't_BLUE'
950  set_Color(t_RED, t_GREEN, t_BLUE);
951 
952  // Visualizzo le informazioni sulla matrice ricevute dal parametro 't_toShow'
953  Show(t_toShow);
954 
955  // Per via della chiamata all'overload del metodo 'Show' con parametro --> 'String&', effettuo le operazioni di deallocazione
957  reset_Container();
958  }
959 
960  return true;
961  }
962  else
963  return false;
964 }
965 
966 // Implementazione del metodo 'ClearShowAutomated' della categoria 'Metodi di Automazione'
967 // ClearShowAutomated (2.2)
968 bool Matrix::ClearShowAutomated(String& t_toShow, const int& t_x, const int& t_y, const unsigned int& t_Size, const Color& t_COLOR,
969  const IncrementalModifyBuffer& t_Switch /* = IncrementalModifyBuffer::INVALID_REFERENCE */)
970 {
971  // Effettuo l'operazione attraverso il metodo 'print' della classe "RGBmatrixPanel'
972 
973  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
974  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
975  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
976  if (m_Matrix && m_isStarted)
977  {
978  // Specializzazione
979  if (m_DOUBLE_BUFFERING)
980  {
981  // 'DOUBLE_BUFFERING'
982  // "Pulisco" il 'back-buffer'
983  Clear();
984 
985  // Imposto il cursore nella posizione ricevuta dai parametri 't_x', 't_y'
986  set_Cursor(t_x, t_y);
987 
988  // Imposto la dimensione del testo da visualizzare ricevuta dal parametro 't_Size'
989  set_TextSize(t_Size);
990 
991  // Imposto il colore del testo da visualizzare ricevuto dai parametri 't_RED', 't_GREEN', 't_BLUE'
992  set_Color(t_COLOR);
993 
994  // Visualizzo le informazioni sulla matrice ricevute dal parametro 't_toShow'
995  Show(t_toShow);
996 
997  // Per via della chiamata all'overload del metodo 'Show' con parametro --> 'String&', effettuo le operazioni di deallocazione
999  reset_Container();
1000 
1001  // Per visualizzare effettivamente le informazioni, effettuo lo swap dei buffer
1002  if (!SwapBuffers(t_Switch)) { return false; }
1003  }
1004  else
1005  {
1006  // 'SINGLE_BUFFERING'
1007  // "Pulisco" lo schermo / buffer
1008  Clear();
1009 
1010  // Imposto il cursore nella posizione ricevuta dai parametri 't_x', 't_y'
1011  set_Cursor(t_x, t_y);
1012 
1013  // Imposto la dimensione del testo da visualizzare ricevuta dal parametro 't_Size'
1014  set_TextSize(t_Size);
1015 
1016  // Imposto il colore del testo da visualizzare ricevuto dai parametri 't_RED', 't_GREEN', 't_BLUE'
1017  set_Color(t_COLOR);
1018 
1019  // Visualizzo le informazioni sulla matrice ricevute dal parametro 't_toShow'
1020  Show(t_toShow);
1021 
1022  // Per via della chiamata all'overload del metodo 'Show' con parametro --> 'String&', effettuo le operazioni di deallocazione
1024  reset_Container();
1025  }
1026 
1027  return true;
1028  }
1029  else
1030  return false;
1031 }
1032 
1033 // Implementazione del metodo 'ShowBitmap' della categoria 'Metodi di Automazione'
1034 // ShowBitmap (1)
1035 bool Matrix::ShowBitmap(const unsigned char* t_toShow, const int& t_x, const int& t_y, const unsigned int& t_RED, const unsigned int& t_GREEN, const unsigned int& t_BLUE,
1036  const IncrementalModifyBuffer& t_Switch /* = IncrementalModifyBuffer::INVALID_REFERENCE */, const unsigned int& t_w /* = Matrix__file::_w */, const unsigned int& t_h /* = Matrix__file::_h */)
1037 {
1038  // Effettuo l'operazione attraverso il metodo 'print' della classe "RGBmatrixPanel'
1039 
1040  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
1041  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
1042  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
1043  if (m_Matrix && m_isStarted)
1044  {
1045  // Specializzazione
1046  if (m_DOUBLE_BUFFERING)
1047  {
1048  // 'DOUBLE_BUFFERING'
1049  // Visualizzo l'immagine bitmap
1050  m_Matrix->drawBitmap(t_x, t_y, t_toShow, t_w, t_h, m_Matrix->Color888(t_RED, t_GREEN, t_BLUE));
1051 
1052  // Per visualizzare effettivamente le informazioni, effettuo lo swap dei buffer
1053  if (!SwapBuffers(t_Switch)) { return false; }
1054  }
1055  else
1056  {
1057  // Visualizzo l'immagine bitmap
1058  m_Matrix->drawBitmap(t_x, t_y, t_toShow, t_w, t_h, m_Matrix->Color888(t_RED, t_GREEN, t_BLUE));
1059  }
1060 
1061  return true;
1062  }
1063  else
1064  return false;
1065 }
1066 
1067 // Implementazione del metodo 'ShowBitmap' della categoria 'Metodi di Automazione'
1068 // ShowBitmap (2)
1069 bool Matrix::ShowBitmap(const unsigned char* t_toShow, const int& t_x, const int& t_y, const Color& t_COLOR,
1070  const IncrementalModifyBuffer& t_Switch /* = IncrementalModifyBuffer::INVALID_REFERENCE */, const unsigned int& t_w /* = Matrix__file::_w */, const unsigned int& t_h /* = Matrix__file::_h */)
1071 {
1072  // Effettuo l'operazione attraverso il metodo 'print' della classe "RGBmatrixPanel'
1073 
1074  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
1075  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
1076  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
1077  if (m_Matrix && m_isStarted)
1078  {
1079  unsigned int l_RED;
1080  unsigned int l_GREEN;
1081  unsigned int l_BLUE;
1082 
1083  // Determino il colore scelto attraverso il campo enumerativo
1084  DefineShades(t_COLOR, l_RED, l_GREEN, l_BLUE);
1085 
1086  // Specializzazione
1087  if (m_DOUBLE_BUFFERING)
1088  {
1089  // 'DOUBLE_BUFFERING'
1090  // Visualizzo l'immagine bitmap
1091  m_Matrix->drawBitmap(t_x, t_y, t_toShow, t_w, t_h, m_Matrix->Color888(l_RED, l_GREEN, l_BLUE));
1092 
1093  // Per visualizzare effettivamente le informazioni, effettuo lo swap dei buffer
1094  if (!SwapBuffers(t_Switch)) { return false; }
1095  }
1096  else
1097  {
1098  // Visualizzo l'immagine bitmap
1099  m_Matrix->drawBitmap(t_x, t_y, t_toShow, t_w, t_h, m_Matrix->Color888(l_RED, l_GREEN, l_BLUE));
1100  }
1101 
1102  return true;
1103  }
1104  else
1105  return false;
1106 }
1107 
1108 // Implementazione del metodo 'ClearShowBitmap' della categoria 'Metodi di Automazione'
1109 // ClearShowBitmap (1)
1110 bool Matrix::ClearShowBitmap(const unsigned char* t_toShow, const int& t_x, const int& t_y, const unsigned int& t_RED, const unsigned int& t_GREEN, const unsigned int& t_BLUE,
1111  const IncrementalModifyBuffer& t_Switch /* = IncrementalModifyBuffer::INVALID_REFERENCE */, const unsigned int& t_w /* = Matrix__file::_w */, const unsigned int& t_h /* = Matrix__file::_h */)
1112 {
1113  // Effettuo l'operazione attraverso il metodo 'print' della classe "RGBmatrixPanel'
1114 
1115  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
1116  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
1117  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
1118  if (m_Matrix && m_isStarted)
1119  {
1120  // Specializzazione
1121  if (m_DOUBLE_BUFFERING)
1122  {
1123  // 'DOUBLE_BUFFERING'
1124  // "Pulisco" il 'back-buffer'
1125  Clear();
1126 
1127  // Visualizzo l'immagine bitmap
1128  m_Matrix->drawBitmap(t_x, t_y, t_toShow, t_w, t_h, m_Matrix->Color888(t_RED, t_GREEN, t_BLUE));
1129 
1130  // Per visualizzare effettivamente le informazioni, effettuo lo swap dei buffer
1131  if (!SwapBuffers(t_Switch)) { return false; }
1132  }
1133  else
1134  {
1135  // 'SINGLE_BUFFERING'
1136  // "Pulisco" lo schermo / buffer
1137  Clear();
1138 
1139  // Visualizzo l'immagine bitmap
1140  m_Matrix->drawBitmap(t_x, t_y, t_toShow, t_w, t_h, m_Matrix->Color888(t_RED, t_GREEN, t_BLUE));
1141  }
1142 
1143  return true;
1144  }
1145  else
1146  return false;
1147 }
1148 
1149 // Implementazione del metodo 'ClearShowBitmap' della categoria 'Metodi di Automazione'
1150 // ClearShowBitmap (2)
1151 bool Matrix::ClearShowBitmap(const unsigned char* t_toShow, const int& t_x, const int& t_y, const Color& t_COLOR,
1152  const IncrementalModifyBuffer& t_Switch /* = IncrementalModifyBuffer::INVALID_REFERENCE */, const unsigned int& t_w /* = Matrix__file::_w */, const unsigned int& t_h /* = Matrix__file::_h */)
1153 {
1154  // Effettuo l'operazione attraverso il metodo 'print' della classe "RGBmatrixPanel'
1155 
1156  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
1157  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
1158  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
1159  if (m_Matrix && m_isStarted)
1160  {
1161  unsigned int l_RED;
1162  unsigned int l_GREEN;
1163  unsigned int l_BLUE;
1164 
1165  // Determino il colore scelto attraverso il campo enumerativo
1166  DefineShades(t_COLOR, l_RED, l_GREEN, l_BLUE);
1167 
1168  // Specializzazione
1169  if (m_DOUBLE_BUFFERING)
1170  {
1171  // 'DOUBLE_BUFFERING'
1172  // "Pulisco" il 'back-buffer'
1173  Clear();
1174 
1175  // Visualizzo l'immagine bitmap
1176  m_Matrix->drawBitmap(t_x, t_y, t_toShow, t_w, t_h, m_Matrix->Color888(l_RED, l_GREEN, l_BLUE));
1177 
1178  // Per visualizzare effettivamente le informazioni, effettuo lo swap dei buffer
1179  if (!SwapBuffers(t_Switch)) { return false; }
1180  }
1181  else
1182  {
1183  // 'SINGLE_BUFFERING'
1184  // "Pulisco" lo schermo / buffer
1185  Clear();
1186 
1187  // Visualizzo l'immagine bitmap
1188  m_Matrix->drawBitmap(t_x, t_y, t_toShow, t_w, t_h, m_Matrix->Color888(l_RED, l_GREEN, l_BLUE));
1189  }
1190 
1191  return true;
1192  }
1193  else
1194  return false;
1195 }
1196 
1197 // Implementazione del metodo 'ShowLogo_GBE' della categoria 'Metodi di Automazione'
1199 {
1200  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
1201  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
1202  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
1203  if (m_Matrix && m_isStarted)
1204  {
1205  // Visualizzo il logo come modifica incrementale di immagini bitmap
1209 
1210  return true;
1211  }
1212  else
1213  return false;
1214 }
1215 
1216 // Implementazione del metodo 'ShowLogo_WiFi' della categoria 'Metodi di Automazione'
1218 {
1219  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
1220  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
1221  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
1222  if (m_Matrix && m_isStarted)
1223  {
1224  // Visualizzo il logo
1226 
1227  return true;
1228  }
1229  else
1230  return false;
1231 }
1232 
1233 // Implementazione del metodo 'ShowLogo_CrossedWiFi' della categoria 'Metodi di Automazione'
1235 {
1236  // Prima, controllo che l'oggetto di classe "m_Matrix" sia stato gi� allocato.
1237  // Una chiamata su un oggetto non allocato (i.e. 'nullptr') causerebbe una eccezione con conseguente fail della memoria.
1238  // Inoltre, in questa implementazione, controllo anche che la matrice sia gi� stata avviata
1239  if (m_Matrix && m_isStarted)
1240  {
1241  // Visualizzo il logo come modifica incrementale di immagini bitmap
1244 
1245  return true;
1246  }
1247  else
1248  return false;
1249 }
1250 
Matrix__file::_LAT
static constexpr auto _LAT
Definition: Matrix.h:63
Matrix::set_Color
static bool set_Color(const unsigned int &t_RED, const unsigned int &t_GREEN, const unsigned int &t_BLUE)
Imposta il colore delle informazioni da visualizzare.
Definition: Matrix.cpp:422
Matrix::Show
static bool Show(const char *t_toShow)
Visualizza sullo schermo della matrice l'informazione fornita come parametro.
Definition: Matrix.cpp:488
Matrix::reset_Container
static void reset_Container()
Resetta (assegna il valore di default) al contenitore.
Definition: Matrix.cpp:344
Matrix::m_Container
static char * m_Container
Definition: Matrix.h:603
Matrix::ReInit
static bool ReInit()
LowLevel reallocator della classe Matrix.
Definition: Matrix.cpp:200
Matrix::Color::BLACK
Matrix::m_B
static unsigned int m_B
Definition: Matrix.h:212
Matrix::ShowLogo_CrossedWiFi
static bool ShowLogo_CrossedWiFi()
Visualizza il logo del WiFi crossed.
Definition: Matrix.cpp:1234
Matrix::Color::YELLOW
Matrix::Color::WHITE
Matrix::get_LAT
static unsigned int *const get_LAT()
LowLevel getter per l'attributo m_LAT.
Definition: Matrix.cpp:160
Matrix::Color::BLUE
Matrix::Color::RED
Matrix::Color::TEAL
Matrix::Color::PURPLE
Matrix::IncrementalModifyBuffer::LOCK_INCREMENTAL_MODIFY
Matrix::SwapBuffers
static bool SwapBuffers(const IncrementalModifyBuffer &t_Switch)
Effettua lo swap dei due buffer 'back_buffer', 'front_buffer'.
Definition: Matrix.cpp:389
Matrix::m_isStarted
static bool m_isStarted
Definition: Matrix.h:224
Matrix::Clear
static bool Clear()
"Pulisce" lo schermo della matrice
Definition: Matrix.cpp:350
Matrix::Color::AQUA
Matrix::get_C
static unsigned int *const get_C()
LowLevel getter per l'attributo m_C.
Definition: Matrix.cpp:184
Matrix::Color::GREEN
Matrix::Color::LIME
Matrix::get_B
static unsigned int *const get_B()
LowLevel getter per l'attributo m_B.
Definition: Matrix.cpp:176
Matrix::Color::FUCHSIA
Matrix::deallocate_forConversion
static bool deallocate_forConversion(char *t_toDeallocate)
Gestisce la deallocazione del contenitore per la conversione.
Definition: Matrix.cpp:328
Matrix::Color
Color
Enumerazione per la definizione dei principali colori utilizzabili per la visualizzazione di informaz...
Definition: Matrix.h:162
Matrix::m_Matrix
static RGBmatrixPanel * m_Matrix
Definition: Matrix.h:191
Matrix::m_OE
static unsigned int m_OE
Definition: Matrix.h:200
Matrix::get_CLK
static unsigned int *const get_CLK()
LowLevel getter per l'attributo m_CLK.
Definition: Matrix.cpp:144
Matrix::ShowAutomated
static bool ShowAutomated(const char *t_toShow, const int &t_x, const int &t_y, const unsigned int &t_Size, const unsigned int &t_RED, const unsigned int &t_GREEN, const unsigned int &t_BLUE, const IncrementalModifyBuffer &t_Switch=IncrementalModifyBuffer::INVALID_REFERENCE)
AUTOMATIZZATO: Visualizza sullo schermo della matrice l'informazione fornita come parametro.
Definition: Matrix.cpp:555
Matrix__file::_OE
static constexpr auto _OE
Definition: Matrix.h:60
Matrix::Begin
static bool Begin()
Metodo di avvio della matrice.
Definition: Matrix.cpp:118
Matrix::Init
static bool Init()
Metodo di inizializzazione dei componenti della classe.
Definition: Matrix.cpp:16
Matrix::ClearShowAutomated
static bool ClearShowAutomated(const char *t_toShow, const int &t_x, const int &t_y, const unsigned int &t_Size, const unsigned int &t_RED, const unsigned int &t_GREEN, const unsigned int &t_BLUE, const IncrementalModifyBuffer &t_Switch=IncrementalModifyBuffer::INVALID_REFERENCE)
AUTOMATIZZATO: Visualizza sullo schermo della matrice l'informazione fornita come parametro.
Definition: Matrix.cpp:783
Matrix::SwapBuffersAutomated
static bool SwapBuffersAutomated()
AUTOMATIZZATO: Effettua lo swap dei due buffer 'back_buffer', 'front_buffer'.
Definition: Matrix.cpp:531
Matrix.h
Matrix::set_Container
static void set_Container(char *t_toSet)
Assegna un valore (indirizzo di memoria) al contenitore.
Definition: Matrix.cpp:338
Matrix::IncrementalModifyBuffer::ALLOW_INCREMENTAL_MODIFY
Matrix::set_Cursor
static bool set_Cursor(const int &t_x, const int &t_y)
Imposta il cursore alle coordinate specificate.
Definition: Matrix.cpp:370
Matrix::m_LAT
static unsigned int m_LAT
Definition: Matrix.h:204
Matrix::from_String_to_Char
static char * from_String_to_Char(String &t_toConvert)
Converte una stringa 'String' in un vettore di caratteri 'char*'.
Definition: Matrix.cpp:303
Matrix::get_Matrix
static RGBmatrixPanel *const get_Matrix()
LowLevel getter per l'attributo m_Matrix.
Definition: Matrix.cpp:137
Matrix__file::_C
static constexpr auto _C
Definition: Matrix.h:72
Matrix::m_CLK
static unsigned int m_CLK
Definition: Matrix.h:196
Matrix::m_C
static unsigned int m_C
Definition: Matrix.h:216
Matrix::ShowLogo_WiFi
static bool ShowLogo_WiFi()
Visualizza il logo del WiFi.
Definition: Matrix.cpp:1217
Matrix__file::_B
static constexpr auto _B
Definition: Matrix.h:69
Matrix::DefineShades
static void DefineShades(const Color &t_COLOR, unsigned int &t_RED, unsigned int &t_GREEN, unsigned int &t_BLUE)
Determina la composizione RGB in base al campo enumerativo per il colore indicato.
Definition: Matrix.cpp:223
Matrix::ShowLogo_GBE
static bool ShowLogo_GBE()
Visualizza il logo originale della RadioSvegliaGBE.
Definition: Matrix.cpp:1198
Matrix::ShowBitmap
static bool ShowBitmap(const unsigned char *t_toShow, const int &t_x, const int &t_y, const unsigned int &t_RED, const unsigned int &t_GREEN, const unsigned int &t_BLUE, const IncrementalModifyBuffer &t_Switch=IncrementalModifyBuffer::INVALID_REFERENCE, const unsigned int &t_w=Matrix__file::_w, const unsigned int &t_h=Matrix__file::_h)
AUTOMATIZZATO: Visualizza sullo schermo della matrice l'informazione fornita come parametro --> BITMA...
Definition: Matrix.cpp:1035
Matrix::ClearShowBitmap
static bool ClearShowBitmap(const unsigned char *t_toShow, const int &t_x, const int &t_y, const unsigned int &t_RED, const unsigned int &t_GREEN, const unsigned int &t_BLUE, const IncrementalModifyBuffer &t_Switch=IncrementalModifyBuffer::INVALID_REFERENCE, const unsigned int &t_w=Matrix__file::_w, const unsigned int &t_h=Matrix__file::_h)
AUTOMATIZZATO: Visualizza sullo schermo della matrice l'informazione fornita come parametro --> BITMA...
Definition: Matrix.cpp:1110
Matrix::allocate_forConversion
static char * allocate_forConversion(const unsigned int &t_Length)
Gestisce l'allocazione del contenitore per la conversione.
Definition: Matrix.cpp:319
Matrix__file::_A
static constexpr auto _A
Definition: Matrix.h:66
Matrix::IncrementalModifyBuffer::INVALID_REFERENCE
Matrix__file::_DOUBLE_BUFFERING
static constexpr bool _DOUBLE_BUFFERING
Definition: Matrix.h:80
Matrix::get_OE
static unsigned int *const get_OE()
LowLevel getter per l'attributo m_OE.
Definition: Matrix.cpp:152
Matrix::get_DOUBLE_BUFFERING
static bool *const get_DOUBLE_BUFFERING()
LowLevel getter per l'attributo m_DOUBLE_BUFFERING.
Definition: Matrix.cpp:192
Matrix::Color::NAVY
Matrix::IncrementalModifyBuffer
IncrementalModifyBuffer
Enumerazione per la definizione degli stati di sovrascrittura o aggiunta durante la visualizzazione d...
Definition: Matrix.h:148
Matrix::get_A
static unsigned int *const get_A()
LowLevel getter per l'attributo m_A.
Definition: Matrix.cpp:168
Matrix__file::_CLK
static constexpr auto _CLK
Definition: Matrix.h:57
Matrix::set_TextSize
static bool set_TextSize(const unsigned int &t_Size)
Imposta la dimensione del testo da visualizzare.
Definition: Matrix.cpp:468
Matrix::m_A
static unsigned int m_A
Definition: Matrix.h:208
Matrix::m_DOUBLE_BUFFERING
static bool m_DOUBLE_BUFFERING
Definition: Matrix.h:220