OSDN Git Service

Initial Commit
[qcad/qcad.git] / circuits / QRot.cpp
1 //---------------------------------------------------------------------------\r
2 // Z Rotation\r
3 //---------------------------------------------------------------------------\r
4 #include <stdlib.h>\r
5 #include "QRot.h"\r
6 //---------------------------------------------------------------------------\r
7 QRot::QRot(int x,int y) :QCircuit(x,y) {\r
8   Name = GetTypeStr();\r
9   Phase = 0;\r
10 }\r
11 //---------------------------------------------------------------------------\r
12 QRot::QRot(int x,int y, string Param) :QCircuit(x,y) {\r
13   Name = GetTypeStr();\r
14   Phase = atof(Param.c_str());\r
15 }\r
16 //---------------------------------------------------------------------------\r
17 void\r
18 QRot::Draw(QDraw *qDraw) {\r
19   int GridSize = qDraw->GetGridSize();\r
20   int UnitSize = qDraw->GetUnitSize();\r
21 \r
22   int d = (GridSize-UnitSize)/2;\r
23   int x1 = X * GridSize+d;\r
24   int y1 = Y * GridSize+d;\r
25   int x2 = x1 + UnitSize;\r
26   int y2 = y1 + UnitSize;\r
27 \r
28   qDraw->SetBrushColor(clWhite);\r
29   qDraw->FillRect(x1,y1,x2,y2);\r
30   qDraw->SetBrushColor(clPurple);\r
31   qDraw->FrameRect(x1,y1,x2,y2);\r
32   qDraw->SetPenColor(clBlack);\r
33   qDraw->SetBrushColor(clWhite);\r
34   ostringstream os;\r
35   os << Phase;\r
36   qDraw->TextOut(x1+UnitSize/2,y1+UnitSize/2, os.str());\r
37 }\r
38 //---------------------------------------------------------------------------\r
39 void\r
40 QRot::Reverse(int y) {\r
41   Y = y-Y;\r
42 }\r
43 //---------------------------------------------------------------------------\r
44 string\r
45 QRot::GetCalcText(void) {\r
46   ostringstream os;\r
47   os << "ROT(";\r
48   os << "q[" << Y << "],";\r
49   os << Phase << ")";\r
50   return os.str();\r
51 }\r
52 //---------------------------------------------------------------------------\r
53 void\r
54 QRot::DrawPS(QPSDraw *psDraw) {\r
55   int GridSize = psDraw->GetGridSize();\r
56   int UnitSize = psDraw->GetUnitSize();\r
57 \r
58   int d = (GridSize-UnitSize)/2;\r
59   int x1 = X * GridSize+d;\r
60   int y1 = Y * GridSize+d;\r
61   int x2 = x1 + UnitSize;\r
62   int y2 = y1 + UnitSize;\r
63 \r
64   psDraw->FillRect(x1,y1,x2,y2);\r
65 \r
66   psDraw->FillRect(x1,y1,x2,y2);\r
67   psDraw->FrameRect(x1,y1,x2,y2);\r
68   ostringstream os;\r
69   os << Phase;\r
70   psDraw->TextOut(x1+UnitSize/2,y1+UnitSize/2,os.str());\r
71 }\r
72 //---------------------------------------------------------------------------\r
73 string\r
74 QRot::GetParam(void) {\r
75   ostringstream os;\r
76   os << Phase;\r
77   return os.str();\r
78 }\r
79 //---------------------------------------------------------------------------\r
80 TRect QRot::GetOccupiedRect() {\r
81   return TRect(X, Y, X + 1, Y + 1);\r
82 }\r
83 //--------------------------------------------------------------------------\r
84 QCircuit *\r
85 QRot::Clone() {\r
86   QRot * qc = new QRot(X, Y);\r
87   qc->SetPhase(GetPhase());\r
88   return (QCircuit*)qc;\r
89 }\r
90 //---------------------------------------------------------------------------\r