1#ifndef _PlacementManagerClass_H_
2#define _PlacementManagerClass_H_
8#include "./helpers/SDLHelper.h"
10#include "BaseElectronObject.h"
11#include "BaseIcObject.h"
12#include "WireObject.h"
13#include "FootPinNode.h"
22 std::list<FootPinNode*> findAllPinsOnSegment(
WireObject* );
23 std::list<WireObject*> findAllWiresOnPin(
FootPinNode* );
26 std::list<WireObject*> findoutRedundantWires();
29 std::list<WireObject*> findoutExactlyIdenticalWires();
32 void removeWires(std::list<WireObject*>&);
73 bool isPreviewWireHolderInFreePlace(
WireObject* );
74 bool isPreviewFreePointHolderInFreePlace(
FootPinNode* );
77 bool conflictWith(
const SDL_Rect& rect,
const std::list<T>& target)
79 for(
const auto& _obj : target)
81 const SDL_Rect targetRect = _obj->getLocationRect();
82 if(SDLHelper::SDL_RectsOverlap(rect, targetRect))
115 bool showingCurrentText =
false;
117 bool isShowingCurrentText()
const {
return this->showingCurrentText; };
118 void setShowingCurrentText(
bool _val) { this->showingCurrentText = _val; };
123 void resetCurrentCalculateState();
133 bool canCalcCurrentBySamePosOtherPins(
FootPinNode* footPin);
134 double calcCurrentBySamePosOtherPins(
FootPinNode* footPin);
137 void markInvalidPins();
139 void saveToFile(std::ofstream&);
Definition: AsgardClass.h:17
Definition: BaseElectronObject.h:13
Definition: BaseIcObject.h:11
Definition: PlacementManagerClass.h:18
std::list< BaseIcObject * > snIcObjects
存放已经放置在画布上的所有IC
Definition: PlacementManagerClass.h:59
bool PlaceFootPin(FootPinNode *)
放置落点到布局中
Definition: PlacementManagerClass.cpp:233
bool PlaceIc(BaseIcObject *)
放置IC元件到布局中
Definition: PlacementManagerClass.cpp:249
std::list< WireObject * > snWires
存放已经放置在画布上的所有线段
Definition: PlacementManagerClass.h:62
std::list< FootPinNode * > snFreeFootPins
存放已经放置在画布上的所有自由引脚落点
Definition: PlacementManagerClass.h:65
void resetToBlank()
清空当前布局,重新开始新的电路图绘制
Definition: PlacementManagerClass.cpp:261
void CalculateCurrents()
电流计算
Definition: PlacementManagerClass.cpp:533
bool buildingFootPinsCurrent()
对电路中的所有引脚位置进行扫描,对能够计算出电流的引脚完成电流计算
Definition: PlacementManagerClass.cpp:564
bool eraseExactlyIdenticalWires()
擦除完全相同的线段
Definition: PlacementManagerClass.cpp:497
void Drawing()
遍历IC、Wire、FreePin,渲染到屏幕上
Definition: PlacementManagerClass.cpp:34
bool PlaceWire(WireObject *)
放置线段到布局中
Definition: PlacementManagerClass.cpp:197
std::unordered_map< std::string, std::set< FootPinNode * > > samePosFootPins
存放同位节点信息
Definition: PlacementManagerClass.h:126
void remarkPinsValidState()
将所有的pin的有效状态进行检测和设置
Definition: PlacementManagerClass.cpp:683
std::list< FootPinNode * > waitToCalculateCurrentFootPins
存放需要推导电流的所有FootPin
Definition: PlacementManagerClass.h:131
BaseElectronObject * findObjectUnderMousePos(SDL_Point &)
找到鼠标落点下的IC,将IC句柄返回
Definition: PlacementManagerClass.cpp:295
void ObjectsReport()
简报当前已放置在布局当中的所有器件
Definition: PlacementManagerClass.cpp:330
std::list< FootPinNode * > snBoundFootPins
存放已经放置在画布上的所有隶属于IC或Wire的引脚落点
Definition: PlacementManagerClass.h:68
void eraseRedundantWires()
擦除冗余线段
Definition: PlacementManagerClass.cpp:511
Definition: WireObject.h:14