OSDN Git Service

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