Quellcode durchsuchen

cmScoreMatchGraphic.c : Display damper pedal events.

master
kevin vor 8 Jahren
Ursprung
Commit
3f3bc296aa
1 geänderte Dateien mit 31 neuen und 23 gelöschten Zeilen
  1. 31
    23
      app/cmScoreMatchGraphic.c

+ 31
- 23
app/cmScoreMatchGraphic.c Datei anzeigen

25
   kLocSmgFl     = 0x0001,
25
   kLocSmgFl     = 0x0001,
26
   kBarSmgFl     = 0x0002,
26
   kBarSmgFl     = 0x0002,
27
   kNoteSmgFl    = 0x0004,
27
   kNoteSmgFl    = 0x0004,
28
-  kMidiSmgFl    = 0x0008,
29
-  kNoMatchSmgFl = 0x0010
28
+  kPedalSmgFl   = 0x0008,
29
+  kMidiSmgFl    = 0x0010,
30
+  kNoMatchSmgFl = 0x0020
30
 };
31
 };
31
 
32
 
32
 // Graphic box representing a score label or MIDI event
33
 // Graphic box representing a score label or MIDI event
60
 // Score label
61
 // Score label
61
 typedef struct
62
 typedef struct
62
 {
63
 {
63
-  unsigned    type;          // kBarEvtScId | kNonEvtScId
64
+  unsigned    type;          // kBarEvtScId | kNonEvtScId | kPedalEvtScId
64
   unsigned    barNumb;
65
   unsigned    barNumb;
65
   unsigned    csvEventId;
66
   unsigned    csvEventId;
66
   unsigned    locIdx;
67
   unsigned    locIdx;
222
     for(j=0; j<l->evtCnt; ++j)
223
     for(j=0; j<l->evtCnt; ++j)
223
     {
224
     {
224
       const cmScoreEvt_t* e = l->evtArray[j];
225
       const cmScoreEvt_t* e = l->evtArray[j];
226
+      unsigned flags = kNoMatchSmgFl;
227
+      cmChar_t* text = NULL;
225
       
228
       
226
       switch( e->type)
229
       switch( e->type)
227
       {
230
       {
228
-        case kBarEvtScId:
229
         case kNonEvtScId:
231
         case kNonEvtScId:
230
-          {
231
-            // Note: Mark all score boxes as 'no-match' - this will be cleared in cmScoreMatchGraphicInsertMidi(). 
232
-            unsigned  flags = kNoMatchSmgFl | (e->type==kNonEvtScId ? kNoteSmgFl : kBarSmgFl);
233
-            cmChar_t* text  = NULL;
232
+          flags |= kNoteSmgFl;
233
+          text   = cmMemAllocStr( cmMidiToSciPitch( e->pitch, NULL, 0));
234
+          break;
234
           
235
           
235
-            assert( k < p->scN );
236
+        case kBarEvtScId:
237
+          flags |= kBarSmgFl;
238
+          text   = cmTsPrintfP(NULL,"%i",e->barNumb);
239
+          break;
240
+          
241
+        case kPedalEvtScId:
242
+          flags |= kPedalSmgFl;
243
+          text = cmTsPrintfP(NULL,"%s", cmIsFlag(e->flags,kPedalDnScFl)?"v":"^");
244
+          break;
245
+      }
236
 
246
 
237
-            p->scV[k].type       = e->type;
238
-            p->scV[k].csvEventId = e->csvEventId;
239
-            p->scV[k].locIdx     = i;
240
-            p->scV[k].barNumb    = e->barNumb;
247
+      // if e is a score event of interest then store a reference to it
248
+      if( flags != kNoMatchSmgFl )
249
+      {            
250
+        assert( k < p->scN );
241
 
251
 
242
-            if( e->type == kBarEvtScId )
243
-              text = cmTsPrintfP(NULL,"%i",e->barNumb);
244
-            else
245
-              text = cmMemAllocStr( cmMidiToSciPitch( e->pitch, NULL, 0));
246
-    
247
-            p->scV[k].box = _cmSmgInsertBox(p, i, flags, e->csvEventId, text, NULL );
252
+        p->scV[k].type       = e->type;
253
+        p->scV[k].csvEventId = e->csvEventId;
254
+        p->scV[k].locIdx     = i;
255
+        p->scV[k].barNumb    = e->barNumb;
256
+        
257
+        p->scV[k].box = _cmSmgInsertBox(p, i, flags, e->csvEventId, text, NULL );
248
           
258
           
249
-            k += 1;
250
-          }
251
-          break;
259
+        k += 1;
252
       }
260
       }
253
     }
261
     }
254
   }
262
   }
255
-
263
+  
256
   p->scN = k;
264
   p->scN = k;
257
   
265
   
258
   cmScoreFinalize(&scH);
266
   cmScoreFinalize(&scH);

Laden…
Abbrechen
Speichern