クラス構成¶
全体図¶
主要な部分のクラス図を下記に示します。
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 クラスを作成する。
- このクラスを介して IViewContext や SceneGraph にアクセスしたり、コマンド定義のための様々なヘルパー機能を利用したりすることができる。
- メッセージボックスを出したり
- WPFのコマンドオブジェクトを作成したり
- ByAsync() で非同期処理の Cont を生成したり
- このクラスにはビュー関係のコマンドが幾つか定義されているので、必要に応じてビューとバインドして利用することが出来る。
StudioAppModelBase
+ StudioAppContext<'app>
¶
- ネイティブのファイル形式を持つアプリケーション開発に便利な機能を載せたもの。
- StudioAppModelBase には Open は Save といったネイティブ形式のための関数が定義されている。
- StandardTemplate で利用されている。