base_card.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #ifndef __BASE_CARD__
  2. #define __BASE_CARD__
  3. #include "base_data.h"
  4. #include "classdef.h"
  5. class Card;
  6. struct position_interface
  7. {
  8. virtual point_2 get_position()=0;
  9. virtual bool save_point() = 0;
  10. };
  11. struct card:position_interface
  12. {
  13. const static int MAX_HIS_LOCATION=100;
  14. std::weak_ptr<position_interface> m_pi;
  15. std::shared_ptr<Card> m_card;
  16. //
  17. area * m_area;
  18. //
  19. deque<st_coord> ori_list_;
  20. //
  21. //fixed_deque<point_2> view_list_;
  22. /********************************/
  23. //get point.
  24. /********************************/
  25. st_coord pin_point(uint16_t &ct)
  26. {
  27. st_coord stc;
  28. stc.m_ct = m_card->time_center_stamp;//ct
  29. if (ct == stc.m_ct)
  30. {
  31. //
  32. return stc;
  33. }
  34. stc.x_ = m_card->origin_locate.x ;
  35. stc.y_ = m_card->origin_locate.y ;
  36. stc.gen_time_ = m_card->m_ct_time - m_Start_time; //时间精确到ms
  37. //debug_print_syslog(0,"[framework pin_point_1]cardId:%s,x:%.2f,y:%.2f,t:%ld",m_card->card_id.c_str(),stc.x_,stc.y_,stc.gen_time_);
  38. //判断来的数据是否有效。
  39. ct = stc.m_ct;
  40. ori_list_.push_back(stc);
  41. if(ori_list_.size()>MAX_HIS_LOCATION)
  42. {
  43. ori_list_.pop_front();
  44. }
  45. return stc;
  46. }
  47. void set_position_interface(std::shared_ptr<position_interface> ptr)
  48. {
  49. m_pi=ptr;
  50. }
  51. virtual point_2 get_position()
  52. {
  53. point_2 p;
  54. if (auto mp = m_pi.lock())
  55. {
  56. p = mp->get_position();
  57. }
  58. return p;
  59. }
  60. virtual bool save_point()
  61. {
  62. bool b = false;
  63. if (auto mp = m_pi.lock())
  64. {
  65. b = mp->save_point();
  66. }
  67. return b;
  68. //return (m_pi.lock())->save_point();
  69. }
  70. };
  71. struct person : card
  72. {
  73. time_t enter_time_;
  74. };
  75. #endif