FrmCameraViewF.cpp 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. #include "FrmCameraViewF.h"
  5. #include "AppGlobalF.h"
  6. //---------------------------------------------------------------------------
  7. #pragma package(smart_init)
  8. #pragma link "cxControls"
  9. #pragma link "cxGraphics"
  10. #pragma link "cxLookAndFeelPainters"
  11. #pragma link "cxLookAndFeels"
  12. #pragma link "cxPC"
  13. #pragma link "cxPCdxBarPopupMenu"
  14. #pragma link "dxSkinsCore"
  15. #pragma link "dxSkinscxPCPainter"
  16. #pragma resource "*.dfm"
  17. TFrmCameraView *FrmCameraView;
  18. //---------------------------------------------------------------------------
  19. __fastcall TFrmCameraView::TFrmCameraView(TComponent* Owner, TcxTabSheet *ASheet, TXView *AObj)
  20. : TForm(Owner)
  21. {
  22. FLayout = -1;
  23. FSheet = ASheet;
  24. FView = AObj;
  25. Caption = ASheet->Caption;
  26. TXCctv *pCctv = NULL;
  27. for (int ii = 0; ii < MAX_CAMERA; ii++)
  28. {
  29. FStreamType[ii] = RTSP;
  30. if (FView->FCamera[ii].Installed)
  31. pCctv = XCctvManager->FLists.Find(FView->FCamera[ii].Id);
  32. else
  33. pCctv = NULL;
  34. if (pCctv)
  35. {
  36. FCameraForm[ii] = new TFrmSamsungPlayer1(this, pCctv, FView->FCamera[ii].Play);
  37. FStreamType[ii] = SAMSUNG;
  38. }
  39. else
  40. {
  41. FCameraForm[ii] = new TFrmEmptyCamera(this, pCctv, FView->FCamera[ii].Play);
  42. }
  43. FCameraForm[ii]->Parent = PnlClient;
  44. }
  45. }
  46. //---------------------------------------------------------------------------
  47. void __fastcall TFrmCameraView::SetLayout(int ALayout)
  48. {
  49. if (FLayout == ALayout) return;
  50. switch(ALayout)
  51. {
  52. case 0:/* (1 * 1) */ FCols = 1; FRows = 1; break;
  53. case 1:/* (2 * 2) */ FCols = 2; FRows = 2; break;
  54. case 2:/* (3 * 3) */ FCols = 3; FRows = 3; break;
  55. case 3:/* (3 * 2) */ FCols = 3; FRows = 2; break;
  56. case 4:/* (4 * 3) */ FCols = 4; FRows = 3; break;
  57. case 5:/* (4 * 4) */ FCols = 4; FRows = 4; break;
  58. case 6:/* (4 * 5) */ FCols = 4; FRows = 5; break;
  59. case 7:/* (5 * 4) */ FCols = 5; FRows = 4; break;
  60. case 8:/* (6 * 4) */ FCols = 6; FRows = 4; break;
  61. case 9:/* (6 * 5) */ FCols = 6; FRows = 5; break;
  62. case 10:/* (7 * 6) */ FCols = 7; FRows = 6; break;
  63. case 11:/* (8 * 7) */ FCols = 8; FRows = 7; break;
  64. case 12:/* (8 * 8) */ FCols = 8; FRows = 8; break;
  65. default: ALayout = 0; FCols = 1; FRows = 1; break;
  66. }
  67. FLayout = ALayout;
  68. if (FView)
  69. {
  70. FView->Layout = FLayout;
  71. }
  72. RecalFormSize();
  73. }
  74. //---------------------------------------------------------------------------
  75. void __fastcall TFrmCameraView::RecalFormSize()
  76. {
  77. int ii;
  78. int nMaxForm = FCols * FRows;
  79. Application->ProcessMessages();
  80. for (ii = nMaxForm; ii < MAX_CAMERA; ii++)
  81. {
  82. if (FStreamType[ii] == SAMSUNG)
  83. {
  84. TFrmSamsungPlayer1 *pFrmCam = (TFrmSamsungPlayer1*)FCameraForm[ii];
  85. if (pFrmCam->Visible)
  86. {
  87. pFrmCam->Disconnect();
  88. if (pFrmCam->Showing)
  89. {
  90. pFrmCam->TmrStop->Enabled = true;
  91. pFrmCam->Hide();
  92. }
  93. }
  94. }
  95. }
  96. int nRows = 0;
  97. int nCols = 0;
  98. int nTop = 0;
  99. int nLeft = 0;
  100. int nTotTop, nTotLeft;
  101. int nWidth = (PnlClient->Width - FCols+1) / FCols;
  102. int nHeight= (PnlClient->Height- FRows+1) / FRows;
  103. try
  104. {
  105. LockWindowUpdate(Handle);
  106. for (ii = 0; ii < nMaxForm; ii++)
  107. {
  108. TForm *pFrmCam = FCameraForm[ii];
  109. if (!pFrmCam)
  110. continue;
  111. pFrmCam->Width = nWidth;
  112. pFrmCam->Height= nHeight;
  113. nTotTop = (nRows * pFrmCam->Height)+(nTop*(nRows+1));
  114. nTotLeft = (nCols * pFrmCam->Width)+(nLeft*(nCols+1));
  115. pFrmCam->Top = nTotTop;
  116. pFrmCam->Left= nTotLeft;
  117. if ((ii%FCols) == (FCols-1))
  118. {
  119. nRows++;
  120. nCols = 0;
  121. }
  122. else
  123. {
  124. nCols++;
  125. }
  126. if (!pFrmCam->Showing)
  127. {
  128. pFrmCam->Show();
  129. //pFrmCam->TmrPlay->Enabled = true;
  130. }
  131. }
  132. }
  133. __finally
  134. {
  135. LockWindowUpdate(0);
  136. }
  137. }
  138. //---------------------------------------------------------------------------
  139. void __fastcall TFrmCameraView::Play()
  140. {
  141. for (int ii = 0; ii < MAX_CAMERA; ii++)
  142. {
  143. TForm *pFrmCam = FCameraForm[ii];
  144. if (!pFrmCam)
  145. continue;
  146. if (FStreamType[ii] == SAMSUNG)
  147. {
  148. TFrmSamsungPlayer1 *pFrmCam = (TFrmSamsungPlayer1*)FCameraForm[ii];
  149. if (pFrmCam->FAutoPlay)
  150. {
  151. pFrmCam->TmrPlay->Enabled = true;
  152. }
  153. }
  154. }
  155. }
  156. //---------------------------------------------------------------------------
  157. void __fastcall TFrmCameraView::Stop()
  158. {
  159. for (int ii = 0; ii < MAX_CAMERA; ii++)
  160. {
  161. TForm *pFrmCam = FCameraForm[ii];
  162. if (!pFrmCam)
  163. continue;
  164. if (FStreamType[ii] == SAMSUNG)
  165. {
  166. TFrmSamsungPlayer1 *pFrmCam = (TFrmSamsungPlayer1*)FCameraForm[ii];
  167. pFrmCam->TmrStop->Enabled = true;
  168. }
  169. }
  170. }
  171. //---------------------------------------------------------------------------