home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 May / Pcwk5b98.iso / Borland / Cplus45 / BC45 / STREAMS.PAK / STRMPNT.CPP < prev    next >
C/C++ Source or Header  |  1995-08-29  |  2KB  |  113 lines

  1. // ---------------------------------------------------------------------------
  2. // Copyright (C) 1994 Borland International
  3. //  strmpnt.cpp
  4. //    Helper file for streaming examples.
  5. // ---------------------------------------------------------------------------
  6.  
  7. #include "strmpnt.h"
  8.  
  9. // 
  10. // T2DPoint
  11. // 
  12. T2DPoint::T2DPoint(int i, int j)
  13.     : X(i), Y(j)
  14. {
  15. }
  16.  
  17. void T2DPoint::Draw()
  18. {
  19.     cout << "Drawing 2D point at " << X << ", " << Y << endl;
  20. }
  21.  
  22. IMPLEMENT_CASTABLE(T2DPoint);
  23. IMPLEMENT_STREAMABLE(T2DPoint);
  24.  
  25. void T2DPoint::Streamer::Write(opstream& os) const
  26. {
  27.     os << GetObject()->X << GetObject()->Y;
  28. }
  29.  
  30. void *T2DPoint::Streamer::Read(ipstream& in, uint32) const
  31. {
  32.     in >> GetObject()->X >> GetObject()->Y;
  33.     return GetObject();
  34. }
  35.  
  36. // 
  37. // T3DPoint
  38. // 
  39. T3DPoint::T3DPoint(int i, int j, int k)
  40.     : T2DPoint(i, j), Z(k)
  41. {
  42. }
  43.  
  44. void T3DPoint::Draw()
  45. {
  46.     cout << "Drawing 3D point at " << X << ", " << Y << ", " << Z << endl;
  47. }
  48.  
  49. IMPLEMENT_CASTABLE1(T3DPoint, T2DPoint);
  50. IMPLEMENT_STREAMABLE1(T3DPoint, T2DPoint);
  51.  
  52. void T3DPoint::Streamer::Write(opstream& os) const
  53. {
  54.     WriteBaseObject((T2DPoint*)GetObject(), os);
  55.     os << GetObject()->Z;
  56. }
  57.  
  58. void *T3DPoint::Streamer::Read(ipstream& in, uint32) const
  59. {
  60.     ReadBaseObject((T2DPoint*)GetObject(), in);
  61.     in >> GetObject()->Z;
  62.     return GetObject();
  63. }
  64.  
  65. // 
  66. // Color
  67. // 
  68. TColor::TColor(int i, int j, int k)
  69.     : R(i), G(j), B(k)
  70. {
  71. }
  72.  
  73. void TColor::DisplayColor()
  74. {
  75.     cout << "Color (" << R << ", " << G << ", " << B << ")" << endl;
  76. }
  77.  
  78.  
  79. // 
  80. // T2DPointColor
  81. // 
  82. T2DPointColor::T2DPointColor(int x, int y, int r, int g, int b)
  83.     : T2DPoint(x, y), TColor(r, g, b)
  84. {
  85. }
  86.  
  87. void T2DPointColor::Draw()
  88. {
  89.     DisplayColor();
  90.     T2DPoint::Draw();
  91. }
  92.  
  93. IMPLEMENT_CASTABLE2(T2DPointColor, T2DPoint, TColor);
  94. IMPLEMENT_STREAMABLE2(T2DPointColor, T2DPoint, TColor);
  95.  
  96. void T2DPointColor::Streamer::Write(opstream& os) const
  97. {
  98.     WriteBaseObject((T2DPoint*)GetObject(), os);
  99.  
  100.     // Since TColor is not streamable (i.e. not derived from TStreamableBase
  101.     // we'll write out the data members of it only.
  102.     // Similarly for T2DPointColor::Streamer::Read().
  103.     os << GetObject()->R << GetObject()->G << GetObject()->B;
  104. }
  105.  
  106. void *T2DPointColor::Streamer::Read(ipstream& in, uint32) const
  107. {
  108.     ReadBaseObject((T2DPoint*)GetObject(), in);
  109.     in >> GetObject()->R >> GetObject()->G >> GetObject()->B;
  110.     return GetObject();
  111. }
  112.  
  113.