//========================================================= // MusE // Linux Music Editor // $Id: transform.h,v 1.5 2005/10/05 17:02:03 lunar_shuttle Exp $ // // (C) Copyright 2005 Werner Schweer (ws@seh.de) //========================================================= #ifndef __TRANSFORM_H__ #define __TRANSFORM_H__ #include "../libmidiplugin/mempi.h" #include "ui_transform.h" class Transform; namespace AL { class Xml; }; using AL::Xml; enum ValOp { All=0, Ignore=0, Equal=1, Unequal=2, Higher=3, Lower=4, Inside=5, Outside=6 }; enum TransformFunction { Select, Quantize, Delete, Trans, Insert, Copy, Extract }; enum TransformOperator { Keep, Plus, Minus, Multiply, Divide, Fix, Value, Invert, ScaleMap, Flip, Dynamic, Random }; //--------------------------------------------------------- // TransformDialog //--------------------------------------------------------- class TransformDialog : public QDialog, public Ui::TransformDialogBase { Q_OBJECT Transform* cmt; void setValOp(QWidget* a, QWidget* b, ValOp op); signals: void hideWindow(); private slots: void selEventOpSel(int); void selTypeSel(int); void selVal1OpSel(int); void selVal2OpSel(int); void procEventOpSel(int); void procEventTypeSel(int); void procVal1OpSel(int); void procVal2OpSel(int); void funcOpSel(int); void selVal1aChanged(int); void selVal1bChanged(int); void selVal2aChanged(int); void selVal2bChanged(int); void procVal1aChanged(int); void procVal1bChanged(int); void procVal2aChanged(int); void procVal2bChanged(int); void selChannelOpSel(int); void selChannelValaChanged(int); void selChannelValbChanged(int); void procChannelOpSel(int); void procChannelValaChanged(int); void procChannelValbChanged(int); public: TransformDialog(Transform*, QWidget* parent); void init(); }; //--------------------------------------------------------- // Transform //--------------------------------------------------------- class Transform : public Mempi { int filterEvent(MidiEvent& event); public: struct initData { ValOp selEventOp; int selType; ValOp selVal1; int selVal1a, selVal1b; ValOp selVal2; int selVal2a, selVal2b; ValOp selChannel; int selChannela, selChannelb; TransformOperator procEvent; int eventType; TransformOperator procVal1; int procVal1a, procVal1b; TransformOperator procVal2; int procVal2a, procVal2b; TransformOperator procChannel; int procChannela, procChannelb; TransformFunction funcOp; int quantVal; } data; TransformDialog* gui; virtual void process(unsigned, unsigned, MidiEventList*, MidiEventList*); Transform(const char* name, const MempiHost*); virtual bool init(); virtual bool hasGui() const { return true; } virtual bool guiVisible() const { return gui->isVisible(); } virtual void showGui(bool val) { gui->setShown(val); } virtual void getGeometry(int* x, int* y, int* w, int* h) const; virtual void setGeometry(int, int, int, int); virtual void getInitData(int*, const unsigned char**) const; virtual void setInitData(int, const unsigned char*); }; #endif