OSDN Git Service

adds README
[qcad/qcad.git] / circuits / QWalsh.cpp
1 //---------------------------------------------------------------------------\r
2 // Hadamard Gate\r
3 //---------------------------------------------------------------------------\r
4 #include "QWalsh.h"\r
5 //---------------------------------------------------------------------------\r
6 QWalsh::QWalsh(int x,int y) :QCircuit(x,y) {\r
7   Name = GetTypeStr();\r
8 }\r
9 //---------------------------------------------------------------------------\r
10 void\r
11 QWalsh::Draw(QDraw *qDraw) {\r
12   int GridSize = qDraw->GetGridSize();\r
13   int UnitSize = qDraw->GetUnitSize();\r
14   int d = (GridSize-UnitSize)/2;\r
15   int x1 = X * GridSize+d;\r
16   int y1 = Y * GridSize+d;\r
17   int x2 = x1 + UnitSize;\r
18   int y2 = y1 + UnitSize;\r
19 \r
20   qDraw->SetBrushColor(clWhite);\r
21   qDraw->FillRect(x1,y1,x2,y2);\r
22   qDraw->SetBrushColor(clRed);\r
23   qDraw->FrameRect(x1,y1,x2,y2);\r
24 \r
25   qDraw->SetBrushColor(clWhite);\r
26   qDraw->TextOut(x1+UnitSize/2,y1+UnitSize/2,"H");\r
27 }\r
28 //---------------------------------------------------------------------------\r
29 string\r
30 QWalsh::GetCalcText(void) {\r
31   ostringstream os;\r
32   os << "H(q[" << Y << "])";\r
33   return os.str();\r
34 }\r
35 //---------------------------------------------------------------------------\r
36 void\r
37 QWalsh::DrawPS(QPSDraw *psDraw) {\r
38   int GridSize = psDraw->GetGridSize();\r
39   int UnitSize = psDraw->GetUnitSize();\r
40   int d = (GridSize-UnitSize)/2;\r
41   int x1 = X * GridSize+d;\r
42   int y1 = Y * GridSize+d;\r
43   int x2 = x1 + UnitSize;\r
44   int y2 = y1 + UnitSize;\r
45 \r
46   psDraw->FillRect(x1,y1,x2,y2);\r
47   psDraw->FrameRect(x1,y1,x2,y2);\r
48   psDraw->TextOut(x1+UnitSize/2,y1+UnitSize/2,"H");\r
49 }\r
50 //---------------------------------------------------------------------------\r
51 void\r
52 QWalsh::Reverse(int y) {\r
53   Y = y - Y;\r
54 }\r
55 //---------------------------------------------------------------------------\r
56 TRect\r
57 QWalsh::GetOccupiedRect() {\r
58   return TRect(X, Y, X + 1, Y + 1);\r
59 }\r
60 //---------------------------------------------------------------------------\r
61 QCircuit *\r
62 QWalsh::Clone() {\r
63   QWalsh *qw = new QWalsh(X, Y);\r
64   return (QCircuit*)qw;\r
65 }\r
66 //---------------------------------------------------------------------------\r
67 \r