mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-09-16 16:30:26 +02:00
2021-03-19 Fred Gleason <fredg@paravelsystems.com>
* Added 'RDMarkerPlayer'. Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
parent
3254182e3a
commit
01e3412b01
@ -21284,3 +21284,7 @@
|
||||
in 'RDMarkerView'.
|
||||
2021-03-18 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Enabled marker swiping in 'RDMarkerView'.
|
||||
2021-03-18 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Fixed bugs with detecting unsaved changes in 'RDMarkerView'.
|
||||
2021-03-19 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Added 'RDMarkerPlayer'.
|
||||
|
@ -191,6 +191,7 @@ dist_librd_la_SOURCES = dbversion.h\
|
||||
rdmarker_button.cpp rdmarker_button.h\
|
||||
rdmarker_edit.cpp rdmarker_edit.h\
|
||||
rdmarkerdialog.cpp rdmarkerdialog.h\
|
||||
rdmarkerplayer.cpp rdmarkerplayer.h\
|
||||
rdmarkerreadout.cpp rdmarkerreadout.h\
|
||||
rdmarkerview.cpp rdmarkerview.h\
|
||||
rdmatrix.cpp rdmatrix.h\
|
||||
@ -372,6 +373,7 @@ nodist_librd_la_SOURCES = moc_rdadd_cart.cpp\
|
||||
moc_rdmarker_bar.cpp\
|
||||
moc_rdmarker_edit.cpp\
|
||||
moc_rdmarkerdialog.cpp\
|
||||
moc_rdmarkerplayer.cpp\
|
||||
moc_rdmarkerreadout.cpp\
|
||||
moc_rdmarkerview.cpp\
|
||||
moc_rdmatrixlistmodel.cpp\
|
||||
|
@ -144,6 +144,7 @@ SOURCES += rdmacrocartmodel.cpp
|
||||
SOURCES += rdmarker_button.cpp
|
||||
SOURCES += rdmarker_edit.cpp
|
||||
SOURCES += rdmarkerdialog.cpp
|
||||
SOURCES += rdmarkerplayer.cpp
|
||||
SOURCES += rdmarkerreadout.cpp
|
||||
SOURCES += rdmarkerview.cpp
|
||||
SOURCES += rdmatrix.cpp
|
||||
@ -325,6 +326,7 @@ HEADERS += rdmacrocartmodel.h
|
||||
HEADERS += rdmarker_button.h
|
||||
HEADERS += rdmarker_edit.h
|
||||
HEADERS += rdmarkerdialog.h
|
||||
HEADERS += rdmarkerplayer.h
|
||||
HEADERS += rdmarkerreadout.h
|
||||
HEADERS += rdmarkerview.h
|
||||
HEADERS += rdmatrix.h
|
||||
|
@ -3578,11 +3578,11 @@ Out</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Position</source>
|
||||
<translation type="unfinished">Poloha</translation>
|
||||
<translation type="obsolete">Poloha</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Length</source>
|
||||
<translation type="unfinished">Délka</translation>
|
||||
<translation type="obsolete">Délka</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsaved Changes</source>
|
||||
@ -3596,6 +3596,21 @@ Out</translation>
|
||||
<source>Do you want to save them?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open cut in audio player!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RDMarkerPlayer</name>
|
||||
<message>
|
||||
<source>Position</source>
|
||||
<translation type="unfinished">Poloha</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Length</source>
|
||||
<translation type="unfinished">Délka</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RDMarkerView</name>
|
||||
|
@ -3567,11 +3567,11 @@ Out</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Position</source>
|
||||
<translation type="unfinished">Position</translation>
|
||||
<translation type="obsolete">Position</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Length</source>
|
||||
<translation type="unfinished">Länge</translation>
|
||||
<translation type="obsolete">Länge</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsaved Changes</source>
|
||||
@ -3585,6 +3585,21 @@ Out</translation>
|
||||
<source>Do you want to save them?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open cut in audio player!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RDMarkerPlayer</name>
|
||||
<message>
|
||||
<source>Position</source>
|
||||
<translation type="unfinished">Position</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Length</source>
|
||||
<translation type="unfinished">Länge</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RDMarkerView</name>
|
||||
|
@ -3554,11 +3554,11 @@ Todo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Position</source>
|
||||
<translation type="unfinished">Posición</translation>
|
||||
<translation type="obsolete">Posición</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Length</source>
|
||||
<translation type="unfinished">Longitud</translation>
|
||||
<translation type="obsolete">Longitud</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsaved Changes</source>
|
||||
@ -3572,6 +3572,21 @@ Todo</translation>
|
||||
<source>Do you want to save them?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open cut in audio player!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RDMarkerPlayer</name>
|
||||
<message>
|
||||
<source>Position</source>
|
||||
<translation type="unfinished">Posición</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Length</source>
|
||||
<translation type="unfinished">Longitud</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RDMarkerView</name>
|
||||
|
@ -2970,14 +2970,6 @@ Out</source>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Position</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Length</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsaved Changes</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -2990,6 +2982,21 @@ Out</source>
|
||||
<source>Do you want to save them?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open cut in audio player!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RDMarkerPlayer</name>
|
||||
<message>
|
||||
<source>Position</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Length</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RDMarkerView</name>
|
||||
|
@ -3517,11 +3517,11 @@ ut</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Position</source>
|
||||
<translation type="unfinished">Posisjon</translation>
|
||||
<translation type="obsolete">Posisjon</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Length</source>
|
||||
<translation type="unfinished">Lengd</translation>
|
||||
<translation type="obsolete">Lengd</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsaved Changes</source>
|
||||
@ -3535,6 +3535,21 @@ ut</translation>
|
||||
<source>Do you want to save them?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open cut in audio player!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RDMarkerPlayer</name>
|
||||
<message>
|
||||
<source>Position</source>
|
||||
<translation type="unfinished">Posisjon</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Length</source>
|
||||
<translation type="unfinished">Lengd</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RDMarkerView</name>
|
||||
|
@ -3517,11 +3517,11 @@ ut</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Position</source>
|
||||
<translation type="unfinished">Posisjon</translation>
|
||||
<translation type="obsolete">Posisjon</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Length</source>
|
||||
<translation type="unfinished">Lengd</translation>
|
||||
<translation type="obsolete">Lengd</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsaved Changes</source>
|
||||
@ -3535,6 +3535,21 @@ ut</translation>
|
||||
<source>Do you want to save them?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open cut in audio player!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RDMarkerPlayer</name>
|
||||
<message>
|
||||
<source>Position</source>
|
||||
<translation type="unfinished">Posisjon</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Length</source>
|
||||
<translation type="unfinished">Lengd</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RDMarkerView</name>
|
||||
|
@ -3557,11 +3557,11 @@ Mínimo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Position</source>
|
||||
<translation type="unfinished">Posição</translation>
|
||||
<translation type="obsolete">Posição</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Length</source>
|
||||
<translation type="unfinished">Duração</translation>
|
||||
<translation type="obsolete">Duração</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsaved Changes</source>
|
||||
@ -3575,6 +3575,21 @@ Mínimo</translation>
|
||||
<source>Do you want to save them?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open cut in audio player!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RDMarkerPlayer</name>
|
||||
<message>
|
||||
<source>Position</source>
|
||||
<translation type="unfinished">Posição</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Length</source>
|
||||
<translation type="unfinished">Duração</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RDMarkerView</name>
|
||||
|
@ -194,12 +194,12 @@ void RDCae::unloadPlay(int handle)
|
||||
}
|
||||
|
||||
|
||||
void RDCae::positionPlay(int handle,int pos)
|
||||
void RDCae::positionPlay(int handle,int msec)
|
||||
{
|
||||
if(pos<0) {
|
||||
if(msec<0) {
|
||||
return;
|
||||
}
|
||||
SendCommand(QString().sprintf("PP %d %u!",handle,pos));
|
||||
SendCommand(QString().sprintf("PP %d %u!",handle,msec));
|
||||
}
|
||||
|
||||
|
||||
|
@ -44,7 +44,7 @@ class RDCae : public QObject
|
||||
void enableMetering(QList<int> *cards);
|
||||
bool loadPlay(int card,QString name,int *stream,int *handle);
|
||||
void unloadPlay(int handle);
|
||||
void positionPlay(int handle,int pos);
|
||||
void positionPlay(int handle,int msec);
|
||||
void play(int handle,unsigned length,int speed,bool pitch);
|
||||
void stopPlay(int handle);
|
||||
void loadRecord(int card,int stream,QString name,AudioCoding coding,
|
||||
@ -75,7 +75,7 @@ class RDCae : public QObject
|
||||
signals:
|
||||
void isConnected(bool state);
|
||||
void playLoaded(int handle);
|
||||
void playPositioned(int handle,unsigned pos);
|
||||
void playPositioned(int handle,unsigned msec);
|
||||
void playing(int handle);
|
||||
void playStopped(int handle);
|
||||
void playUnloaded(int handle);
|
||||
|
@ -75,80 +75,12 @@ RDMarkerDialog::RDMarkerDialog(const QString &caption,int card,int port,
|
||||
/**************************************************************************
|
||||
* Transport Section
|
||||
**************************************************************************/
|
||||
//
|
||||
// Time Counters
|
||||
//
|
||||
d_overall_label=new QLabel(tr("Position"),this);
|
||||
d_overall_label->setFont(subLabelFont());
|
||||
d_overall_label->setAlignment(Qt::AlignHCenter);
|
||||
d_overall_label->
|
||||
setPalette(QPalette(palette().color(QPalette::Background),
|
||||
QColor(RDMARKERDIALOG_HIGHLIGHT_COLOR)));
|
||||
d_overall_edit=new QLineEdit(this);
|
||||
d_overall_edit->setAcceptDrops(false);
|
||||
d_overall_edit->setReadOnly(true);
|
||||
|
||||
d_region_edit_label=new QLabel("Region",this);
|
||||
d_region_edit_label->setFont(subLabelFont());
|
||||
d_region_edit_label->setAlignment(Qt::AlignHCenter);
|
||||
d_region_edit_label->
|
||||
setPalette(QPalette(palette().color(QPalette::Background),QColor(RDMARKERDIALOG_HIGHLIGHT_COLOR)));
|
||||
d_region_edit=new QLineEdit(this);
|
||||
d_region_edit->setAcceptDrops(false);
|
||||
d_region_edit->setReadOnly(true);
|
||||
|
||||
d_size_label=new QLabel(tr("Length"),this);
|
||||
d_size_label->setFont(subLabelFont());
|
||||
d_size_label->setAlignment(Qt::AlignHCenter);
|
||||
d_size_label->
|
||||
setPalette(QPalette(palette().color(QPalette::Background),QColor(RDMARKERDIALOG_HIGHLIGHT_COLOR)));
|
||||
d_size_edit=new QLineEdit(this);
|
||||
d_size_edit->setAcceptDrops(false);
|
||||
d_size_edit->setReadOnly(true);
|
||||
|
||||
//
|
||||
// Transport Buttons
|
||||
//
|
||||
d_play_cursor_button=
|
||||
new RDTransportButton(RDTransportButton::PlayBetween,this);
|
||||
d_play_cursor_button->setFocusPolicy(Qt::NoFocus);
|
||||
// d_play_cursor_button->setEnabled((d_card>=0)&&(d_port>=0));
|
||||
// connect(d_play_cursor_button,SIGNAL(clicked()),
|
||||
// this,SLOT(playCursorData()));
|
||||
|
||||
d_play_start_button=
|
||||
new RDTransportButton(RDTransportButton::Play,this);
|
||||
d_play_start_button->setFocusPolicy(Qt::NoFocus);
|
||||
// d_play_start_button->setEnabled((d_card>=0)&&(d_port>=0));
|
||||
// connect(d_play_start_button,SIGNAL(clicked()),
|
||||
// this,SLOT(playStartData()));
|
||||
|
||||
d_pause_button=new RDTransportButton(RDTransportButton::Pause,this);
|
||||
d_pause_button->setFocusPolicy(Qt::NoFocus);
|
||||
d_pause_button->setOnColor(QColor(Qt::red));
|
||||
// d_pause_button->setEnabled((d_card>=0)&&(d_port>=0));
|
||||
// connect(d_pause_button,SIGNAL(clicked()),this,SLOT(pauseData()));
|
||||
|
||||
d_stop_button=new RDTransportButton(RDTransportButton::Stop,this);
|
||||
d_stop_button->setFocusPolicy(Qt::NoFocus);
|
||||
d_stop_button->on();
|
||||
d_stop_button->setOnColor(QColor(Qt::red));
|
||||
// d_stop_button->setEnabled((d_card>=0)&&(d_port>=0));
|
||||
// connect(d_stop_button,SIGNAL(clicked()),this,SLOT(stopData()));
|
||||
|
||||
d_loop_button=new RDTransportButton(RDTransportButton::Loop,this);
|
||||
d_loop_button->off();
|
||||
// d_loop_button->setEnabled((d_card>=0)&&(d_port>=0));
|
||||
// connect(d_loop_button,SIGNAL(clicked()),this,SLOT(loopData()));
|
||||
|
||||
//
|
||||
// The Audio Meter
|
||||
//
|
||||
d_meter=new RDStereoMeter(this);
|
||||
d_meter->setSegmentSize(5);
|
||||
d_meter->setMode(RDSegMeter::Peak);
|
||||
// d_meter_timer=new QTimer(this);
|
||||
// connect(d_meter_timer,SIGNAL(timeout()),this,SLOT(meterData()));
|
||||
d_player=new RDMarkerPlayer(card,port,this);
|
||||
connect(d_player,SIGNAL(cursorPositionChanged(unsigned)),
|
||||
d_marker_view,SLOT(setCursorPosition(unsigned)));
|
||||
connect(d_marker_view,
|
||||
SIGNAL(pointerValueChanged(RDMarkerHandle::PointerRole,int)),
|
||||
d_player,SLOT(setPointerValue(RDMarkerHandle::PointerRole,int)));
|
||||
|
||||
//
|
||||
// Marker Readouts
|
||||
@ -205,6 +137,8 @@ RDMarkerDialog::RDMarkerDialog(const QString &caption,int card,int port,
|
||||
|
||||
RDMarkerDialog::~RDMarkerDialog()
|
||||
{
|
||||
delete d_player;
|
||||
delete d_marker_view;
|
||||
}
|
||||
|
||||
|
||||
@ -227,6 +161,11 @@ int RDMarkerDialog::exec(unsigned cartnum,int cutnum)
|
||||
QMessageBox::critical(this,d_caption+" - "+tr("Error"),err_msg);
|
||||
return false;
|
||||
}
|
||||
if(!d_player->setCut(cartnum,cutnum)) {
|
||||
QMessageBox::critical(this,d_caption+" - "+tr("Error"),
|
||||
tr("Unable to open cut in audio player!"));
|
||||
return false;
|
||||
}
|
||||
for(int i=0;i<RDMarkerHandle::LastRole;i++) {
|
||||
RDMarkerHandle::PointerRole role=(RDMarkerHandle::PointerRole)i;
|
||||
d_cut_readout->setValue(role,d_marker_view->pointerValue(role));
|
||||
@ -235,6 +174,7 @@ int RDMarkerDialog::exec(unsigned cartnum,int cutnum)
|
||||
d_hook_readout->setValue(role,d_marker_view->pointerValue(role));
|
||||
d_fadeup_readout->setValue(role,d_marker_view->pointerValue(role));
|
||||
d_fadedown_readout->setValue(role,d_marker_view->pointerValue(role));
|
||||
d_player->setPointerValue(role,d_marker_view->pointerValue(role));
|
||||
}
|
||||
return QDialog::exec();
|
||||
}
|
||||
@ -276,6 +216,7 @@ void RDMarkerDialog::timeOutData()
|
||||
void RDMarkerDialog::okData()
|
||||
{
|
||||
d_marker_view->save();
|
||||
d_player->clearCut();
|
||||
done(true);
|
||||
}
|
||||
|
||||
@ -293,6 +234,7 @@ void RDMarkerDialog::cancelData()
|
||||
break;
|
||||
|
||||
case QMessageBox::No:
|
||||
d_player->clearCut();
|
||||
done(false);
|
||||
break;
|
||||
|
||||
@ -300,6 +242,7 @@ void RDMarkerDialog::cancelData()
|
||||
return;
|
||||
}
|
||||
}
|
||||
d_player->clearCut();
|
||||
done(false);
|
||||
}
|
||||
|
||||
@ -331,9 +274,6 @@ void RDMarkerDialog::resizeEvent(QResizeEvent *e)
|
||||
d_time_out_button->setGeometry(5,124,80,50);
|
||||
d_time_fullout_button->setGeometry(5,174,80,50);
|
||||
|
||||
d_meter->setGeometry(380,398,
|
||||
d_meter->sizeHint().width(),d_meter->sizeHint().height());
|
||||
|
||||
//
|
||||
// Readout Section
|
||||
//
|
||||
@ -371,35 +311,10 @@ void RDMarkerDialog::resizeEvent(QResizeEvent *e)
|
||||
//
|
||||
// Transport Section
|
||||
//
|
||||
d_overall_label->setGeometry(60,385,70,20);
|
||||
d_overall_edit->setGeometry(60,400,70,21);
|
||||
d_region_edit_label->setGeometry(158,385,70,20);
|
||||
d_region_edit->setGeometry(158,400,70,21);
|
||||
d_size_label->setGeometry(256,385,70,20);
|
||||
d_size_edit->setGeometry(256,400,70,21);
|
||||
|
||||
d_play_cursor_button->setGeometry(20,425,65,45);
|
||||
d_play_start_button->setGeometry(90,425,65,45);
|
||||
d_pause_button->setGeometry(160,425,65,45);
|
||||
d_stop_button->setGeometry(230,425,65,45);
|
||||
d_loop_button->setGeometry(300,425,65,45);
|
||||
d_player->setGeometry(2,2+d_marker_view->sizeHint().height(),
|
||||
d_player->sizeHint().width(),
|
||||
d_player->sizeHint().height());
|
||||
|
||||
d_ok_button->setGeometry(w-180,h-60,80,50);
|
||||
d_cancel_button->setGeometry(w-90,h-60,80,50);
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerDialog::paintEvent(QPaintEvent *e)
|
||||
{
|
||||
QPainter *p=new QPainter(this);
|
||||
|
||||
//
|
||||
// Transport Control Area
|
||||
//
|
||||
p->setPen(QColor(palette().shadow().color()));
|
||||
p->fillRect(11,30+RDMARKERDIALOG_WAVEFORM_HEIGHT,RDMARKERDIALOG_WAVEFORM_WIDTH,92,
|
||||
QColor(RDMARKERDIALOG_HIGHLIGHT_COLOR));
|
||||
p->drawRect(11,30+RDMARKERDIALOG_WAVEFORM_HEIGHT,RDMARKERDIALOG_WAVEFORM_WIDTH,92);
|
||||
|
||||
delete p;
|
||||
}
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include <QTimer>
|
||||
|
||||
#include <rddialog.h>
|
||||
#include <rdmarkerplayer.h>
|
||||
#include <rdmarkerreadout.h>
|
||||
#include <rdmarkerview.h>
|
||||
#include <rdstereometer.h>
|
||||
@ -80,7 +81,6 @@ class RDMarkerDialog : public RDDialog
|
||||
protected:
|
||||
void closeEvent(QCloseEvent *e);
|
||||
void resizeEvent(QResizeEvent *e);
|
||||
void paintEvent(QPaintEvent *e);
|
||||
|
||||
private:
|
||||
RDMarkerView *d_marker_view;
|
||||
@ -95,19 +95,7 @@ class RDMarkerDialog : public RDDialog
|
||||
RDTransportButton *d_time_out_button;
|
||||
QPushButton *d_time_fullout_button;
|
||||
|
||||
// QGroupBox *d_transport_group;
|
||||
QLabel *d_overall_label;
|
||||
QLineEdit *d_overall_edit;
|
||||
QLabel *d_region_edit_label;
|
||||
QLineEdit *d_region_edit;
|
||||
QLabel *d_size_label;
|
||||
QLineEdit *d_size_edit;
|
||||
RDTransportButton *d_loop_button;
|
||||
RDTransportButton *d_play_start_button;
|
||||
RDTransportButton *d_play_cursor_button;
|
||||
RDTransportButton *d_pause_button;
|
||||
RDTransportButton *d_stop_button;
|
||||
RDStereoMeter *d_meter;
|
||||
RDMarkerPlayer *d_player;
|
||||
|
||||
RDMarkerReadout *d_cut_readout;
|
||||
RDMarkerReadout *d_fadeup_readout;
|
||||
|
303
lib/rdmarkerplayer.cpp
Normal file
303
lib/rdmarkerplayer.cpp
Normal file
@ -0,0 +1,303 @@
|
||||
// rdmarkerplayer.cpp
|
||||
//
|
||||
// Audio player for RDMarkerDialog
|
||||
//
|
||||
// (C) Copyright 2021 Fred Gleason <fredg@paravelsystems.com>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License version 2 as
|
||||
// published by the Free Software Foundation.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public
|
||||
// License along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
|
||||
#include "rdmixer.h"
|
||||
#include "rdmarkerplayer.h"
|
||||
|
||||
RDMarkerPlayer::RDMarkerPlayer(int card,int port,QWidget *parent)
|
||||
: RDWidget(parent)
|
||||
{
|
||||
d_cards.push_back(card);
|
||||
d_port=port;
|
||||
d_cae_stream=-1;
|
||||
d_cae_handle=-1;
|
||||
d_is_playing=false;
|
||||
|
||||
//
|
||||
// CAE
|
||||
//
|
||||
rda->cae()->enableMetering(&d_cards);
|
||||
connect(rda->cae(),SIGNAL(playing(int)),this,SLOT(caePlayedData(int)));
|
||||
connect(rda->cae(),SIGNAL(playStopped(int)),this,SLOT(caePausedData(int)));
|
||||
connect(rda->cae(),SIGNAL(playPositionChanged(int,unsigned)),
|
||||
this,SLOT(caePositionData(int,unsigned)));
|
||||
|
||||
//
|
||||
// Time Counters
|
||||
//
|
||||
d_overall_label=new QLabel(tr("Position"),this);
|
||||
d_overall_label->setFont(subLabelFont());
|
||||
d_overall_label->setAlignment(Qt::AlignHCenter);
|
||||
d_overall_label->
|
||||
setPalette(QPalette(palette().color(QPalette::Background),
|
||||
QColor(RDMARKERPLAYER_HIGHLIGHT_COLOR)));
|
||||
d_overall_edit=new QLineEdit(this);
|
||||
d_overall_edit->setAcceptDrops(false);
|
||||
d_overall_edit->setReadOnly(true);
|
||||
|
||||
d_region_edit_label=new QLabel("Region",this);
|
||||
d_region_edit_label->setFont(subLabelFont());
|
||||
d_region_edit_label->setAlignment(Qt::AlignHCenter);
|
||||
d_region_edit_label->
|
||||
setPalette(QPalette(palette().color(QPalette::Background),QColor(RDMARKERPLAYER_HIGHLIGHT_COLOR)));
|
||||
d_region_edit=new QLineEdit(this);
|
||||
d_region_edit->setAcceptDrops(false);
|
||||
d_region_edit->setReadOnly(true);
|
||||
|
||||
d_size_label=new QLabel(tr("Length"),this);
|
||||
d_size_label->setFont(subLabelFont());
|
||||
d_size_label->setAlignment(Qt::AlignHCenter);
|
||||
d_size_label->
|
||||
setPalette(QPalette(palette().color(QPalette::Background),QColor(RDMARKERPLAYER_HIGHLIGHT_COLOR)));
|
||||
d_size_edit=new QLineEdit(this);
|
||||
d_size_edit->setAcceptDrops(false);
|
||||
d_size_edit->setReadOnly(true);
|
||||
|
||||
//
|
||||
// Transport Buttons
|
||||
//
|
||||
d_play_cursor_button=
|
||||
new RDTransportButton(RDTransportButton::PlayBetween,this);
|
||||
d_play_cursor_button->setFocusPolicy(Qt::NoFocus);
|
||||
d_play_cursor_button->setEnabled((d_cards.first()>=0)&&(d_port>=0));
|
||||
connect(d_play_cursor_button,SIGNAL(clicked()),
|
||||
this,SLOT(playCursorData()));
|
||||
|
||||
d_play_start_button=
|
||||
new RDTransportButton(RDTransportButton::Play,this);
|
||||
d_play_start_button->setFocusPolicy(Qt::NoFocus);
|
||||
d_play_start_button->setEnabled((d_cards.first()>=0)&&(d_port>=0));
|
||||
connect(d_play_start_button,SIGNAL(clicked()),
|
||||
this,SLOT(playStartData()));
|
||||
|
||||
d_pause_button=new RDTransportButton(RDTransportButton::Pause,this);
|
||||
d_pause_button->setFocusPolicy(Qt::NoFocus);
|
||||
d_pause_button->setOnColor(QColor(Qt::red));
|
||||
d_pause_button->setEnabled((d_cards.first()>=0)&&(d_port>=0));
|
||||
connect(d_pause_button,SIGNAL(clicked()),this,SLOT(pauseData()));
|
||||
|
||||
d_stop_button=new RDTransportButton(RDTransportButton::Stop,this);
|
||||
d_stop_button->setFocusPolicy(Qt::NoFocus);
|
||||
d_stop_button->on();
|
||||
d_stop_button->setOnColor(QColor(Qt::red));
|
||||
d_stop_button->setEnabled((d_cards.first()>=0)&&(d_port>=0));
|
||||
connect(d_stop_button,SIGNAL(clicked()),this,SLOT(stopData()));
|
||||
|
||||
d_loop_button=new RDTransportButton(RDTransportButton::Loop,this);
|
||||
d_loop_button->off();
|
||||
d_loop_button->setEnabled((d_cards.first()>=0)&&(d_port>=0));
|
||||
connect(d_loop_button,SIGNAL(clicked()),this,SLOT(loopData()));
|
||||
|
||||
//
|
||||
// The Audio Meter
|
||||
//
|
||||
d_meter=new RDStereoMeter(this);
|
||||
d_meter->setSegmentSize(5);
|
||||
d_meter->setMode(RDSegMeter::Peak);
|
||||
d_meter_timer=new QTimer(this);
|
||||
connect(d_meter_timer,SIGNAL(timeout()),this,SLOT(meterData()));
|
||||
}
|
||||
|
||||
|
||||
RDMarkerPlayer::~RDMarkerPlayer()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
QSize RDMarkerPlayer::sizeHint() const
|
||||
{
|
||||
return QSize(717,92);
|
||||
}
|
||||
|
||||
|
||||
QSizePolicy RDMarkerPlayer::sizePolicy() const
|
||||
{
|
||||
return QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
|
||||
}
|
||||
|
||||
|
||||
bool RDMarkerPlayer::setCut(unsigned cartnum,int cutnum)
|
||||
{
|
||||
clearCut();
|
||||
|
||||
if(!rda->cae()->loadPlay(d_cards.first(),RDCut::cutName(cartnum,cutnum),
|
||||
&d_cae_stream,&d_cae_handle)) {
|
||||
return false;
|
||||
}
|
||||
RDSetMixerOutputPort(rda->cae(),d_cards.first(),d_cae_stream,d_port);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerPlayer::clearCut()
|
||||
{
|
||||
if(d_cae_handle>=0) {
|
||||
rda->cae()->stopPlay(d_cae_handle);
|
||||
rda->cae()->unloadPlay(d_cae_handle);
|
||||
d_cae_stream=-1;
|
||||
d_cae_handle=-1;
|
||||
d_is_playing=false;
|
||||
}
|
||||
for(int i=0;i<RDMarkerHandle::LastRole;i++) {
|
||||
d_pointers[i]=-1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerPlayer::setPlayPosition(int msec)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerPlayer::setPointerValue(RDMarkerHandle::PointerRole role,int ptr)
|
||||
{
|
||||
d_pointers[role]=ptr;
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerPlayer::playCursorData()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerPlayer::playStartData()
|
||||
{
|
||||
if(d_cae_handle>=0) {
|
||||
if(d_is_playing) {
|
||||
rda->cae()->stopPlay(d_cae_handle);
|
||||
}
|
||||
rda->cae()->positionPlay(d_cae_handle,d_pointers[RDMarkerHandle::CutStart]);
|
||||
rda->cae()->play(d_cae_handle,
|
||||
d_pointers[RDMarkerHandle::CutEnd]-
|
||||
d_pointers[RDMarkerHandle::CutStart],100000,false);
|
||||
rda->cae()->setPlayPortActive(d_cards.first(),d_port,d_cae_stream);
|
||||
// FIXME: Implement variable gain here!
|
||||
rda->cae()->setOutputVolume(d_cards.first(),d_cae_stream,d_port,0);
|
||||
// rda->cae()->
|
||||
// setOutputVolume(d_cards.first(),d_cae_stream,d_port,0+edit_gain_control->value());
|
||||
d_meter_timer->start(RD_METER_UPDATE_INTERVAL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerPlayer::pauseData()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerPlayer::stopData()
|
||||
{
|
||||
if(d_cae_handle>=0) {
|
||||
if(d_is_playing) {
|
||||
rda->cae()->stopPlay(d_cae_handle);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerPlayer::loopData()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerPlayer::meterData()
|
||||
{
|
||||
short lvls[2];
|
||||
|
||||
rda->cae()->outputMeterUpdate(d_cards.first(),d_port,lvls);
|
||||
d_meter->setLeftPeakBar(lvls[0]);
|
||||
d_meter->setRightPeakBar(lvls[1]);
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerPlayer::caePlayedData(int handle)
|
||||
{
|
||||
if(handle==d_cae_handle) {
|
||||
if(!d_is_playing) {
|
||||
d_play_start_button->setState(RDTransportButton::On);
|
||||
d_pause_button->setState(RDTransportButton::Off);
|
||||
d_stop_button->setState(RDTransportButton::Off);
|
||||
d_is_playing=true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerPlayer::caePausedData(int handle)
|
||||
{
|
||||
if(handle==d_cae_handle) {
|
||||
if(d_is_playing) {
|
||||
if(d_meter_timer->isActive()) {
|
||||
d_meter_timer->stop();
|
||||
d_meter->setLeftPeakBar(-10000);
|
||||
d_meter->setRightPeakBar(-10000);
|
||||
}
|
||||
d_play_start_button->setState(RDTransportButton::Off);
|
||||
d_pause_button->setState(RDTransportButton::Off);
|
||||
d_stop_button->setState(RDTransportButton::On);
|
||||
d_is_playing=false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerPlayer::caePositionData(int handle,unsigned msec)
|
||||
{
|
||||
if(handle==d_cae_handle) {
|
||||
emit cursorPositionChanged(msec);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerPlayer::resizeEvent(QResizeEvent *)
|
||||
{
|
||||
d_overall_label->setGeometry(50,3,70,20);
|
||||
d_overall_edit->setGeometry(50,18,70,21);
|
||||
d_region_edit_label->setGeometry(148,3,70,20);
|
||||
d_region_edit->setGeometry(148,18,70,21);
|
||||
d_size_label->setGeometry(246,3,70,20);
|
||||
d_size_edit->setGeometry(246,18,70,21);
|
||||
|
||||
d_play_cursor_button->setGeometry(10,42,65,45);
|
||||
d_play_start_button->setGeometry(80,42,65,45);
|
||||
d_pause_button->setGeometry(150,42,65,45);
|
||||
d_stop_button->setGeometry(220,42,65,45);
|
||||
d_loop_button->setGeometry(290,42,65,45);
|
||||
|
||||
d_meter->setGeometry(370,15,d_meter->sizeHint().width(),
|
||||
d_meter->sizeHint().height());
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerPlayer::paintEvent(QPaintEvent *e)
|
||||
{
|
||||
QPainter *p=new QPainter(this);
|
||||
|
||||
//
|
||||
// Transport Control Area
|
||||
//
|
||||
p->setPen(QColor(palette().shadow().color()));
|
||||
p->fillRect(1,1,size().width()-2,size().height()-2,
|
||||
QColor(RDMARKERPLAYER_HIGHLIGHT_COLOR));
|
||||
p->drawRect(0,0,size().width(),size().height());
|
||||
|
||||
delete p;
|
||||
}
|
92
lib/rdmarkerplayer.h
Normal file
92
lib/rdmarkerplayer.h
Normal file
@ -0,0 +1,92 @@
|
||||
// rdmarkerplayer.h
|
||||
//
|
||||
// Audio player for RDMarkerDialog
|
||||
//
|
||||
// (C) Copyright 2021 Fred Gleason <fredg@paravelsystems.com>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License version 2 as
|
||||
// published by the Free Software Foundation.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public
|
||||
// License along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
|
||||
#ifndef RDMARKERPLAYER_H
|
||||
#define RDMARKERPLAYER_H
|
||||
|
||||
#include <QLabel>
|
||||
#include <QLineEdit>
|
||||
#include <QTimer>
|
||||
|
||||
#include <rdmarkerview.h>
|
||||
#include <rdstereometer.h>
|
||||
#include <rdtransportbutton.h>
|
||||
#include <rdwidget.h>
|
||||
|
||||
#define RDMARKERPLAYER_HIGHLIGHT_COLOR palette().mid().color()
|
||||
|
||||
class RDMarkerPlayer : public RDWidget
|
||||
{
|
||||
Q_OBJECT;
|
||||
public:
|
||||
RDMarkerPlayer(int card,int port,QWidget *parent=0);
|
||||
~RDMarkerPlayer();
|
||||
QSize sizeHint() const;
|
||||
QSizePolicy sizePolicy() const;
|
||||
bool setCut(unsigned cartnum,int cutnum);
|
||||
void clearCut();
|
||||
|
||||
public slots:
|
||||
void setPlayPosition(int msec);
|
||||
void setPointerValue(RDMarkerHandle::PointerRole role,int ptr);
|
||||
|
||||
signals:
|
||||
void cursorPositionChanged(unsigned msec);
|
||||
|
||||
private slots:
|
||||
void playCursorData();
|
||||
void playStartData();
|
||||
void pauseData();
|
||||
void stopData();
|
||||
void loopData();
|
||||
void meterData();
|
||||
void caePlayedData(int handle);
|
||||
void caePausedData(int handle);
|
||||
void caePositionData(int handle,unsigned pos);
|
||||
|
||||
protected:
|
||||
void resizeEvent(QResizeEvent *);
|
||||
void paintEvent(QPaintEvent *e);
|
||||
|
||||
private:
|
||||
QLabel *d_overall_label;
|
||||
QLineEdit *d_overall_edit;
|
||||
QLabel *d_region_edit_label;
|
||||
QLineEdit *d_region_edit;
|
||||
QLabel *d_size_label;
|
||||
QLineEdit *d_size_edit;
|
||||
RDTransportButton *d_play_cursor_button;
|
||||
RDTransportButton *d_play_start_button;
|
||||
RDTransportButton *d_pause_button;
|
||||
RDTransportButton *d_stop_button;
|
||||
RDTransportButton *d_loop_button;
|
||||
RDStereoMeter *d_meter;
|
||||
QTimer *d_meter_timer;
|
||||
QList<int> d_cards;
|
||||
int d_port;
|
||||
int d_cae_stream;
|
||||
int d_cae_handle;
|
||||
bool d_is_playing;
|
||||
|
||||
int d_pointers[RDMarkerHandle::LastRole];
|
||||
};
|
||||
|
||||
|
||||
#endif // RDMARKERPLAYER_H
|
@ -18,7 +18,6 @@
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
|
||||
#include <QGraphicsLineItem>
|
||||
#include <QGraphicsScene>
|
||||
#include <QGraphicsSceneMouseEvent>
|
||||
#include <QMouseEvent>
|
||||
@ -450,6 +449,8 @@ void RDMarkerView::setMaximumShrinkFactor()
|
||||
|
||||
bool RDMarkerView::setCut(QString *err_msg,unsigned cartnum,int cutnum)
|
||||
{
|
||||
clear();
|
||||
|
||||
d_cart_number=cartnum;
|
||||
d_cut_number=cutnum;
|
||||
d_right_margin=LEFT_MARGIN; // Default value
|
||||
@ -476,6 +477,14 @@ bool RDMarkerView::setCut(QString *err_msg,unsigned cartnum,int cutnum)
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerView::setCursorPosition(unsigned msec)
|
||||
{
|
||||
qreal x=(qreal)msec*(qreal)d_sample_rate/(1152000*(qreal)d_shrink_factor)+
|
||||
(qreal)LEFT_MARGIN;
|
||||
d_cursor->setPos(x,d_cursor->pos().y());
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerView::save()
|
||||
{
|
||||
QString sql;
|
||||
@ -504,6 +513,7 @@ void RDMarkerView::clear()
|
||||
d_handles[i][j]=NULL;
|
||||
}
|
||||
}
|
||||
d_cursor=NULL;
|
||||
d_shrink_factor=1;
|
||||
d_max_shrink_factor=1;
|
||||
d_pad_size=0;
|
||||
@ -552,6 +562,8 @@ void RDMarkerView::addTalkData()
|
||||
DrawMarker(RDMarkerHandle::End,RDMarkerHandle::TalkEnd,60);
|
||||
InterlockMarkerPair(RDMarkerHandle::TalkStart);
|
||||
|
||||
d_has_unsaved_changes=true;
|
||||
|
||||
emit pointerValueChanged(RDMarkerHandle::TalkStart,
|
||||
d_pointers[RDMarkerHandle::TalkStart]);
|
||||
emit pointerValueChanged(RDMarkerHandle::TalkEnd,
|
||||
@ -568,6 +580,8 @@ void RDMarkerView::addSegueData()
|
||||
DrawMarker(RDMarkerHandle::End,RDMarkerHandle::SegueEnd,40);
|
||||
InterlockMarkerPair(RDMarkerHandle::SegueStart);
|
||||
|
||||
d_has_unsaved_changes=true;
|
||||
|
||||
emit pointerValueChanged(RDMarkerHandle::SegueStart,
|
||||
d_pointers[RDMarkerHandle::SegueStart]);
|
||||
emit pointerValueChanged(RDMarkerHandle::SegueEnd,
|
||||
@ -584,6 +598,8 @@ void RDMarkerView::addHookData()
|
||||
DrawMarker(RDMarkerHandle::End,RDMarkerHandle::HookEnd,100);
|
||||
InterlockMarkerPair(RDMarkerHandle::HookStart);
|
||||
|
||||
d_has_unsaved_changes=true;
|
||||
|
||||
emit pointerValueChanged(RDMarkerHandle::HookStart,
|
||||
d_pointers[RDMarkerHandle::HookStart]);
|
||||
emit pointerValueChanged(RDMarkerHandle::HookEnd,
|
||||
@ -598,6 +614,8 @@ void RDMarkerView::addFadeupData()
|
||||
DrawMarker(RDMarkerHandle::Start,RDMarkerHandle::FadeUp,80);
|
||||
InterlockMarkerPair(RDMarkerHandle::FadeUp);
|
||||
|
||||
d_has_unsaved_changes=true;
|
||||
|
||||
emit pointerValueChanged(RDMarkerHandle::FadeUp,
|
||||
d_pointers[RDMarkerHandle::FadeUp]);
|
||||
}
|
||||
@ -610,6 +628,8 @@ void RDMarkerView::addFadedownData()
|
||||
DrawMarker(RDMarkerHandle::End,RDMarkerHandle::FadeDown,80);
|
||||
InterlockMarkerPair(RDMarkerHandle::FadeUp);
|
||||
|
||||
d_has_unsaved_changes=true;
|
||||
|
||||
emit pointerValueChanged(RDMarkerHandle::FadeDown,
|
||||
d_pointers[RDMarkerHandle::FadeDown]);
|
||||
}
|
||||
@ -621,6 +641,8 @@ void RDMarkerView::deleteMarkerData()
|
||||
RemoveMarker(d_deleting_roles.at(i));
|
||||
}
|
||||
d_deleting_roles.clear();
|
||||
|
||||
d_has_unsaved_changes=true;
|
||||
}
|
||||
|
||||
|
||||
@ -847,6 +869,10 @@ void RDMarkerView::WriteWave()
|
||||
DrawMarker(RDMarkerHandle::Start,RDMarkerHandle::CutStart,20);
|
||||
DrawMarker(RDMarkerHandle::End,RDMarkerHandle::CutEnd,20);
|
||||
|
||||
d_cursor=new QGraphicsLineItem(0,0,0,d_height);
|
||||
d_cursor->setPen(QPen(Qt::black));
|
||||
d_scene->addItem(d_cursor);
|
||||
|
||||
d_view->setScene(d_scene);
|
||||
|
||||
updateInterlocks();
|
||||
|
@ -21,6 +21,7 @@
|
||||
#ifndef RDMARKERVIEW_H
|
||||
#define RDMARKERVIEW_H
|
||||
|
||||
#include <QGraphicsLineItem>
|
||||
#include <QGraphicsPolygonItem>
|
||||
#include <QGraphicsScene>
|
||||
#include <QGraphicsView>
|
||||
@ -86,18 +87,18 @@ class RDMarkerView : public QWidget
|
||||
const QPointF &pos);
|
||||
void updatePosition(RDMarkerHandle::PointerRole role,int ptr);
|
||||
|
||||
signals:
|
||||
void positionClicked(int msec);
|
||||
void pointerValueChanged(RDMarkerHandle::PointerRole role,int msec);
|
||||
|
||||
public slots:
|
||||
void setAudioGain(int lvl);
|
||||
void setShrinkFactor(int sf);
|
||||
void setMaximumShrinkFactor();
|
||||
bool setCut(QString *err_msg,unsigned cartnum,int cutnum);
|
||||
void setCursorPosition(unsigned msec);
|
||||
void save();
|
||||
void clear();
|
||||
int Frame(int msec) const;
|
||||
int Msec(int frame) const;
|
||||
|
||||
signals:
|
||||
void pointerValueChanged(RDMarkerHandle::PointerRole role,int msec);
|
||||
|
||||
private slots:
|
||||
void updateMenuData();
|
||||
@ -114,6 +115,8 @@ class RDMarkerView : public QWidget
|
||||
void mousePressEvent(QMouseEvent *e);
|
||||
|
||||
private:
|
||||
int Frame(int msec) const;
|
||||
int Msec(int frame) const;
|
||||
void InterlockMarkerPair(RDMarkerHandle::PointerRole start_marker);
|
||||
bool LoadCutData();
|
||||
void WriteWave();
|
||||
@ -140,6 +143,7 @@ class RDMarkerView : public QWidget
|
||||
bool d_has_unsaved_changes;
|
||||
int d_pointers[RDMarkerHandle::LastRole];
|
||||
RDMarkerHandle *d_handles[RDMarkerHandle::LastRole][2];
|
||||
QGraphicsLineItem *d_cursor;
|
||||
int d_audio_end;
|
||||
QMenu *d_main_menu;
|
||||
QAction *d_add_fadedown_action;
|
||||
|
Loading…
x
Reference in New Issue
Block a user