private void Init() { DeleteAllChildren(); phase = LifetimePhase.Generating; TextLayer.InitVisualLine(this); }
internal void Dispose() { if (_phase == LifetimePhase.Disposed) { return; } Debug.Assert(_phase == LifetimePhase.Live); _phase = LifetimePhase.Disposed; }
internal void RunTransformers(VisualLine line, IVisualLineTransformer[] transformers) { Debug.Assert(phase == LifetimePhase.Transforming); foreach (IVisualLineTransformer transformer in transformers) { transformer.Transform(line, elements); } phase = LifetimePhase.Live; }
internal void RunTransformers(ITextRunConstructionContext context, IVisualLineTransformer[] transformers) { Debug.Assert(_phase == LifetimePhase.Transforming); foreach (var transformer in transformers) { transformer.Transform(context, _elements); } _phase = LifetimePhase.Live; }
internal void Dispose() { if (phase == LifetimePhase.Disposed) { return; } Debug.Assert(phase == LifetimePhase.Live); phase = LifetimePhase.Disposed; foreach (TextLine textLine in TextLines) { textLine.Dispose(); } }
internal void ConstructVisualElements(VisualLineElementGenerator[] generators) { Debug.Assert(phase == LifetimePhase.Generating); foreach (VisualLineElementGenerator g in generators) { g.StartGeneration(this); } elements.Clear(); PerformVisualElementConstruction(generators); foreach (VisualLineElementGenerator g in generators) { g.FinishGeneration(); } phase = LifetimePhase.Transforming; }
internal void RunTransformers(ITextRunConstructionContext context, IVisualLineTransformer[] transformers) { Debug.Assert(phase == LifetimePhase.Transforming); foreach (IVisualLineTransformer transformer in transformers) { transformer.Transform(context, elements); } // For some strange reason, WPF requires that either all or none of the typography properties are set. if (elements.Any(e => e.TextRunProperties.TypographyProperties != null)) { // Fix typographic properties foreach (VisualLineElement element in elements) { if (element.TextRunProperties.TypographyProperties == null) { element.TextRunProperties.SetTypographyProperties(new DefaultTextRunTypographyProperties()); } } } phase = LifetimePhase.Live; }
internal void ConstructVisualElements(ITextRunConstructionContext context, VisualLineElementGenerator[] generators) { Debug.Assert(phase == LifetimePhase.Generating); foreach (VisualLineElementGenerator g in generators) { g.StartGeneration(context); } elements = new List <VisualLineElement>(); PerformVisualElementConstruction(generators); foreach (VisualLineElementGenerator g in generators) { g.FinishGeneration(); } var globalTextRunProperties = context.GlobalTextRunProperties; foreach (var element in elements) { element.SetTextRunProperties(new VisualLineElementTextRunProperties(globalTextRunProperties)); } this.Elements = elements.AsReadOnly(); CalculateOffsets(); phase = LifetimePhase.Transforming; }
internal void ConstructVisualElements(ITextRunConstructionContext context, VisualLineElementGenerator[] generators) { Debug.Assert(_phase == LifetimePhase.Generating); foreach (var g in generators) { g.StartGeneration(context); } _elements = new List <VisualLineElement>(); PerformVisualElementConstruction(generators); foreach (var g in generators) { g.FinishGeneration(); } var globalTextRunProperties = context.GlobalTextRunProperties; foreach (var element in _elements) { element.SetTextRunProperties(globalTextRunProperties.Clone()); } Elements = new ReadOnlyCollection <VisualLineElement>(_elements); CalculateOffsets(); _phase = LifetimePhase.Transforming; }
internal void Dispose() { if (phase == LifetimePhase.Disposed) return; Debug.Assert(phase == LifetimePhase.Live); phase = LifetimePhase.Disposed; foreach (TextLine textLine in TextLines) { textLine.Dispose(); } }
internal void ConstructVisualElements(ITextRunConstructionContext context, VisualLineElementGenerator[] generators) { Debug.Assert(phase == LifetimePhase.Generating); foreach (VisualLineElementGenerator g in generators) { g.StartGeneration(context); } elements = new List<VisualLineElement>(); PerformVisualElementConstruction(generators); foreach (VisualLineElementGenerator g in generators) { g.FinishGeneration(); } var globalTextRunProperties = context.GlobalTextRunProperties; foreach (var element in elements) { element.SetTextRunProperties(new VisualLineElementTextRunProperties(globalTextRunProperties)); } this.Elements = elements.AsReadOnly(); CalculateOffsets(); phase = LifetimePhase.Transforming; }