123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269 |
- //---------------------------------------------------------------------------
- #include <vcl.h>
- #include "AppGlobalF.h"
- #pragma hdrstop
- #include "FrmCameraScreenF.h"
- #include "FrmCameraFullScreenF.h"
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- #pragma link "FFBaseComponent"
- #pragma link "FFLog"
- #pragma resource "*.dfm"
- TFrmCameraScreen *FrmCameraScreen = NULL;
- //---------------------------------------------------------------------------
- __fastcall TFrmCameraScreen::TFrmCameraScreen(TComponent* Owner)
- : TForm(Owner)
- {
- FTitle = Caption;
- screeForm.screenCnt = 0;
- for(int ii = 0; ii < MAX_CAMERA_PER_SCREEM; ii++)
- {
- screeForm.info[ii].show = false;
- screeForm.info[ii].installed = false;
- screeForm.info[ii].CTLR_NMBR = 0;
- screeForm.info[ii].frmCam = NULL;
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TFrmCameraScreen::CommClose()
- {
- try
- {
- for(int ii = 0; ii < screeForm.screenCnt && ii < MAX_CAMERA_PER_SCREEM; ii++)
- {
- if (!screeForm.info[ii].frmCam)
- continue;
- screeForm.info[ii].frmCam->Term();
- }
- }
- catch(...)
- {
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TFrmCameraScreen::SetLayout(int ALayout)
- {
- switch(ALayout)
- {
- case 0:/* (1 * 1) */ FCols = 1; FRows = 1; break;
- case 1:/* (2 * 2) */ FCols = 2; FRows = 2; break;
- case 2:/* (3 * 3) */ FCols = 3; FRows = 3; break;
- case 3:/* (3 * 2) */ FCols = 3; FRows = 2; break;
- case 4:/* (4 * 3) */ FCols = 4; FRows = 3; break;
- case 5:/* (4 * 4) */ FCols = 4; FRows = 4; break;
- case 6:/* (4 * 5) */ FCols = 4; FRows = 5; break;
- case 7:/* (5 * 4) */ FCols = 5; FRows = 4; break;
- case 8:/* (6 * 4) */ FCols = 6; FRows = 4; break;
- case 9:/* (6 * 5) */ FCols = 6; FRows = 5; break;
- case 10:/* (7 * 6) */ FCols = 7; FRows = 6; break;
- case 11:/* (8 * 7) */ FCols = 8; FRows = 7; break;
- case 12:/* (8 * 8) */ FCols = 8; FRows = 8; break;
- default: ALayout = 0; FCols = 1; FRows = 1; break;
- }
- FLayout = ALayout;
- FScreenCnt = FCols * FRows;
- }
- //---------------------------------------------------------------------------
- void __fastcall TFrmCameraScreen::ResetScreenForm(String AScreenName)
- {
- TMonitoringScreen* pObj = ObjScreenManager->FLists.Find(AScreenName);
- if (!pObj)
- {
- String sMsg = "모니터링 화면 변경\r\n화면정보를 찾을 수 없습니다..\r\n[" + AScreenName + "]";
- Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
- return;
- }
- SetLayout(pObj->LAYOUT);
- int ii;
- for(ii = 0; ii < screeForm.screenCnt && ii < MAX_CAMERA_PER_SCREEM; ii++)
- {
- screeForm.info[ii].show = false;
- screeForm.info[ii].installed = false;
- screeForm.info[ii].CTLR_NMBR = 0;
- if (screeForm.info[ii].frmCam)
- {
- screeForm.info[ii].frmCam->Term();
- }
- }
- screeForm.screenCnt = FScreenCnt;
- for(ii = 0; ii < screeForm.screenCnt && ii < MAX_CAMERA_PER_SCREEM; ii++)
- {
- screeForm.info[ii].show = true;
- if (screeForm.info[ii].frmCam == NULL)
- {
- screeForm.info[ii].frmCam = new TFrmCameraPlayer(this);
- screeForm.info[ii].frmCam->Parent = PnlCamera;
- }
- screeForm.info[ii].frmCam->IsTerm = false;
- screeForm.info[ii].frmCam->Tag = ii;
- screeForm.info[ii].installed = false;
- screeForm.info[ii].CTLR_NMBR = 0;
- //String NAME = "--Empty--";
- String NAME = "";
- String STRM_ADDR = "";
- String FULL_STRM_ADDR = "";
- int VIEW_MODE = 0;
- TScreenCtlr *pScr = pObj->FLists.Find(ii+1);
- if (pScr)
- {
- TMonitoringCtlr *pCtlr = ObjCtlrManager->FLists.Find(pScr->CTLR_NMBR);
- if (pCtlr)
- {
- screeForm.info[ii].installed = true;
- screeForm.info[ii].CTLR_NMBR = pScr->CTLR_NMBR;
- NAME = pCtlr->NAME;
- STRM_ADDR = pCtlr->STRM_ADDR;
- FULL_STRM_ADDR = pCtlr->FULL_STRM_ADDR;
- }
- }
- screeForm.info[ii].frmCam->InitCamera(screeForm.info[ii].installed,
- screeForm.info[ii].CTLR_NMBR,
- NAME,
- STRM_ADDR,
- FULL_STRM_ADDR,
- VIEW_MODE);
- screeForm.info[ii].frmCam->AutoPlay();
- }
- for(ii = 0; ii < MAX_CAMERA_PER_SCREEM; ii++)
- {
- if (screeForm.info[ii].show == false)
- {
- if (screeForm.info[ii].frmCam)
- {
- screeForm.info[ii].frmCam->Hide();
- }
- }
- }
- RecalFormSize();
- }
- //---------------------------------------------------------------------------
- void __fastcall TFrmCameraScreen::RecalFormSize()
- {
- Application->ProcessMessages();
- int nRows = 0;
- int nCols = 0;
- int nTop = 0;
- int nLeft = 0;
- int nTotTop, nTotLeft;
- int nWidth = (PnlCamera->Width - FCols+2) / FCols;
- int nHeight= (PnlCamera->Height- FRows+2) / FRows;
- int nTopMargin = 2;
- int nLeftMargin = 1;
- try
- {
- //LockWindowUpdate(Handle);
- for(int ii = 0; ii < screeForm.screenCnt && ii < MAX_CAMERA_PER_SCREEM; ii++)
- {
- if (!screeForm.info[ii].frmCam)
- continue;
- screeForm.info[ii].frmCam->Width = nWidth;
- screeForm.info[ii].frmCam->Height= nHeight;
- nTotTop = (nRows * screeForm.info[ii].frmCam->Height)+(nTop*(nRows+1));
- nTotLeft = (nCols * screeForm.info[ii].frmCam->Width)+(nLeft*(nCols+1));
- screeForm.info[ii].frmCam->Top = nTopMargin + nTotTop;
- screeForm.info[ii].frmCam->Left= nLeftMargin + nTotLeft;
- if ((ii%FCols) == (FCols-1))
- {
- nRows++;
- nCols = 0;
- }
- else
- {
- nCols++;
- }
- if (!screeForm.info[ii].frmCam->Showing)
- {
- screeForm.info[ii].frmCam->Show();
- }
- screeForm.info[ii].frmCam->AdjustVideoFit();
- }
- }
- __finally
- {
- //LockWindowUpdate(0);
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TFrmCameraScreen::Play()
- {
- int ii;
- for(ii = 0; ii < screeForm.screenCnt && ii < MAX_CAMERA_PER_SCREEM; ii++)
- {
- if (!screeForm.info[ii].frmCam)
- continue;
- screeForm.info[ii].frmCam->AutoPlay();
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TFrmCameraScreen::Stop()
- {
- TmrStop->Enabled = true;
- }
- //---------------------------------------------------------------------------
- void __fastcall TFrmCameraScreen::TmrFullScreenTimer(TObject *Sender)
- {
- TmrFullScreen->Enabled = false;
- if (FFullScreenIdx < screeForm.screenCnt && FFullScreenIdx < MAX_CAMERA_PER_SCREEM)
- {
- if (screeForm.info[FFullScreenIdx].frmCam)
- {
- Stop();
- TFrmCameraFullScreen *pFrmFullScreen = new TFrmCameraFullScreen(this);
- pFrmFullScreen->BoundsRect = this->Monitor->BoundsRect;
- pFrmFullScreen->PnlStream->Align = alNone;
- pFrmFullScreen->PnlStream->Align = alClient;
- pFrmFullScreen->RTSP_ADDR = screeForm.info[FFullScreenIdx].frmCam->FULL_STRM_ADDR;
- pFrmFullScreen->ShowModal();
- PnlCamera->Parent = this;
- PnlCamera->Tag = (int)this;
- delete pFrmFullScreen;
- pFrmFullScreen = NULL;
- Play();
- }
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TFrmCameraScreen::TmrStopTimer(TObject *Sender)
- {
- TmrStop->Enabled = false;
- int ii;
- for(ii = 0; ii < screeForm.screenCnt && ii < MAX_CAMERA_PER_SCREEM; ii++)
- {
- if (!screeForm.info[ii].frmCam)
- continue;
- screeForm.info[ii].frmCam->Stop();
- }
- }
- //---------------------------------------------------------------------------
|