public void SetText(IVisio.Shape shape) { if (shape == null) { throw new System.ArgumentNullException("shape"); } // First just set all the text string full_doc_inner_text = this.GetInnerText(); shape.Text = full_doc_inner_text; // Find all the regions needing formatting var markupinfo = this.GetMarkupInfo(); var regions_to_format = markupinfo.FormatRegions.Where(region => region.Length >= 1).ToList(); var default_chars_bias = IVisio.VisCharsBias.visBiasLeft; var update = new VA.ShapeSheet.Update(); foreach (var region in regions_to_format) { // Apply character formatting var charcells = region.Element.CharacterCells; if (charcells != null) { var chars = shape.Characters; chars.Begin = region.Start; chars.End = region.End; chars.CharProps[VA.ShapeSheet.SRCConstants.CharColor.Cell] = 0; short rownum = chars.CharPropsRow[(short) default_chars_bias]; if (rownum < 0) { throw new VA.AutomationException("Could not create Character row"); } update.Clear(); charcells.ApplyFormulas(update, rownum); update.Execute(shape); } // Apply paragraph formatting var paracells = region.Element.ParagraphCells; if (paracells != null) { var chars = shape.Characters; chars.Begin = region.Start; chars.End = region.End; chars.ParaProps[VA.ShapeSheet.SRCConstants.Para_Bullet.Cell] = 0; short rownum = chars.ParaPropsRow[(short) default_chars_bias]; if (rownum < 0) { throw new VA.AutomationException("Could not create Paragraph row"); } update.Clear(); paracells.ApplyFormulas(update, rownum); update.Execute(shape); } } // Insert the fields // note: Fields are added in reverse because it is simpler to keep track of the insertion positions foreach (var field_region in markupinfo.FieldRegions.Where(region => region.Length >= 1).Reverse()) { var chars = shape.Characters; chars.Begin = field_region.Start; chars.End = field_region.End; chars.AddField((short) field_region.Field.Category, (short) field_region.Field.Code, (short) field_region.Field.Format); var fr = field_region; } }
public void SetText(IVisio.Shape shape) { if (shape == null) { throw new System.ArgumentNullException("shape"); } // First just set all the text string full_doc_inner_text = this.GetInnerText(); shape.Text = full_doc_inner_text; // Find all the regions needing formatting var markupinfo = this.GetMarkupInfo(); var regions_to_format = markupinfo.FormatRegions.Where(region => region.Length >= 1).ToList(); var default_chars_bias = IVisio.VisCharsBias.visBiasLeft; var update = new VA.ShapeSheet.Update(); foreach (var region in regions_to_format) { // Apply character formatting var charcells = region.Element.CharacterCells; if (charcells != null) { var chars = shape.Characters; chars.Begin = region.Start; chars.End = region.End; chars.CharProps[VA.ShapeSheet.SRCConstants.CharColor.Cell] = 0; short rownum = chars.CharPropsRow[(short)default_chars_bias]; if (rownum < 0) { throw new VA.AutomationException("Could not create Character row"); } update.Clear(); charcells.ApplyFormulas(update, rownum); update.Execute(shape); } // Apply paragraph formatting var paracells = region.Element.ParagraphCells; if (paracells != null) { var chars = shape.Characters; chars.Begin = region.Start; chars.End = region.End; chars.ParaProps[VA.ShapeSheet.SRCConstants.Para_Bullet.Cell] = 0; short rownum = chars.ParaPropsRow[(short)default_chars_bias]; if (rownum < 0) { throw new VA.AutomationException("Could not create Paragraph row"); } update.Clear(); paracells.ApplyFormulas(update, rownum); update.Execute(shape); } } // Insert the fields // note: Fields are added in reverse because it is simpler to keep track of the insertion positions foreach (var field_region in markupinfo.FieldRegions.Where(region => region.Length >= 1).Reverse()) { var chars = shape.Characters; chars.Begin = field_region.Start; chars.End = field_region.End; chars.AddField((short)field_region.Field.Category, (short)field_region.Field.Code, (short)field_region.Field.Format); var fr = field_region; } }