public static void CreateFontFamilyChange(FontChangeType fontChange, IProjectFont projectFont, IDocumentContext documentContext, out FontFamily oldFontFamily, out FontFamily newFontFamily) { switch (fontChange) { case FontChangeType.SystemToEmbedded: newFontFamily = FontEmbedder.MakeRelativeFontFamily(projectFont, documentContext, true); oldFontFamily = FontEmbedder.MakeSystemFont(newFontFamily); break; case FontChangeType.EmbeddedToSystem: oldFontFamily = FontEmbedder.MakeRelativeFontFamily(projectFont, documentContext, true); newFontFamily = FontEmbedder.MakeSystemFont(oldFontFamily); break; case FontChangeType.ProjectToEmbedded: oldFontFamily = FontEmbedder.MakeRelativeFontFamily(projectFont, documentContext, false); newFontFamily = FontEmbedder.MakeRelativeFontFamily(projectFont, documentContext, true); break; case FontChangeType.EmbeddedToProject: oldFontFamily = FontEmbedder.MakeRelativeFontFamily(projectFont, documentContext, true); newFontFamily = FontEmbedder.MakeRelativeFontFamily(projectFont, documentContext, false); break; default: oldFontFamily = newFontFamily = (FontFamily)null; break; } }
private void ChangeFontReference(FontChangeType fontChange, IProjectFont projectFont) { FontFamily oldFontFamily; FontFamily newFontFamily; FontEmbedder.CreateFontFamilyChange(fontChange, projectFont, this.viewModel.Document.DocumentContext, out oldFontFamily, out newFontFamily); if (!(oldFontFamily.Source != newFontFamily.Source)) { return; } SceneElement sceneElement = this.viewModel.RootNode as SceneElement; if (sceneElement == null) { return; } FontFamilyRepairProcessor familyRepairProcessor = new FontFamilyRepairProcessor(this.viewModel.DesignerContext, new FontFamilyChangeModel(oldFontFamily.Source, newFontFamily.Source, fontChange, projectFont, sceneElement.DocumentNode.DocumentRoot, this.viewModel.ProjectContext)); using (SceneEditTransaction editTransaction = this.viewModel.CreateEditTransaction(StringTable.EmbedFontUndoUnit)) { familyRepairProcessor.Begin(); if (familyRepairProcessor.Cancelled) { editTransaction.Cancel(); } else { editTransaction.Commit(); } } }
public FontFamilyChangeModel(string oldFontFamilyName, string newFontFamilyName, FontChangeType fontChangeType, IProjectFont projectFont, IDocumentRoot documentRoot, IProjectContext projectContext) : base(oldFontFamilyName, newFontFamilyName, documentRoot, projectContext) { this.fontFamilyRepairers = new List <ReferenceRepairer>(); this.fontFamilyRepairers.Add((ReferenceRepairer) new FontFamilyReferenceRepairer(this)); this.FontChangeType = fontChangeType; this.ProjectFont = projectFont; }