/// <summary> /// Converts FB2 Paragraph to EPUB paragraph /// </summary> /// <param name="paragraphItem">item to convert</param> /// <param name="paragraphConverterParams"></param> /// <returns></returns> public HTMLItem Convert(ParagraphItem paragraphItem,ParagraphConverterParamsV2 paragraphConverterParams) { if (paragraphItem == null) { throw new ArgumentNullException("paragraphItem"); } var paragraph = CreateBlock(paragraphConverterParams.ResultType); bool needToInsertDrop = paragraphConverterParams.Settings.CapitalDrop && paragraphConverterParams.StartSection; foreach (var item in paragraphItem.ParagraphData) { if (item is SimpleText) { var textConverter = new SimpleTextElementConverterV2(); foreach (var s in textConverter.Convert(item, new SimpleTextElementConverterParamsV2 { Settings = paragraphConverterParams.Settings, NeedToInsertDrop = needToInsertDrop})) { if (needToInsertDrop) { needToInsertDrop = false; SetClassType(paragraph, ElementStylesV2.CapitalDrop); } paragraph.Add(s); } } else if (item is InlineImageItem) { // if no image data - do not insert link if (paragraphConverterParams.Settings.Images.HasRealImages()) { var inlineItem = item as InlineImageItem; if (paragraphConverterParams.Settings.Images.IsImageIdReal(inlineItem.HRef)) { var inlineImageConverter = new InlineImageConverterV2(); paragraph.Add(inlineImageConverter.Convert(inlineItem,new InlineImageConverterParamsV2{ Settings = paragraphConverterParams.Settings })); paragraphConverterParams.Settings.Images.ImageIdUsed(inlineItem.HRef); } if (needToInsertDrop) // in case this is "drop" image - no need to create a drop { needToInsertDrop = false; } } } else if (item is InternalLinkItem) { var internalLinkConverter = new InternalLinkConverterV2(); foreach (var s in internalLinkConverter.Convert(item as InternalLinkItem, new InternalLinkConverterParamsV2{ Settings = paragraphConverterParams.Settings, NeedToInsertDrop = needToInsertDrop})) { if (needToInsertDrop) { needToInsertDrop = false; SetClassType(paragraph, ElementStylesV2.CapitalDrop); } paragraph.Add(s); } } } //SetClassType(paragraph); paragraph.GlobalAttributes.ID.Value = paragraphConverterParams.Settings.ReferencesManager.AddIdUsed(paragraphItem.ID, paragraph); return paragraph; }
/// <summary> /// Converts FB2 Paragraph to EPUB paragraph /// </summary> /// <param name="paragraphItem">item to convert</param> /// <param name="paragraphConverterParams"></param> /// <returns></returns> public HTMLItem Convert(ParagraphItem paragraphItem, ParagraphConverterParamsV2 paragraphConverterParams) { if (paragraphItem == null) { throw new ArgumentNullException("paragraphItem"); } var paragraph = CreateBlock(paragraphConverterParams.ResultType); bool needToInsertDrop = paragraphConverterParams.Settings.CapitalDrop && paragraphConverterParams.StartSection; foreach (var item in paragraphItem.ParagraphData) { if (item is SimpleText) { var textConverter = new SimpleTextElementConverterV2(); foreach (var s in textConverter.Convert(item, new SimpleTextElementConverterParamsV2 { Settings = paragraphConverterParams.Settings, NeedToInsertDrop = needToInsertDrop })) { if (needToInsertDrop) { needToInsertDrop = false; SetClassType(paragraph, ElementStylesV2.CapitalDrop); } paragraph.Add(s); } } else if (item is InlineImageItem) { // if no image data - do not insert link if (paragraphConverterParams.Settings.Images.HasRealImages()) { var inlineItem = item as InlineImageItem; if (paragraphConverterParams.Settings.Images.IsImageIdReal(inlineItem.HRef)) { var inlineImageConverter = new InlineImageConverterV2(); paragraph.Add(inlineImageConverter.Convert(inlineItem, new InlineImageConverterParamsV2 { Settings = paragraphConverterParams.Settings })); paragraphConverterParams.Settings.Images.ImageIdUsed(inlineItem.HRef); } if (needToInsertDrop) // in case this is "drop" image - no need to create a drop { needToInsertDrop = false; } } } else if (item is InternalLinkItem) { var internalLinkConverter = new InternalLinkConverterV2(); foreach (var s in internalLinkConverter.Convert(item as InternalLinkItem, new InternalLinkConverterParamsV2 { Settings = paragraphConverterParams.Settings, NeedToInsertDrop = needToInsertDrop })) { if (needToInsertDrop) { needToInsertDrop = false; SetClassType(paragraph, ElementStylesV2.CapitalDrop); } paragraph.Add(s); } } } //SetClassType(paragraph); paragraph.GlobalAttributes.ID.Value = paragraphConverterParams.Settings.ReferencesManager.AddIdUsed(paragraphItem.ID, paragraph); return(paragraph); }