Develop and Download Open Source Software

Browse Subversion Repository

Contents of /trunk/circuits/QCRot.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (show annotations) (download) (as text)
Wed Aug 3 10:14:23 2011 UTC (12 years, 9 months ago) by kaityo
File MIME type: text/x-c++src
File size: 3636 byte(s)
First commit
1 //---------------------------------------------------------------------------
2 #include "QCRot.h"
3 #include "StrUtils.h"
4 //---------------------------------------------------------------------------
5 QCRot::QCRot(int x,int y) :QCircuit(x,y) {
6 Name = GetTypeStr();
7 Target = Y;
8 Phase = 0;
9 }
10 //---------------------------------------------------------------------------
11 QCRot::QCRot(int x,int y, string param) :QCircuit(x,y) {
12 Name = GetTypeStr();
13 Target = Y;
14 Phase = 0;
15 vector<string> v = StrUtils::split_str(param);
16 Target = atoi(v[0].c_str());
17 Phase = atof(v[1].c_str());
18 }
19 //---------------------------------------------------------------------------
20 void
21 QCRot::Draw(QDraw *qDraw) {
22 int GridSize = qDraw->GetGridSize();
23 int UnitSize = qDraw->GetUnitSize();
24
25
26 int tx = X;
27 int ty = Target;
28
29 int tx1 = tx*GridSize + GridSize/2;
30 int ty1 = ty*GridSize + GridSize/2;
31 int tx2 = X*GridSize + GridSize/2;
32 int ty2 = Y*GridSize + GridSize/2;
33 qDraw->SetPenColor(clBlack);
34 qDraw->DrawLine(tx1,ty1,tx2,ty2);
35 qDraw->SetBrushColor(clBlack);
36
37 qDraw->Ellipse(tx1-4,ty1-4,tx1+5,ty1+5);
38
39
40 int d = (GridSize-UnitSize)/2;
41 int x1 = X * GridSize+d;
42 int y1 = Y * GridSize+d;
43 int x2 = x1 + UnitSize;
44 int y2 = y1 + UnitSize;
45
46 qDraw->SetBrushColor(clWhite);
47 qDraw->FillRect(x1,y1,x2,y2);
48 qDraw->SetBrushColor(clPurple);
49 qDraw->FrameRect(x1,y1,x2,y2);
50 qDraw->SetPenColor(clBlack);
51 qDraw->SetBrushColor(clWhite);
52 ostringstream os;
53 os << Phase;
54 qDraw->TextOut(x1+UnitSize/2,y1+UnitSize/2, os.str());
55 }
56 //---------------------------------------------------------------------------
57 void
58 QCRot::Reverse(int y) {
59 Y = y-Y;
60 Target = y - Target;
61 }
62 //---------------------------------------------------------------------------
63 string
64 QCRot::GetCalcText(void) {
65 ostringstream os;
66 os << "CROT(";
67 os << "q[" << Y << "],";
68 os << "q[" << Target << "],";
69 os << Phase << ")";
70 return os.str();
71 }
72
73 //---------------------------------------------------------------------------
74 void
75 QCRot::DrawPS(QPSDraw *psDraw) {
76 int GridSize = psDraw->GetGridSize();
77 int UnitSize = psDraw->GetUnitSize();
78
79 int tx = X;
80 int ty = Target;
81
82 int tx1 = tx*GridSize + GridSize/2;
83 int ty1 = ty*GridSize + GridSize/2;
84 int tx2 = X*GridSize + GridSize/2;
85 int ty2 = Y*GridSize + GridSize/2;
86 psDraw->DrawLine(tx1,ty1,tx2,ty2);
87 psDraw->DrawFillCircle(tx1,ty1,4);
88
89 int d = (GridSize-UnitSize)/2;
90 int x1 = X * GridSize+d;
91 int y1 = Y * GridSize+d;
92 int x2 = x1 + UnitSize;
93 int y2 = y1 + UnitSize;
94
95 psDraw->FillRect(x1,y1,x2,y2);
96
97
98 psDraw->FillRect(x1,y1,x2,y2);
99 psDraw->FrameRect(x1,y1,x2,y2);
100 ostringstream os;
101 os << Phase;
102 psDraw->TextOut(x1+UnitSize/2,y1+UnitSize/2,os.str());
103 }
104 //---------------------------------------------------------------------------
105 string
106 QCRot::GetParam(void) {
107 ostringstream os;
108 os << Target << "," << Phase;
109 return os.str();
110 }
111 //---------------------------------------------------------------------------
112 TRect
113 QCRot::GetOccupiedRect() {
114 TRect rc;
115 rc.left = X;
116 rc.right = X + 1;
117 rc.top = Y;
118 rc.bottom = Y + 1;
119 if (Target < Y) {
120 rc.top = Target;
121 } else {
122 rc.bottom = Target + 1;
123 }
124 return rc;
125 }
126 //--------------------------------------------------------------------------
127 QCircuit *
128 QCRot::Clone() {
129 QCRot * qc = new QCRot(X, Y);
130 qc->SetTarget(GetTarget());
131 qc->SetPhase(GetPhase());
132 return (QCircuit*)qc;
133 }
134 //---------------------------------------------------------------------------
135

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26