home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 9 / CDACTUAL9.iso / progs / CB / DATA.Z / PIES.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1996-10-17  |  1.8 KB  |  96 lines

  1. #include <Windows.hpp>
  2. #include "pies.h"
  3.  
  4. void __fastcall TAngles::Assign(TAngles Value);
  5. {
  6.   StartAngle = Value.StartAngle;
  7.   EndAngle = Value.EndAngle;
  8. }
  9.  
  10. void __fastcall TAngles::SetStart(Integer Value);
  11. {
  12.   if (Value != FStartAngle){
  13.     FStartAngle = Value;
  14.     Changed;
  15.   }
  16. }
  17.  
  18. void __fastcall TAngles::SetEnd(Value: Integer);
  19. {
  20.   if (Value != FEndAngle){
  21.     FEndAngle = Value;
  22.     Changed;
  23.   }
  24. }
  25.  
  26. void __fastcall TAngles::Changed;
  27. {
  28.   if (Assigned(FOnChange))
  29.     FOnChange(Self);
  30. }
  31.  
  32. TPie::TPie(TComponent* AOwner): TGrahpicControl(AOwner)
  33. {
  34.   Width = 100;
  35.   Height = 100;
  36.   FPen = new TPen();
  37.   FPen->OnChange = StyleChanged;
  38.   FBrush = new TBrush();
  39.   FBrush->OnChange = StyleChanged;
  40.   FAngles = new TAngles();
  41.   FAngles->OnChange = StyleChanged;
  42.   FAngles->StartAngle = 180;
  43.   FAngles->EndAngle = 90;
  44. }
  45.  
  46. void __fastcall TPie::StyleChanged(TObject Sender);
  47. {
  48.   Invalidate;
  49. }
  50.  
  51. void __fastcall TPie::SetBrush(TBrush Value);
  52. {
  53.   FBrush->Assign(Value);
  54. }
  55.  
  56. void __fastcall TPie::SetPen(TPen Value);
  57. {
  58.   FPen->Assign(Value);
  59. }
  60.  
  61. void __fastcall TPie::SetAngles(TAngles Value);
  62. {
  63.   FAngles->Assign(Value);
  64.   Invalidate;
  65. }
  66.  
  67. void __fastcall TPie::Paint()
  68. {
  69.   Integer StartA, EndA;
  70.   Integer midX, midY, stX, stY, endX, endY;
  71.   Real sX, sY, eX, eY;
  72.  
  73.   StartA = FAngles->StartAngle;
  74.   EndA = FAngles->EndAngle;
  75.   midX =  div(Width,2);
  76.   midY = div(Height,2);
  77.  
  78.   sX = Cos((StartA / 180.0) * pi);
  79.   sY = Sin((StartA / 180.0) * pi);
  80.   eX = Cos((EndA / 180.0) * pi);
  81.   eY = Sin((EndA / 180.0) * pi);
  82.  
  83.   stX = Round(sX * 100);
  84.   stY = Round(sY * 100);
  85.   endX = Round(eX * 100);
  86.   endY = Round(eY * 100);
  87.  
  88.   Canvas->Pen = FPen;
  89.   Canvas->Brush = FBrush;
  90.   Canvas->Pie(0,0,
  91.               Width,Height,
  92.               midX + stX, midY - stY,
  93.               midX + endX, midY - endY);
  94. }
  95.  
  96.