monitor.cc
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:2k
源码类别:

通讯编程

开发平台:

Visual C++

  1. class Node;
  2. #include "config.h"
  3. #include "stdio.h"
  4. #include "monitor.h"
  5. #include "animation.h"
  6. #include "netview.h"
  7. #include "paint.h"
  8. Monitor::Monitor(int mon_num, Animation *a, double size) :
  9.   mon_num_(mon_num), anim_(a), size_(size)
  10. {
  11.   paint_=Paint::instance()->thin();
  12.   mon_state_=a->monitor_state();
  13.   sprintf(label_, "%d", mon_num);
  14. }
  15. Monitor::~Monitor()
  16. {
  17.   if (mon_state_!=NULL)
  18.     delete(mon_state_);
  19. }
  20. void Monitor::update(double now, char *result, int len)
  21. {
  22.   if (anim_!=NULL)
  23.     anim_->monitor(this, now, result, len);
  24.   else
  25.     sprintf(result, "Not visible");
  26. }
  27. void Monitor::size(double size) {
  28.   size_=size;
  29. }
  30. /*XXX there must be a cleaner way to do this*/
  31. /*we need coordinates from the animation itself, and information about
  32.   the size of the whole model from the netmodel.  Thus we have two draw
  33.   methods, one from the animation that sets up data and one from the
  34.   netmodel that actually does the drawing*/
  35. void Monitor::draw(View */*nv*/, float x, float y)
  36. {
  37.   x_=x; 
  38.   y_=y;
  39. }
  40. void Monitor::draw_monitor(View *nv, float ymin, float /*ymax*/) const
  41. {
  42.   if (anim_==NULL)
  43.     return;
  44.   float delta = 0.5 * size_;
  45.   nv->line(x_,y_,x_,ymin-delta,paint_);
  46.   nv->rect(x_-delta, ymin-delta, x_+delta, ymin-(size_+delta), paint_);
  47.   nv->string(x_, ymin-size_, size_, label_, ANCHOR_CENTER);
  48. }
  49. void Monitor::delete_monitor_object(Animation *m)
  50. {
  51.   /*need to check this because we can sometimes hand a monitor over
  52.     to a new animation just before the old animation calls this*/
  53.   if (anim_==m)
  54.     anim_=NULL;
  55. }