クラス構成

全体図

主要な部分のクラス図を下記に示します。

../../_images/classes.png

WPF の MVVM Framework としての機能を担う部分と、OpenGLビューとしての機能を担う部分があり、それらを MoNo.Wpf.ApplicationContext が統合しています。

更にそれらを継承・拡張して、MoNo.RAIL としての標準的な機能を載せた MoNo.Studio パッケージが用意されています。

MVVM Framework

class description
MoNo.ContRunner 継続モナドを実行するクラス。 Cont(継続)モナド 参照。
MoNo.Wpf.Messenger View Model から View へメッセージを送る通信機構。 Messenger 参照。
MoNo.Wpf.MessengerContext ContRunner に Messenger 機能を追加したもの。

詳しくは WPF/MVVM Framework として使う を参照してください。

OpenGL ビュー

class description
MoNo.OpenGL.GLControl OpenGL 描画ができる最小限の Forms コントロール。 MoNo.OpenGL.GLControl 参照。
MoNo.Graphics.GLViewControl GLControl にカメラ(投影行列、モデルビュー行列)やシーングラフ、ビュー操作などの機能を追加した Forms コントロール。 MoNo.Graphics.GLViewControl 参照。
MoNo.Wpf.SceneGraph XAML に埋め込んで Data Binding が可能なシーングラフ。
MoNo.Wpf.GLViewport GLViewControl をラップして WPF コントロールにしたもの。
MoNo.Wpf.ISceneGraphContext GLViewport に設定された DataContext がこのインターフェイスを実装している場合、GLViewport の SceneGraph が ISceneGraphContext に設定される。

詳しくは OpenGL ビューとして使う を参照してください。

統合

MVVM Framework の機能と OpenGL ビューの機能が ApplicationContext クラスによって統合されます。 このクラスは MessengerContext を継承し、ビューやシーングラフ、マウスオペレーションの機能を追加します。

MoNo.Studio

StudioAppContext

  • 中心にいるのはこのクラス。
  • アプリケーション側でこれを継承してメインの ViewModel クラスを作成する。
  • このクラスを介して IViewContextSceneGraph にアクセスしたり、コマンド定義のための様々なヘルパー機能を利用したりすることができる。
    • メッセージボックスを出したり
    • WPFのコマンドオブジェクトを作成したり
    • ByAsync() で非同期処理の Cont を生成したり
  • このクラスにはビュー関係のコマンドが幾つか定義されているので、必要に応じてビューとバインドして利用することが出来る。

StudioAppModelBase + StudioAppContext<'app>

  • ネイティブのファイル形式を持つアプリケーション開発に便利な機能を載せたもの。
  • StudioAppModelBase には OpenSave といったネイティブ形式のための関数が定義されている。
  • StandardTemplate で利用されている。