网站的seo优化报告西安有几家做网站
2026/1/3 15:03:40 网站建设 项目流程
网站的seo优化报告,西安有几家做网站,百度宁波营销中心,江门市新会区第一个文件#xff1a;LC_UndoableRelZero.h (头文件) 文件说明 这是 LibreCAD 中实现可撤销相对零点操作的类声明头文件#xff0c;用于管理图形视口中相对零点的移动操作。 代码结构分析 1. 类定义 #ifndef LC_UNDOABLERELZERO_H #define LC_UNDOABLERELZERO_H标准的头文件…第一个文件LC_UndoableRelZero.h (头文件)文件说明这是 LibreCAD 中实现可撤销相对零点操作的类声明头文件用于管理图形视口中相对零点的移动操作。代码结构分析1. 类定义#ifndefLC_UNDOABLERELZERO_H#defineLC_UNDOABLERELZERO_H标准的头文件保护宏防止重复包含2. 类声明classLC_UndoableRelZero:publicRS_Undoable继承自RS_Undoable基类表明这是一个可撤销操作用于封装相对零点的移动操作3. 成员变量private:LC_GraphicViewport*viewportnullptr;RS_Vector m_FromRS_Vector(0,0,0);// 移动前的坐标RS_Vector m_ToRS_Vector(0,0,0);// 移动后的坐标viewport: 指向图形视口的指针m_From: 记录相对零点移动前的三维坐标 (x,y,z)m_To: 记录相对零点移动后的三维坐标4. 关键方法voidundoStateChanged(boolundone)override;重写基类的虚函数当撤销/重做状态改变时被调用undone参数表示操作是否被撤销第二个文件LC_UndoSecti​​on.cpp (源文件)文件说明这是 LibreCAD 中撤销操作区域管理类的实现文件用于批量管理一组撤销操作。代码结构分析1. 构造函数LC_UndoSection::LC_UndoSection(RS_Document*doc,LC_GraphicViewport*view,constboolhandleUndo/* true*/):document(doc),viewport(view),valid(handleUndonullptr!docnullptr!view){if(valid){document-startUndoCycle();}}功能初始化撤销操作区域参数说明doc: 文档指针view: 图形视口指针handleUndo: 是否处理撤销操作默认为 true验证条件文档和视口都不为空且handleUndo为 true如果有效开始一个撤销周期2. 析构函数LC_UndoSection::~LC_UndoSection(){try{if(validviewport!nullptr){RS_Undoable*relativeZeroUndoableviewport-getRelativeZeroUndoable();if(relativeZeroUndoable!nullptr){document-addUndoable(relativeZeroUndoable);}document-endUndoCycle();}}catch(...){}}功能对象销毁时自动调用关键操作流程检查区域是否有效且视口存在获取视口中的相对零点可撤销操作如果有相关操作添加到文档的撤销列表中结束撤销周期使用 try-catch 捕获所有异常确保资源清理3. 添加撤销操作的方法voidLC_UndoSection::addUndoable(RS_Undoable*undoable){if(valid){document-addUndoable(undoable);}}功能向当前撤销区域添加可撤销操作仅当区域有效时才执行添加参数undoable可以是任何继承自RS_Undoable的对象两个类的关系和工作流程协同工作模式用户操作相对零点 ↓ LC_UndoableRelZero 记录移动信息 ↓ LC_UndoSection 开始撤销周期 ↓ 执行其他相关操作 ↓ LC_UndoSection 析构时 1. 获取相对零点操作 2. 添加到文档撤销列表 3. 结束撤销周期关键设计特点RAII 模式(资源获取即初始化)LC_UndoSection在构造时开始撤销周期在析构时自动结束周期并清理资源异常安全设计职责分离LC_UndoableRelZero: 封装具体的操作数据LC_UndoSection: 管理撤销操作的执行流程灵活扩展通过addUndoable()可以添加各种类型的撤销操作基类设计支持多态使用场景示例当用户在 LibreCAD 中执行一个包含多个步骤的复杂操作时// 开始一个撤销区域LC_UndoSectionundoSection(document,viewport);// 执行操作1performOperation1();undoSection.addUndoable(operation1Undoable);// 执行操作2包括相对零点移动moveRelativeZero(from,to);// LC_UndoableRelZero 会自动记录// 执行操作3performOperation3();undoSection.addUndoable(operation3Undoable);// undoSection 析构时所有操作被作为一个整体添加到撤销列表这样设计的好处是用户可以一次性撤销整个操作序列而不是逐个撤销每个小步骤。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询