我知道编辑这个网站吗?

2011-09-29 - 显示框架变化

以下是来自 Curtis Rueden 的博客文章,最初发布在 ImageJDev 网站上。

以下是我在 ImageJ2 的显示层次结构上所做的一些工作的快速技术更新。其他 IJ2 开发人员对此最感兴趣,但我在这里发帖是为了让社区了解我们将如何处理显示代码大致情况。

今天我研究了如何重构显示层次结构以消除特定于 UI 的 SwingDatasetView 和 SwingOverlayView 类。它们提供的逻辑需要保留在代码库中的某个位置,但更改的动机是“DataView”最初被设想为与 UI 无关的数据对象显示设置包。例如,数据对象(例如数据集)的视图可以包含每个通道 LUT。与数据对象本身不同,它还跟踪 N 个空间中数据对象内部的当前位置。

这些构建特定于 Swing 的类构建实现需要输出 DataView 的插件变得更加容易,因为这样就可以以与 UI 无关的方式创建新的数据,并向系统添加任何可能复杂的 DataView 工厂逻辑。所有特定于 Swing 的逻辑都可以包装到 SwingImageDisplay 和相关帮助器类中。 SwingDatasetView 和 SwingOverlayView 的相关代码最终可能会出现在一个或多个 SwingDataDisplayLink 类或类似类中——我现在正在研究它,但希望在接下来的几天内实现一个解决方案。

作为此结构的一部分, Display.update() 方法将成为更新屏幕的主要功能,包括任何待处理的结构更改或需要进行的重建。 其次, Display 必须跟踪其组成数据对象何时/如何更改,在但调用 update() 之前不会自行更新。 这允许 API 用户执行添加多个数据对象之类的操作,而需要在每次添加时触发自动更新。

实现上述目标后,接下来的步骤是:

  1. 重新评估 DisplayPanel 和 DisplayWindow 适应层次结构 - 例如,当前委托给面板和/或窗口的显示逻辑存在一些不一致,反之亦然。需要在这些类之间有一个响亮的层次结构和执行流程,以及与它们相关的响亮的依赖层次结构。 2.从ImageDisplay代码中删除疑难多的数据集并覆盖特定逻辑,将其推广到数据接口级别。这项工作是为了添加CompositeData或DataList或类似的东西,它们将是多个数据对象的元组,从而允许许构建的数据树结构。这样的构造使我们能够像由图块组成的马赛克之类的东西进行建模,以及清楚地均匀哪些覆盖层属于哪些数据集等等。这个目标确实是个第三§4§§§的本质,但上述所有内容的其余部分也是齐头并进的。