libraries
- jwwlib
- libdxfrw:一個免費的C++庫,用於讀寫文本格式或二進制格式的DXF文件(C++ library to read and write DXF/DWG files)
- muparser:一個跨平台的公式解析庫,它可以自定義多參數函數,自定義常量、變量及一元前綴、后綴操作符,二元操作符等,它將公式編譯成字節碼,所以計算起來非常快
librecad
- src:源文件
- action:動作類
- cmd:命令行
- lib:各種庫
- actions:處理各種響應事件
- creation
- debug
- engine
- fileio
- filter
- generators
- gui:界面顯示
- information
- math
- modification
- printing
- scripting
- main:啟動程序和窗口
- plugins:插件
- test
- ui:界面控制
qc_applicationwindow
1 /** 2 * Redraws all mdi windows. 3 */ 4 void QC_ApplicationWindow::redrawAll() 5 { 6 if (mdiAreaCAD) 7 { 8 foreach (const QC_MDIWindow* win, window_list) 9 { 10 if (win) 11 { 12 QG_GraphicView* gv = win->getGraphicView(); 13 if (gv) {gv->redraw();} 14 } 15 } 16 } 17 }
\librecad\src\ui
qg_graphicView
updateGridStatusWidget()
1 /** 2 * Sets the text for the grid status widget in the left bottom corner. 3 */ 4 void QG_GraphicView::updateGridStatusWidget(const QString& text) 5 { 6 emit gridStatusChanged(text); 7 }
wheelEvent()
1 /** 2 * mouse wheel event. zooms in/out or scrolls when 3 * shift or ctrl is pressed. 4 */ 5 void QG_GraphicView::wheelEvent(QWheelEvent *e) {...}
\librecad\src\lib\gui
rs_graphicview
centerOffsetX()
1 /** 2 * Centers the drawing in x-direction. 3 */ 4 void RS_GraphicView::centerOffsetX() { 5 if (container && !zoomFrozen) { 6 offsetX = (int)(((getWidth()-borderLeft-borderRight) 7 - (container->getSize().x*factor.x))/2.0 8 - (container->getMin().x*factor.x)) + borderLeft; 9 } 10 }
zoomScroll()
1 /** 2 * Scrolls in the given direction. 3 */ 4 void RS_GraphicView::zoomScroll(RS2::Direction direction) { 5 switch (direction) { 6 case RS2::Up: 7 offsetY-=50; 8 break; 9 case RS2::Down: 10 offsetY+=50; 11 break; 12 case RS2::Right: 13 offsetX+=50; 14 break; 15 case RS2::Left: 16 offsetX-=50; 17 break; 18 } 19 adjustOffsetControls(); 20 adjustZoomControls(); 21 // updateGrid(); 22 23 redraw(); 24 }
\librecad\src\actions
rs_actiondrawline()
<QCursor>
The QCursor class provides a mouse cursor with an arbitrary shape
<QDockWidget>
The QDockWidget class provides a widget that can be docked inside a QMainWindow or floated as a top-level window on the desktop
參考:
https://blog.csdn.net/Caoyang_He/article/details/80343945