reaper-low 0.1.0

Bindings for the REAPER C++ API - low-level API
Documentation
#include "control_surface.hpp"

namespace reaper_control_surface {
  // This surface just delegates to the free functions implemented in Rust. See header file for an explanation.
  class ReaperRsControlSurface : public IReaperControlSurface {
  private:
    // This pointer points to a Box in Rust which holds an IReaperControlSurface trait implementation.
    void* callback_target_;
  public:
    ReaperRsControlSurface(void* callback_target) : callback_target_(callback_target) {
    }

    virtual const char* GetTypeString() {
      return ::reaper_control_surface::GetTypeString(this->callback_target_);
    }
    virtual const char* GetDescString() {
      return ::reaper_control_surface::GetDescString(this->callback_target_);
    }
    virtual const char* GetConfigString() {
      return ::reaper_control_surface::GetConfigString(this->callback_target_);
    }
    virtual void CloseNoReset() {
      ::reaper_control_surface::CloseNoReset(this->callback_target_);
    }
    virtual void Run() {
      ::reaper_control_surface::Run(this->callback_target_);
    }
    virtual void SetTrackListChange() {
      ::reaper_control_surface::SetTrackListChange(this->callback_target_);
    }
    virtual void SetSurfaceVolume(MediaTrack* trackid, double volume) {
      ::reaper_control_surface::SetSurfaceVolume(this->callback_target_, trackid, volume);
    }
    virtual void SetSurfacePan(MediaTrack* trackid, double pan) {
      ::reaper_control_surface::SetSurfacePan(this->callback_target_, trackid, pan);
    }
    virtual void SetSurfaceMute(MediaTrack* trackid, bool mute) {
      ::reaper_control_surface::SetSurfaceMute(this->callback_target_, trackid, mute);
    }
    virtual void SetSurfaceSelected(MediaTrack* trackid, bool selected) {
      ::reaper_control_surface::SetSurfaceSelected(this->callback_target_, trackid, selected);
    }
    virtual void SetSurfaceSolo(MediaTrack* trackid, bool solo) {
      ::reaper_control_surface::SetSurfaceSolo(this->callback_target_, trackid, solo);
    }
    virtual void SetSurfaceRecArm(MediaTrack* trackid, bool recarm) {
      ::reaper_control_surface::SetSurfaceRecArm(this->callback_target_, trackid, recarm);
    }
    virtual void SetPlayState(bool play, bool pause, bool rec) {
      ::reaper_control_surface::SetPlayState(this->callback_target_, play, pause, rec);
    }
    virtual void SetRepeatState(bool rep) {
      ::reaper_control_surface::SetRepeatState(this->callback_target_, rep);
    }
    virtual void SetTrackTitle(MediaTrack* trackid, const char* title) {
      ::reaper_control_surface::SetTrackTitle(this->callback_target_, trackid, title);
    }
    virtual bool GetTouchState(MediaTrack* trackid, int isPan) {
      return ::reaper_control_surface::GetTouchState(this->callback_target_, trackid, isPan);
    }
    virtual void SetAutoMode(int mode) {
      ::reaper_control_surface::SetAutoMode(this->callback_target_, mode);
    }
    virtual void ResetCachedVolPanStates() {
      ::reaper_control_surface::ResetCachedVolPanStates(this->callback_target_);
    }
    virtual void OnTrackSelection(MediaTrack* trackid) {
      ::reaper_control_surface::OnTrackSelection(this->callback_target_, trackid);
    }
    virtual bool IsKeyDown(int key) {
      return ::reaper_control_surface::IsKeyDown(this->callback_target_, key);
    }
    virtual int Extended(int call, void* parm1, void* parm2, void* parm3) {
      return ::reaper_control_surface::Extended(this->callback_target_, call, parm1, parm2, parm3);
    }
  };

  IReaperControlSurface* add_control_surface(void* callback_target) {
    return new ReaperRsControlSurface(callback_target);
  }

  void remove_control_surface(IReaperControlSurface* surface) {
    delete surface;
  }
}