www.gusucode.com > 基于dwt的视频数字水印源代码 > 基于dwt的视频数字水印源代码\code\HaYDWT\WatRecover.cpp

    //Download by http://www.NewXing.com
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "WatRecover.h"
#include "EmbedRecoverProcess.h"
#include "Main.h"
#include "Common.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "RzListVw"
#pragma link "RzPrgres"
#pragma link "RzButton"
#pragma link "RzEdit"
#pragma link "RzPanel"
#pragma link "RzRadChk"
#pragma resource "*.dfm"
TFormRecover *FormRecover;
//---------------------------------------------------------------------------
__fastcall TFormRecover::TFormRecover(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TFormRecover::FormCreate(TObject *Sender)
{
    cancelRecover = false;
    AllFrames = false;

}
//---------------------------------------------------------------------------
void __fastcall TFormRecover::FormClose(TObject *Sender,
      TCloseAction &Action)
{
    Action = caFree;    
}
//---------------------------------------------------------------------------

void __fastcall TFormRecover::ButtonRecoverClick(TObject *Sender)
{
    RecoverWatermarkAVI_Lifting( this->Handle,
                                FormMain->sRWInputFile,
                                // watermark inputs
                                FormMain->pRWbmpImage,
                                FormMain->RWImageType,
	                            FormMain->Gray_Image_RW,
                                FormMain->Gray_Image_RW_Width,
                                FormMain->Gray_Image_RW_Height,
                                // Key Image inputs
                                FormMain->pRWKeybmpImage,
                                FormMain->RWKImageType,
        	                    FormMain->Gray_Image_RW_Key,
                                FormMain->Gray_Image_RW_Key_Width,
                                FormMain->Gray_Image_RW_Key_Height,
                                // embed inputs
                                FormMain->BetaFactorRW,
                                FormMain->DWTLevelsRW, // wavelet tansform level
                                FormMain->LevelEmbedRW,  // in which level watermark has been embedded
                                false, // Only selected frame
                                FrameNo);
}
//---------------------------------------------------------------------------

void __fastcall TFormRecover::ButtonCancelClick(TObject *Sender)
{
    cancelRecover = true;

}
//---------------------------------------------------------------------------


void __fastcall TFormRecover::RadioButtonAllFramesClick(TObject *Sender)
{
    if (RadioButtonAllFrames->Checked)
    {
        if (FormMain->RWImageType == Img_NONE)
        {
            MessageDlg("The original watermark image does not exist. Go back and load the watermark.", mtError, TMsgDlgButtons() << mbOK, 0);
            RadioButtonAllFrames->Checked = false;
            RadioButtonFrameNo->Checked = true;
            RadioButtonFrameNo->OnClick(Sender);
            return;
        }
        AllFrames = true;
        ButtonCalcBER->Enabled = true;
        ButtonRecover->Enabled = false;
    }
}
//---------------------------------------------------------------------------

void __fastcall TFormRecover::RadioButtonFrameNoClick(TObject *Sender)
{
    if (RadioButtonFrameNo->Checked)
    {
        AllFrames = false;
        ButtonCalcBER->Enabled = false;
        ButtonRecover->Enabled = true;
    }
}
//---------------------------------------------------------------------------


void __fastcall TFormRecover::EditFrameNoChange(TObject *Sender)
{
    FrameNo = (long)EditFrameNo->Value;
}
//---------------------------------------------------------------------------

void __fastcall TFormRecover::ButtonCalcBERClick(TObject *Sender)
{
    RecoverWatermarkAVI_Lifting( this->Handle,
                                FormMain->sRWInputFile,
                                // watermark inputs
                                FormMain->pRWbmpImage,
                                FormMain->RWImageType,
	                            FormMain->Gray_Image_RW,
                                FormMain->Gray_Image_RW_Width,
                                FormMain->Gray_Image_RW_Height,
                                // Key Image inputs
                                FormMain->pRWKeybmpImage,
                                FormMain->RWKImageType,
        	                    FormMain->Gray_Image_RW_Key,
                                FormMain->Gray_Image_RW_Key_Width,
                                FormMain->Gray_Image_RW_Key_Height,
                                // embed inputs
                                FormMain->BetaFactorRW,
                                FormMain->DWTLevelsRW, // wavelet tansform level
                                FormMain->LevelEmbedRW,  // in which level watermark has been embedded
                                true, // All Frames
                                FrameNo);
                                
}
//---------------------------------------------------------------------------

void __fastcall TFormRecover::ButtonSaveImageClick(TObject *Sender)
{
    if ( ImageRecover->Picture != NULL)
    {
        SaveDialog->Filter = "Bitmap Files|*.bmp|All Files|*.*";
        SaveDialog->DefaultExt = ".bmp";
        SaveDialog->FileName = "";
        SaveDialog->FilterIndex = 0;
        SaveDialog->Options << ofOverwritePrompt << ofPathMustExist;
        if (SaveDialog->Execute())
        {
            if (FileExists(SaveDialog->FileName.c_str()))
                DeleteFileA(SaveDialog->FileName.c_str());
            ImageRecover->Picture->SaveToFile(SaveDialog->FileName);
        }
    }

}
//---------------------------------------------------------------------------


void __fastcall TFormRecover::ButtonSaveResultsClick(TObject *Sender)
{
    TListItem *ListItem;
    TItemStates stateNone = TItemStates() << isNone;
    AnsiString str = "";
    TStringList* MyList = new TStringList();
    long i;
    if ( ListResult->Items->Count > 0)
    {
        SaveDialog->Filter = "text Files|*.txt|All Files|*.*";
        SaveDialog->DefaultExt = ".txt";
        SaveDialog->FileName = "";
        SaveDialog->FilterIndex = 0;
        SaveDialog->Options << ofOverwritePrompt << ofPathMustExist;
        if (SaveDialog->Execute())
        {
            if (ListResult->Items->Count > 0)
            {
                if (FileExists(SaveDialog->FileName.c_str()))
                    DeleteFileA(SaveDialog->FileName.c_str());
                MyList->Add(recAllFrames);
                MyList->SaveToFile(SaveDialog->FileName);
            }
        }
    }
    delete MyList;
}
//---------------------------------------------------------------------------