Martin Deng / Mbed 2 deprecated mbed_shapedriver

Dependencies:   mbed

Revision:
5:495d64d8934d
Parent:
4:75498bd2e742
Child:
6:baece3338bfe
--- a/main.cpp	Fri May 01 03:26:50 2015 +0000
+++ b/main.cpp	Fri May 01 05:25:19 2015 +0000
@@ -3,7 +3,7 @@
 
 #include <string>
 #include "constants.h"
-#include "shape.h"
+#include "shape_drawer.h"
 
 // RF tranceiver to link with handheld.
 MRF24J40 mrf(p11, p12, p13, p14, p26);
@@ -149,66 +149,19 @@
 
 int displaces[HEIGHT];
 
-void init_displaces(){
-    for(int i = 0; i < HEIGHT; i++){
-        switch(i){
-            case 0: displaces[i] = 0;               break;
-            case 1: displaces[i] = 4 * SLICES / 8;  break; 
-            case 2: displaces[i] = 7 * SLICES / 8 - 5; break;
-            case 3: displaces[i] = 3 * SLICES / 8 - 8;  break;
-            case 4: displaces[i] = 6 * SLICES / 8 - 6;  break;
-            case 5: displaces[i] = 2 * SLICES / 8 - 7;  break;
-            case 6: displaces[i] = 5 * SLICES / 8 - 7;  break;
-            case 7: displaces[i] = 1 * SLICES / 8 - 8;  break;
-        }    
-    }    
-}
-
 void convert_array(){
-    static bool initialized = false;
-    int array_i;
-    
-    if(!initialized){
-        init_displaces();    
+    if(frame_id == 0){
+        move_buffer(&frame_buffer2);   
+        frame_id = 1; 
+    } else {
+        move_buffer(&frame_buffer1);  
+        frame_id = 0;  
     }
-    
-    for(int i = 0; i < SLICES; i++){
-        for(int j = 0; j < WIDTH; j++){
-            char bit = 0x00;
-            
-            for(int h = 0; h < HEIGHT; h++){
-                bit |= (work_buffer[(i + displaces[h]) % SLICES][j] & (0x01 << h)); 
-            }
-            
-            if(frame_id == 0)
-                frame_buffer2[i][j] = bit;
-            else
-                frame_buffer1[i][j] = bit;
-        }    
-    } 
-    
-    if(frame_id == 0)
-        frame_id = 1;
-    else
-        frame_id = 0;
 }
 
 int display_mode = 0;
 Ticker animate_ticker;
 void animate(){
-    static WaveCircle *wc1 = NULL;
-    static WaveCircle *wc2 = NULL;
-    static WaveCircle *wc3 = NULL;
-    static WaveCircle *wc4 = NULL;
-    static WaveCircle *wc5 = NULL;
-    static WaveCircle *wc6 = NULL;
-    static WaveCircle *wc7 = NULL;
-    static WaveCircle *wc8 = NULL;
-    static WaveCircle *wc9 = NULL;
-    static WaveCircle *wc10 = NULL;
-    static WaveCircle *wc11 = NULL;
-    static WaveCircle *wc12 = NULL;
-    static WaveCircle *wc13 = NULL;
     
     for(int i = 0; i < SLICES; i++){
         for(int j = 0; j < WIDTH; j++){
@@ -218,118 +171,42 @@
     
     if(display_mode == 1)
     {
-        if(wc1 == NULL){
-            wc1 = new WaveCircle(3,  4, &work_buffer);  
-            wc2 = new WaveCircle(4,  4, &work_buffer);
-            wc3 = new WaveCircle(5, 4, &work_buffer);
-            wc4 = new WaveCircle(6, 4, &work_buffer);  
-            wc5 = new WaveCircle(7,  4, &work_buffer);  
-            wc6 = new WaveCircle(8,  4, &work_buffer);
-            wc7 = new WaveCircle(9, 4, &work_buffer);
-            wc8 = new WaveCircle(10, 4, &work_buffer); 
-            wc9 = new WaveCircle(11, 4, &work_buffer);
-            wc10 = new WaveCircle(12, 4, &work_buffer);  
-            wc11 = new WaveCircle(13,  4, &work_buffer);  
-            wc12 = new WaveCircle(14,  4, &work_buffer);
-            wc13 = new WaveCircle(15, 4, &work_buffer);
-        }  
+        static int disp = 0;
+        for(int i = 3; i < WIDTH; i++){
+            draw_wavecircle(i, 4, disp);    
+        } 
         
-        wc1->animate();
-        wc2->animate();
-        wc3->animate();
-        wc4->animate();
-        wc5->animate();
-        wc6->animate();
-        wc7->animate();
-        wc8->animate();
-        wc9->animate();
-        wc10->animate();
-        wc11->animate();
-        wc12->animate();
-        wc13->animate();
-        
-        wc1->draw();
-        wc2->draw();
-        wc3->draw();
-        wc4->draw();  
-        wc5->draw();
-        wc6->draw();
-        wc7->draw();
-        wc8->draw(); 
-        wc9->draw();
-        wc10->draw();
-        wc11->draw();
-        wc12->draw();   
-        wc13->draw(); 
+        disp += 10;
+        if(disp >= SLICES){
+            disp = 0;    
+        }
     } 
     else if(display_mode == 2)
     {
-        Line line1(10, 10, 0, 10, -10, 0, &work_buffer);  
-        Line line2(10, -10, 0, -10, -10, 0, &work_buffer); 
-        Line line3(-10, -10, 0, -10, 10, 0, &work_buffer); 
-        Line line4(-10, 10, 0, 10, 10, 0, &work_buffer); 
-        
-        line1.draw(); 
-        line2.draw(); 
-        line3.draw(); 
-        line4.draw(); 
-        
-        Line line5(10, 10, 7, 10, -10, 7, &work_buffer);  
-        Line line6(10, -10, 7, -10, -10, 7, &work_buffer); 
-        Line line7(-10, -10, 7, -10, 10, 7, &work_buffer); 
-        Line line8(-10, 10, 7, 10, 10, 7, &work_buffer);
+        draw_line(10, 10, 0, 10, -10, 0);  
+        draw_line(10, -10, 0, -10, -10, 0); 
+        draw_line(-10, -10, 0, -10, 10, 0); 
+        draw_line(-10, 10, 0, 10, 10, 0); 
+
+        draw_line(10, 10, 7, 10, -10, 7);  
+        draw_line(10, -10, 7, -10, -10, 7); 
+        draw_line(-10, -10, 7, -10, 10, 7); 
+        draw_line(-10, 10, 7, 10, 10, 7);
         
-        line5.draw(); 
-        line6.draw(); 
-        line7.draw(); 
-        line8.draw(); 
-        
-        Line line9(10, 10, 0, 10, 10, 7, &work_buffer); 
-        Line line10(10, -10, 0, 10, -10, 7, &work_buffer); 
-        Line line11(-10, -10, 0, -10, -10, 7, &work_buffer); 
-        Line line12(-10, 10, 0, -10, 10, 7, &work_buffer); 
-        
-        line9.draw();   
-        line10.draw(); 
-        line11.draw(); 
-        line12.draw(); 
+        draw_line(10, 10, 0, 10, 10, 7); 
+        draw_line(10, -10, 0, 10, -10, 7); 
+        draw_line(-10, -10, 0, -10, -10, 7); 
+        draw_line(-10, 10, 0, -10, 10, 7); 
+   
     } 
     else if(display_mode == 3)
     {
           
     } else if(display_mode == 4){
-
-        Line line1(0, 16, 0, 0, -16, 7, &work_buffer);
-        Line line2(4, 16, 0, 4, -16, 7, &work_buffer);   
-        Line line3(8, 16, 0, 8, -16, 7, &work_buffer);
-        Line line4(12, 16, 0, 12, -16, 7, &work_buffer);
-        Line line5(-4, 16, 0, -4, -16, 7, &work_buffer);   
-        Line line6(-8, 16, 0, -8, -16, 7, &work_buffer);
-        Line line7(-12, 16, 0, -12, -16, 7, &work_buffer);
-  
-        line1.draw();
-        line2.draw();
-        line3.draw();
-        line4.draw();  
-        line5.draw();
-        line6.draw();
-        line7.draw();
-
-        Line line11(16, 4, 0, -16, 4, 7, &work_buffer);
-        Line line21(16, 8, 0, -16, 8, 7, &work_buffer);   
-        Line line31(16, 12, 0, -16, 12, 7, &work_buffer);
-        Line line41(16, 0, 0, -16, 0, 7, &work_buffer);
-        Line line51(16, -4, 0, -16, -4, 7, &work_buffer);   
-        Line line61(16, -8, 0, -16, -8, 7, &work_buffer);
-        Line line71(16, -12, 0, -16, -12, 7, &work_buffer);
-
-        line11.draw();
-        line21.draw();
-        line31.draw();
-        line41.draw();  
-        line51.draw();
-        line61.draw();
-        line71.draw();
+        for(int i = -12; i < 13; i += 4){
+            draw_line(i, 16, 0, i, -16, 0);
+            draw_line(16, i, 0, -16, i, 0);
+        }
     }
     
     convert_array(); 
@@ -342,7 +219,7 @@
 
 int main (void)
 {
-    display_mode = 2;
+    display_mode = 1;
         
     InterruptIn hall_pin(p25);
     hall_pin.fall(&rotate_sense);