OSDN Git Service

Initial Commit
[qcad/qcad.git] / qcadwin / Graph.cpp
1 //---------------------------------------------------------------------------\r
2 #include <vcl.h>\r
3 #include <fstream>\r
4 #include <sstream>\r
5 #include <vcl\Clipbrd.hpp>\r
6 #pragma hdrstop\r
7 \r
8 #include "main.h"\r
9 #include "Graph.h"\r
10 \r
11 using namespace std;\r
12 \r
13 //---------------------------------------------------------------------------\r
14 #pragma package(smart_init)\r
15 #pragma resource "*.dfm"\r
16 TFGraph *FGraph;\r
17 //---------------------------------------------------------------------------\r
18 __fastcall\r
19 TFGraph::TFGraph(TComponent* Owner) : TForm(Owner) {\r
20   qBits = NULL;\r
21   qDrawGraph = new QDrawGraph(PaintBox->Canvas);\r
22   qDrawHsvGraph = new QDrawHSVGraph(ImageHsv->Canvas);\r
23 }\r
24 //---------------------------------------------------------------------------\r
25 /**\r
26  * Destructor\r
27  */\r
28 void __fastcall\r
29 TFGraph::FormDestroy(TObject *Sender) {\r
30   delete qDrawGraph;\r
31   delete qDrawHsvGraph;\r
32 }\r
33 //---------------------------------------------------------------------------\r
34 /**\r
35  * Show Graph\r
36  */\r
37 void\r
38 TFGraph::Execute(QBits *_qBits) {\r
39 \r
40   qBits = _qBits;\r
41   if (qDrawGraph == NULL) {\r
42     qDrawGraph = new QDrawGraph(PaintBox->Canvas);\r
43   }\r
44   qDrawGraph->SetImageSize(PaintBox->Width,PaintBox->Height);\r
45 \r
46   RBShowAll->Checked = FMain->MMShowAll->Checked;\r
47   RBShowNonZero->Checked = FMain->MMShowNonZero->Checked;\r
48 \r
49   SBarStandard->Position = 0;\r
50 \r
51   if (RBShowAll->Checked) {\r
52     qDrawGraph->SetDrawMode(QDrawGraph::DM_ALL,qBits);\r
53   } else if (RBShowNonZero->Checked) {\r
54     qDrawGraph->SetDrawMode(QDrawGraph::DM_NONZERO,qBits);\r
55   }\r
56   //Measurement\r
57   ShowMeasurement();\r
58 \r
59   qDrawHsvGraph->SetCanvas(ImageHsv->Canvas);\r
60   qDrawHsvGraph->DrawAll(qBits);\r
61   qDrawHsvGraph->SetCanvas(ImageHsv2D->Canvas);\r
62   qDrawHsvGraph->DrawAll2D(qBits);\r
63   PaintBox->Repaint();\r
64   Show();\r
65 }\r
66 //---------------------------------------------------------------------------\r
67 /**\r
68  *  Show Measured Value\r
69  */\r
70 void\r
71 TFGraph::ShowMeasurement(void) {\r
72   if (qBits->GetNumberOfMeasured()==0) {\r
73     REMeasured->Text = "Measurement was not performed.";\r
74     return;\r
75   }\r
76   qBits->PerformMeasurement();\r
77   ostringstream ss;\r
78   qBits->SaveMeasurementToStream(ss);\r
79   REMeasured->Text = ss.str().c_str();\r
80 }\r
81 //---------------------------------------------------------------------------\r
82 //  Event Processing\r
83 //---------------------------------------------------------------------------\r
84 void __fastcall\r
85 TFGraph::FormMouseWheel(TObject *Sender, TShiftState Shift, int WheelDelta, TPoint &MousePos, bool &Handled) {\r
86   if (PageControl->ActivePage != TSStandard) {\r
87     return;\r
88   }\r
89 \r
90   const double m = 0.1;\r
91   int t = qDrawGraph->GetViewingTop();\r
92   qDrawGraph->SetViewingTop(t - m*WheelDelta);\r
93 \r
94   if(t != qDrawGraph->GetViewingTop()) {\r
95     qDrawGraph->Paint(qBits);\r
96   }\r
97 \r
98   double r = qDrawGraph->GetViewingTopRatio();\r
99   SBarStandard->Position = (int)((SBarStandard->Max-SBarStandard->Min)*r+SBarStandard->Min);\r
100 }\r
101 //---------------------------------------------------------------------------\r
102 /**\r
103  * Save Results\r
104  */\r
105 void __fastcall\r
106 TFGraph::MMSaveResultsClick(TObject *Sender) {\r
107   if (qBits==NULL) {\r
108     return;\r
109   }\r
110 \r
111   if (PageControl->ActivePage == TSMeasured) {\r
112     SaveDialog->Title = "Save Measured Results to File";\r
113   } else {\r
114     SaveDialog->Title = "Save Results to File";\r
115   }\r
116 \r
117   if (!SaveDialog->Execute())return;\r
118 \r
119   char *filename = SaveDialog->FileName.c_str();\r
120   if (PageControl->ActivePage == TSMeasured) {\r
121     //Save Measured Results\r
122     ofstream ofs;\r
123     ofs.open(filename);\r
124     qBits->SaveMeasurementToStream(ofs);\r
125     ofs.close();\r
126   } else {\r
127     qBits->SaveAsText(filename);\r
128   }\r
129 \r
130 }\r
131 //---------------------------------------------------------------------------\r
132 void __fastcall\r
133 TFGraph::MMCloseClick(TObject *Sender) {\r
134   Close();\r
135 }\r
136 //---------------------------------------------------------------------------\r
137 void __fastcall\r
138 TFGraph::RBShowNonZeroClick(TObject *Sender) {\r
139   FMain->MMShowNonZero->Checked = true;\r
140   SBarStandard->Position = 0;\r
141   qDrawGraph->SetDrawMode(QDrawGraph::DM_NONZERO,qBits);\r
142   qDrawGraph->Paint(qBits);\r
143 }\r
144 //---------------------------------------------------------------------------\r
145 void __fastcall\r
146 TFGraph::RBShowAllClick(TObject *Sender) {\r
147   FMain->MMShowAll->Checked = true;\r
148   SBarStandard->Position = 0;\r
149   qDrawGraph->SetDrawMode(QDrawGraph::DM_ALL,qBits);\r
150   qDrawGraph->Paint(qBits);\r
151 }\r
152 //---------------------------------------------------------------------------\r
153 void __fastcall\r
154 TFGraph::PaintBoxPaint(TObject *Sender) {\r
155   qDrawGraph->Paint(qBits);\r
156 }\r
157 //---------------------------------------------------------------------------\r
158 void __fastcall\r
159 TFGraph::SBarStandardScroll(TObject *Sender, TScrollCode ScrollCode, int &ScrollPos) {\r
160   double r = (double)ScrollPos/(double)(SBarStandard->Max-SBarStandard->Min);\r
161   qDrawGraph->SetViewingTopRatio(r);\r
162   qDrawGraph->Paint(qBits);\r
163 }\r
164 //---------------------------------------------------------------------------\r
165 void __fastcall\r
166 TFGraph::FormResize(TObject *Sender) {\r
167   if (qDrawGraph==NULL) {\r
168     return;\r
169   }\r
170   qDrawGraph->SetImageSize(PaintBox->Width,PaintBox->Height);\r
171 }\r
172 //---------------------------------------------------------------------------\r
173 void __fastcall\r
174 TFGraph::MMCopyClick(TObject *Sender) {\r
175   if (REMeasured->SelLength==0) {\r
176     return;\r
177   }\r
178   TClipboard *co = Clipboard();\r
179   co->AsText = REMeasured->SelText;\r
180 }\r
181 //---------------------------------------------------------------------------\r
182 void __fastcall\r
183 TFGraph::PMCopyClick(TObject *Sender) {\r
184   MMCopy->Click();\r
185 }\r
186 //---------------------------------------------------------------------------\r
187 void __fastcall TFGraph::MMHideClick(TObject *Sender) {\r
188  Hide();\r
189 }\r
190 //---------------------------------------------------------------------------\r
191 \r