/*
Copyright (C) 2011 Arnaud Champenois arthelion92@gmail.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
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, see <http://www.gnu.org/licenses/>.
*/
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QLabel>
#include <string>
#include "ffmpegdecoder.h"
#include "videosegment.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
bool Open(const QString&aFileName);
void Close();
bool IsClosed() const
{ return (mDecoderPt == NULL); }
void SetLogo(const QRect&,
const QImage&anImage);
bool HasLogo() const
{ return (!mLogo.isNull() && mLogoRect.isValid()); }
bool ExtractSegments();
void Rewind();
static void FlushAll();
protected:
void dropEvent(QDropEvent *event);
void dragEnterEvent ( QDragEnterEvent * event );
double ComputeCorrelation(const QImage&anImageIn);
void Error(QString aString);
void ShowNextFrame();
void UseFileInfo();
void PrintPosition();
const QImage&GetCurrentImage() const;
void ComputeStats(const QImage& anImage,
const QRect& anArea,
double*aMeanArray,double*aStdDevArray);
void SetClosedState();
void SetOpenedState();
void SetLogoState();
void SetDetectedState();
void SetSaveState(bool aState);
void SaveSettings();
void ReadSettings();
private:
FFMPEGDecoder*mDecoderPt;
FFMPEGFileInfo mFileInfo;
QString mInputFileName;
QLabel* mInfoLabel;
QLabel* mPosLabel;
QLabel*mAspectLabel;
QLabel*mCorrLabel;
QLabel*mSelLabel;
bool mInSlider;
QImage mLogo;
QRect mLogoRect;
double mMean[3];
double mStdDev[3];
QString mLastOutputFile;
int64_t mMarginBefore,mMarginAfter;
double mLastCorrelation;
private slots:
void on_actionQuitter_triggered();
void on_TimeSlider_valueChanged(int value);
void on_PrevButton_clicked();
void on_NextButton_clicked();
void on_actionOuvrir_triggered();
void on_FastPrevButton_clicked();
void on_FastNextButton_clicked();
void on_actionDetect_Segments_triggered();
void on_GotoBeginBt_clicked();
void on_GoToEndBt_clicked();
void on_actionSave_selection_triggered();
void on_RegionList_itemSelectionChanged();
void on_MergeBt_clicked();
void on_DeleteBt_clicked();
void on_SetBeginBt_clicked();
void on_SetEndBt_clicked();
void on_AddBt_clicked();
void on_NextLogoOn_clicked();
void on_NextLogoOff_clicked();
void on_actionAbout_VidePub_triggered();
private:
Ui::MainWindow *ui;
};
#define VIDEPUB_VERSION "1.0"
#endif // MAINWINDOW_H