/// <summary> /// Initializes a new instance of the <see cref="TilingController" /> class. /// </summary> /// <param name="tiling">The tiling.</param> /// <param name="view">The view.</param> /// <exception cref="System.ArgumentNullException"> /// </exception> /// <exception cref="System.InvalidOperationException"></exception> public TilingController([NotNull] Tiling tiling, [NotNull] IView view) : base(view) { if (tiling == null) { throw new ArgumentNullException(nameof(tiling)); } _tiling = tiling; IResourceManager resourceManager = DependencyManger.GetResourceManager(StyleManager); _resourceManager = resourceManager; resourceManager.Add(SolidColourStyle.Transparent); resourceManager.Add(SolidColourStyle.White); resourceManager.Add(SolidColourStyle.Black); resourceManager.Add(SolidColourStyle.Gray); resourceManager.Add(SolidColourStyle.CornflowerBlue); resourceManager.Add(TransparentBlue); _tiles = _tiling.GetTiles(view.ViewBounds, Enumerable.Empty <TileBase>()); _styleManagerChangedHandler = _styleManager_Changed; StyleManager.StylesChanged += _styleManagerChangedHandler; Tools = new Tool[] { EditLine = new EditLineTool(this, _tolerance), SplitLine = new SplitLineTool(this, _tolerance) }; view.ViewBoundsChanged += View_ViewBoundsChanged; }
/// <summary> /// Sets the tiling. /// </summary> /// <param name="tiling">The tiling.</param> /// <exception cref="System.ArgumentNullException"></exception> /// <exception cref="System.InvalidOperationException"></exception> public void SetTiling([NotNull] Tiling tiling) { if (tiling == null) { throw new ArgumentNullException(nameof(tiling)); } if (tiling == _tiling) { return; } StyleManager oldStyleManager = StyleManager; Debug.Assert(oldStyleManager != null, "oldStyleManager != null"); oldStyleManager.StylesChanged -= _styleManagerChangedHandler; _tiling = tiling; StyleManager.StylesChanged += _styleManagerChangedHandler; IResourceManager resourceManager = DependencyManger.GetResourceManager(tiling.StyleManager); IResourceManager oldResourceManager = Interlocked.Exchange(ref _resourceManager, resourceManager); DependencyManger.ReleaseResourceManager(ref oldResourceManager, oldStyleManager); resourceManager.Add(SolidColourStyle.Transparent); resourceManager.Add(SolidColourStyle.White); resourceManager.Add(SolidColourStyle.Black); resourceManager.Add(SolidColourStyle.Gray); resourceManager.Add(SolidColourStyle.CornflowerBlue); resourceManager.Add(TransparentBlue); _tiles = _tiling.GetTiles(View.ViewBounds, Enumerable.Empty <TileBase>()); }
/// <summary> /// Releases unmanaged and - optionally - managed resources. /// </summary> /// <param name="disposing"> /// <see langword="true" /> to release both managed and unmanaged resources; /// <see langword="false" /> to release only unmanaged resources. /// </param> protected override void Dispose(bool disposing) { base.Dispose(disposing); if (disposing) { DependencyManger.ReleaseResourceManager(ref _resourceManager, null); } }
/// <summary> /// Releases unmanaged and - optionally - managed resources. /// </summary> /// <param name="disposing"> /// <see langword="true" /> to release both managed and unmanaged resources; /// <see langword="false" /> to release only unmanaged resources. /// </param> protected override void Dispose(bool disposing) { base.Dispose(disposing); if (disposing) { StyleManager.StylesChanged -= _styleManagerChangedHandler; DependencyManger.ReleaseResourceManager(ref _resourceManager, StyleManager); } }
/// <summary> /// Initializes a new instance of the <see cref="ShapeController" /> class. /// </summary> /// <param name="template">The template.</param> /// <param name="view">The view.</param> /// <exception cref="System.ArgumentNullException"></exception> /// <exception cref="System.InvalidOperationException"></exception> public ShapeController([NotNull] Template template, [NotNull] IView view) : base(view) { if (template == null) { throw new ArgumentNullException(nameof(template)); } _template = template; Shapes = template.CreateShapes(); IResourceManager resourceManager = DependencyManger.GetResourceManager(); if (resourceManager == null) { throw new InvalidOperationException(); } _resourceManager = resourceManager; }
public static void Main() { #if DEBUG SharpDX.Configuration.EnableObjectTracking = true; #endif DependencyManger.ForResourceManagerUse( sm => { RenderTargetContainer renderTargetContainer = DependencyManger.Get <RenderTargetContainer>(); Debug.Assert(renderTargetContainer != null, "renderTargetContainer != null"); DirectXResourceManager manager = new DirectXResourceManager(renderTargetContainer.RenderTarget, sm); renderTargetContainer.RenderTargetChanged += rt => manager.RenderTarget = rt; return(manager); }, DependencyCacheFlags.CachePerArgs | DependencyCacheFlags.DisposeOnRelease); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Main()); }
/// <summary> /// Initializes the graphics. /// </summary> private void InitializeGraphics() { DependencyManger.ForTypeUse(() => _renderControl.RenderTargetContainer, DependencyCacheFlags.CacheGlobal); _miskResourceManager = DependencyManger.GetResourceManager(); _miskResourceManager.Add(_whiteStyle); _miskResourceManager.Add(_grayStyle); _miskResourceManager.Add(_blackStyle); RenderTargetContainer renderTargetContainer = _renderControl.RenderTargetContainer; DirectXGraphics graphics = new DirectXGraphics( renderTargetContainer.RenderTarget, _miskResourceManager, _whiteStyle, _blackStyle, 1f); renderTargetContainer.RenderTargetChanged += rt => graphics.RenderTarget = rt; _directXGraphics = graphics; }