rt300@0: /* rt300@0: * scanpath.h rt300@0: * springstructure rt300@0: * rt300@0: * Created by Robert Tubb on 09/06/2011. rt300@0: * Copyright 2011 __MyCompanyName__. All rights reserved. rt300@0: * rt300@0: */ rt300@0: rt300@0: #ifndef _SCANPATHH rt300@0: #define _SCANPATHH rt300@0: #include "lump.h" rt300@0: #include "spring.h" rt300@8: #include "json.h" rt300@0: #include rt300@3: struct Element{ rt300@3: Lump * eLump; rt300@3: Spring * eSpring; rt300@3: Element(Lump * aLump, Spring * aSpring){ rt300@3: eLump = aLump; rt300@3: eSpring = aSpring; rt300@3: rt300@3: }; rt300@3: rt300@3: }; rt300@0: rt300@0: class ScanPath{ rt300@0: private: rt300@0: int numElements; rt300@0: int maxElements; rt300@0: rt300@0: bool audioAccessing; rt300@0: bool updateAccessing; rt300@0: rt300@6: bool bidirectional; rt300@9: rt300@3: vector pathElements; rt300@3: rt300@0: double * wavetableNew; rt300@0: double * wavetableOld; rt300@0: double * wavetableUpdate; rt300@0: rt300@0: double currentLength; rt300@0: rt300@0: double frameInterpolator; rt300@0: double framesPerSample; rt300@0: rt300@0: rt300@0: rt300@0: rt300@0: public: rt300@0: enum scanModes {DISPLACEMENT,SPEED,SPRING_FORCE,YPOS}; rt300@0: rt300@0: scanModes scanMode; rt300@0: double restLength; rt300@0: rt300@0: ScanPath(); rt300@0: ~ScanPath(); rt300@3: void init(); rt300@0: rt300@0: void inscribe(double ax,double ay); rt300@0: void clear(); rt300@0: rt300@0: void draw(); rt300@0: void drawCubic(); rt300@0: rt300@0: double getTotalLength(); rt300@0: int howManyElements(); rt300@0: rt300@0: rt300@0: void addSpring(); rt300@0: void addLump(); rt300@0: double getNextSample(); rt300@0: double getNextSample(double aPhasor); rt300@0: double getNextSampleCubic(double aPhasor); rt300@0: // redone stuff rt300@0: void initWavetables(); rt300@3: void addElement(Lump* const aLump, Spring * const aSpring); rt300@8: Lump * getLump(int index); rt300@8: Spring * getSpring(int index); rt300@8: rt300@0: void updateWavetables(); rt300@0: rt300@8: Json::Value convertToJsonForSaving(); rt300@0: }; rt300@0: rt300@0: #endif