public override void ReadExternal(IMemento memento, ExternalizeContext context) { base.ReadExternal(memento, context); _font = (FontDescription)memento.ReadSerializable("Font"); _fontColor = (Color)memento.ReadSerializable("FontColor"); _foreground = (Color)memento.ReadSerializable("Foreground"); _background = (IBrushDescription)memento.ReadSerializable("Background"); _isForegroundEnabled = memento.ReadBool("IsForegroundEnabled"); _isBackgroundEnabled = memento.ReadBool("IsBackgroundEnabled"); _borderWidth = memento.ReadInt("BorderWidth"); _borderDashStyle = (DashStyle)memento.ReadSerializable("BorderDashStyle"); _minSize = (Size)memento.ReadSerializable("MinSize"); _maxSize = (Size)memento.ReadSerializable("MaxSize"); _autoSize = (AutoSizeKinds)memento.ReadSerializable("AutoSize"); _padding = (Insets)memento.ReadSerializable("Padding"); _selectionBorderColor = (Color)memento.ReadSerializable("SelectionBorderColor"); _selectionBrush = (IBrushDescription)memento.ReadSerializable("SelectionBrush"); StyledText = (StyledText)memento.ReadSerializable("StyledText"); _text = memento.ReadString("Text"); _textHorizontalAlignment = (DataType::HorizontalAlignment)memento.ReadSerializable("TextHorizontalAlignment"); _textVerticalAlignment = (VerticalAlignment)memento.ReadSerializable("TextVerticalAlignment"); }
private bool _showBlockBreak = false; /// transient // ======================================== // constructor // ======================================== public AbstractNode() : base() { _font = SystemFontDescriptions.DefaultFont; _fontColor = FigureConsts.WindowTextColor; _foreground = FigureConsts.WindowTextColor; _background = FigureConsts.WindowBrush; _isForegroundEnabled = true; _isBackgroundEnabled = true; _borderWidth = 1; _borderDashStyle = DashStyle.Solid; _minSize = new Size(4, 4); _maxSize = new Size(int.MaxValue, int.MaxValue); _autoSize = AutoSizeKinds.None; _padding = new Insets(2); _text = string.Empty; _textSizeCache = Size.Empty; _textHorizontalAlignment = DataType::HorizontalAlignment.Left; _textVerticalAlignment = VerticalAlignment.Top; _styledText = null; _selectionBorderColor = FigureConsts.HighlightColor; _selectionBrush = FigureConsts.HighlightBrush; _fontCache = new FontCache(); _updateStyledTextDepth = 0; _ResourceCache.RegisterResourceCreator( FontResourceKey, () => _font.CreateFont(), ResourceDisposingPolicy.Explicit ); _ResourceCache.RegisterResourceCreator( PenResourceKey, () => { var ret = new Pen(_foreground, _borderWidth); ret.DashStyle = _borderDashStyle; return(ret); }, ResourceDisposingPolicy.Immediate ); _ResourceCache.RegisterResourceCreator( BrushResourceKey, () => _background == null? null: _background.CreateBrush(Bounds), ResourceDisposingPolicy.Immediate ); _ResourceCache.RegisterResourceCreator( SelectionPenResourceKey, () => new Pen(_selectionBorderColor), ResourceDisposingPolicy.Immediate ); _ResourceCache.RegisterResourceCreator( SelectionBrushResourceKey, () => _selectionBrush.CreateBrush(Bounds), ResourceDisposingPolicy.Immediate ); }