==================================================== クラス構成 ==================================================== 全体図 ==================================================== 主要な部分のクラス図を下記に示します。 .. image:: classes.png WPF の MVVM Framework としての機能を担う部分と、OpenGLビューとしての機能を担う部分があり、それらを ``MoNo.Wpf.ApplicationContext`` が統合しています。 更にそれらを継承・拡張して、MoNo.RAIL としての標準的な機能を載せた MoNo.Studio パッケージが用意されています。 MVVM Framework ==================================================== .. list-table:: :widths: 20 80 :header-rows: 1 * - class - description * - MoNo.ContRunner - 継続モナドを実行するクラス。 :doc:`../wpf/cont` 参照。 * - MoNo.Wpf.Messenger - View Model から View へメッセージを送る通信機構。 :doc:`../wpf/messenger` 参照。 * - MoNo.Wpf.MessengerContext - ContRunner に Messenger 機能を追加したもの。 詳しくは :doc:`../wpf/index` を参照してください。 OpenGL ビュー ==================================================== .. list-table:: :widths: 20 80 :header-rows: 1 * - class - description * - MoNo.OpenGL.GLControl - OpenGL 描画ができる最小限の Forms コントロール。 :doc:`../opengl/glcontrol` 参照。 * - MoNo.Graphics.GLViewControl - GLControl にカメラ(投影行列、モデルビュー行列)やシーングラフ、ビュー操作などの機能を追加した Forms コントロール。 :doc:`../opengl/scene` 参照。 * - MoNo.Wpf.SceneGraph - XAML に埋め込んで Data Binding が可能なシーングラフ。 * - MoNo.Wpf.GLViewport - GLViewControl をラップして WPF コントロールにしたもの。 * - MoNo.Wpf.ISceneGraphContext - GLViewport に設定された DataContext がこのインターフェイスを実装している場合、GLViewport の SceneGraph が ISceneGraphContext に設定される。 詳しくは :doc:`../opengl/index` を参照してください。 統合 ==================================================== MVVM Framework の機能と OpenGL ビューの機能が ApplicationContext クラスによって統合されます。 このクラスは MessengerContext を継承し、ビューやシーングラフ、マウスオペレーションの機能を追加します。 MoNo.Studio ==================================================== ``StudioAppContext`` --------------------------------------- - 中心にいるのはこのクラス。 - アプリケーション側でこれを継承してメインの ViewModel クラスを作成する。 - このクラスを介して `IViewContext` や `SceneGraph` にアクセスしたり、コマンド定義のための様々なヘルパー機能を利用したりすることができる。 - メッセージボックスを出したり - WPFのコマンドオブジェクトを作成したり - ByAsync() で非同期処理の Cont を生成したり - このクラスにはビュー関係のコマンドが幾つか定義されているので、必要に応じてビューとバインドして利用することが出来る。 ``StudioAppModelBase`` + ``StudioAppContext<'app>`` ----------------------------------------------------------------- - ネイティブのファイル形式を持つアプリケーション開発に便利な機能を載せたもの。 - `StudioAppModelBase` には `Open` は `Save` といったネイティブ形式のための関数が定義されている。 - StandardTemplate で利用されている。