Mixxx

/home/maxime/Projets/Mixxx/1.10/mixxx/src/track/beatfactory.cpp

Go to the documentation of this file.
00001 #include <QtDebug>
00002 
00003 #include "track/beatgrid.h"
00004 #include "track/beatmatrix.h"
00005 #include "track/beatfactory.h"
00006 
00007 BeatsPointer BeatFactory::loadBeatsFromByteArray(TrackPointer pTrack,
00008                                                  QString beatsVersion,
00009                                                  QByteArray* beatsSerialized) {
00010     // TODO(XXX) make it so the version strings are not in multiple places
00011     if (beatsVersion == "BeatGrid-1.0") {
00012         BeatGrid* pGrid = new BeatGrid(pTrack, beatsSerialized);
00013         pGrid->moveToThread(pTrack->thread());
00014         pGrid->setParent(pTrack.data());
00015         qDebug() << "Successfully deserialized BeatGrid";
00016         return BeatsPointer(pGrid, &BeatFactory::deleteBeats);
00017     } else if (beatsVersion == "BeatMatrix-1.0") {
00018         BeatMatrix* pMatrix = new BeatMatrix(pTrack, beatsSerialized);
00019         pMatrix->moveToThread(pTrack->thread());
00020         pMatrix->setParent(pTrack.data());
00021         qDebug() << "Successfully deserialized BeatMatrix";
00022         return BeatsPointer(pMatrix, &BeatFactory::deleteBeats);
00023     }
00024     qDebug() << "BeatFactory::loadBeatsFromByteArray could not parse serialized beats.";
00025     return BeatsPointer();
00026 }
00027 
00028 BeatsPointer BeatFactory::makeBeatGrid(TrackPointer pTrack, double dBpm, double dFirstBeatSample) {
00029     BeatGrid* pGrid = new BeatGrid(pTrack);
00030     pGrid->setGrid(dBpm, dFirstBeatSample);
00031     return BeatsPointer(pGrid, &BeatFactory::deleteBeats);
00032 }
00033 
00034 void BeatFactory::deleteBeats(Beats* pBeats) {
00035     // This assumes all Beats* variants multiply-inherit from QObject. Kind of
00036     // ugly. Oh well.
00037     QObject* pObject = dynamic_cast<QObject*>(pBeats);
00038 
00039     if (pObject != NULL) {
00040         pObject->deleteLater();
00041     }
00042 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines