private IResult SetIlluminationEffect(XlsxIlluminationShapeEffect illumination) { if (illumination.Show == YesNo.No) { return BooleanResult.SuccessResult; } var root = XmlWriter.GetXmlNode(XmlChartHelper.ChartSpaceRootNode); if (root == null) { return BooleanResult.SuccessResult; } try { var exist = XmlWriter.TryGetElementFrom(root, "c:spPr", out var shapePropertiesNode); shapePropertiesNode.AddEffectContainerNode(illumination, XmlWriter); if (!exist) { root.AppendChild(shapePropertiesNode); } return BooleanResult.SuccessResult; } catch (Exception e) { return BooleanResult.FromException(e); } }
private IResult SetIlluminationEffect(XlsxIlluminationShapeEffect illumination, string pictureName) { if (illumination.Show == YesNo.No) { return(BooleanResult.SuccessResult); } var pictureNode = XmlWriter.GetXmlNode($"xdr:wsDr/xdr:twoCellAnchor/xdr:pic/xdr:nvPicPr/xdr:cNvPr[@name='{pictureName}']"); var root = pictureNode?.ParentNode?.ParentNode; if (root == null) { return(BooleanResult.SuccessResult); } try { var exist = XmlWriter.TryGetElementFrom(root, "xdr:spPr", out var shapePropertiesNode); shapePropertiesNode.AddEffectContainerNode(illumination, XmlWriter); if (!exist) { root.AppendChild(shapePropertiesNode); } return(BooleanResult.SuccessResult); } catch (Exception e) { return(BooleanResult.FromException(e)); } }
/// <summary> /// Adds a <b>glow</b> node to the nodes of type <b>effectLst</b> specified. Not supported in <b>EPPlus</b> library. /// </summary> /// <param name="effectLstNode"><b>outerShdw</b> node (glow).</param> /// <param name="illumination">Illumination from model.</param> /// <param name="documentHelper">Target xml document helper.</param> /// <remarks> /// For more information please see <a href="http://www.schemacentral.com/sc/ooxml/e-a_scrgbClr-1.html">http://www.schemacentral.com/sc/ooxml/e-a_scrgbClr-1.html</a> /// </remarks> private static void AddGlowNode(this XmlNode effectLstNode, XlsxIlluminationShapeEffect illumination, IXmlHelper documentHelper) { var radAttr = documentHelper.CreateAttribute("rad"); radAttr.Value = $"{illumination.Size * OfficeOpenXmlHelper.EMU_PER_POINT}"; var glowNode = documentHelper.CreateOrDefaultAndAppendElementToNode(effectLstNode, "a", "glow"); glowNode.Attributes?.Append(radAttr); var clrValAttr = documentHelper.CreateAttribute("val"); clrValAttr.Value = ColorHelper.ToHex(illumination.GetColor()).Replace("#", string.Empty); var rgbColorModelPercentageVariantNode = documentHelper.CreateOrDefaultAndAppendElementToNode(glowNode, "a", "srgbClr"); rgbColorModelPercentageVariantNode.Attributes?.Append(clrValAttr); var alphaValueAttr = documentHelper.CreateAttribute("val"); alphaValueAttr.Value = $"{(100 - illumination.Transparency) * OfficeOpenXmlHelper.ST_PERCENTAGE}"; var alphaNode = documentHelper.CreateOrDefaultAndAppendElementToNode(rgbColorModelPercentageVariantNode, "a", "alpha"); alphaNode.Attributes?.Append(alphaValueAttr); }
/// <summary> /// Adds an <b>effectLst</b> node (Effect Container) to the node of type <b>spPr</b> (Shape properties) specified. Not supported in <b>EPPlus</b> library. /// </summary> /// <param name="node"><c>spPr</c> node (Shape properties).</param> /// <param name="illumination">Illumination from model.</param> /// <param name="documentHelper">Target xml document helper.</param> /// <remarks> /// For more information please see <a href="http://www.schemacentral.com/sc/ooxml/e-a_effectLst-1.html">http://www.schemacentral.com/sc/ooxml/e-a_effectLst-1.html</a> /// </remarks> /// <exception cref="ArgumentNullException">If <paramref name="node"/> is <b>null</b>.</exception> /// <exception cref="ArgumentNullException">If <paramref name="illumination"/> is <b>null</b>.</exception> public static void AddEffectContainerNode(this XmlNode node, XlsxIlluminationShapeEffect illumination, IXmlHelper documentHelper) { SentinelHelper.ArgumentNull(node, nameof(node)); SentinelHelper.ArgumentNull(illumination, nameof(illumination)); var effectContainerNode = documentHelper.CreateOrDefaultAndAppendElementToNode(node, "a", "effectLst");; effectContainerNode.AddGlowNode(illumination, documentHelper); }