Skip to content

Latest commit

 

History

History
154 lines (131 loc) · 3.42 KB

附录三前期项目架构伪代码.md

File metadata and controls

154 lines (131 loc) · 3.42 KB

Interface segmentation Interface state machine

功能描述

  1. 开始界面
    • 新建2d(3d项目)
      • NewProject2D()
    • 打开已有项目
      • OpenProject()
  2. 主界面
    • 最上方选项框
      • file[save|ctrl+s export open]
      • help[about]
    • 工具选项窗口
      • Move
      • Point[OrdinaryPoint MiddlePoint]
      • Line[OrdinaryLine LineSegment]
      • Polygon[OrdinaryPolygon RegularPolygon]
      • Circle[CenterAndPointCircle ThreePointCircle]
    • 编辑窗口
      • 图形符号+图形参数+delete选项
      • 最下方有添加选项,可以在新的窗口中输入一个方程
    • 显示窗口 显示所有图形,可以移动,在左下角放缩

注意

暂时不对方程曲线对象处理

项目架构

分为前端和后端

main.c

  • 初始化图形库,调整状态为开始界面
  • FRONT_Display()

前端头文件 FRONT.h

前端 FRONT.c

说明

  • #include "FRONT.h"

常量

  • 主界面大小,开始界面大小
  • 工具模式ID
  • 界面模式ID

变量

  • 选中的对象id链表
  • 显示窗口位移缩放设置
  • 目前界面模式
  • 目前工具模式

FRONT_Dispaly()

  • 如果开始界面(ID=1)

    • DisplayClear()
    • 绘制相关图形并对相关事件进行处理
  • 如果2d主界面(ID=2) DisplayClear()

    • 从后端获得图形链表
    • 根据图形链表选中的对象id链表绘制显示窗口
    • 根据图形链表绘制编辑窗口
      • 如果DeleteButton被点击
        • 调用后端相关函数
    • 通过simpleGUI绘制工具选项窗口
      • 如果发生选择
        • 设置工具模式
    • 通过simpleGUI绘制最上方选项框
  • 如果询问界面(ID=3)

  • 如果警告界面(ID=4)

  • 如果3d主界面

事件触发

  • TimerEventProcess
  • MouseEventProcess
    • 如果2d主界面
      • 如果在显示窗口选择某点
        • 根据目前工具模式选中的对象链表调用相关后端函数
        • display()
  • KeyboardEventProcess
  • CharEventProcess

后端 BACK.c

变量

  • id基准

BACK.h

2D数据及处理函数

  1. 图形链表,每一个节点指向一个图形对象
    • 普通图形对象 有classId id name 相关参数 方程
      • OrdinaryPoint
    • 由别的图形对象生成的图形对象,用id代指别的图形对象
      • MiddlePoint
      • OrdinaryLine LineSegment
      • OrdinaryPolygon RegularPolygon
      • CenterAndPointCircle ThreePointCircle
    • 方程曲线对象,内含方程,以及一些解,可以用这些解生成其他解

保存数据类型(例子)

{
    "idBase": 15,
    "GeobjList": [
        {
            "classId": 1,
            "id": 3,
            "name": "opad_f",
            "Geobj": {
                "x": 1.33,
                "y": 34.45
            }
        },
        {
            "classId": 2,
            "id": 4,
            "name": "opadwef_f",
            "Geobj": {
                "baseIdList": [
                    1,3,4
                ]
            }
        }
    ]
}

文件

Headers

  • FRONT.h
  • BACK.h

SourceFiles

  • main.c
  • FRONT.c
  • BACK.c