public static void CalculateBounds(this IFigmaNodeContainer figmaNodeContainer) { if (figmaNodeContainer is IAbsoluteBoundingBox calculatedBounds) { calculatedBounds.absoluteBoundingBox = Rectangle.Zero; foreach (var item in figmaNodeContainer.children) { if (item is IAbsoluteBoundingBox itmBoundingBox) { calculatedBounds.absoluteBoundingBox.X = Math.Min(calculatedBounds.absoluteBoundingBox.X, itmBoundingBox.absoluteBoundingBox.X); calculatedBounds.absoluteBoundingBox.Y = Math.Min(calculatedBounds.absoluteBoundingBox.Y, itmBoundingBox.absoluteBoundingBox.Y); if (itmBoundingBox.absoluteBoundingBox.X + itmBoundingBox.absoluteBoundingBox.Width > calculatedBounds.absoluteBoundingBox.X + calculatedBounds.absoluteBoundingBox.Width) { calculatedBounds.absoluteBoundingBox.Width += (itmBoundingBox.absoluteBoundingBox.X + itmBoundingBox.absoluteBoundingBox.Width) - (calculatedBounds.absoluteBoundingBox.X + calculatedBounds.absoluteBoundingBox.Width); } if (itmBoundingBox.absoluteBoundingBox.Y + itmBoundingBox.absoluteBoundingBox.Height > calculatedBounds.absoluteBoundingBox.Y + calculatedBounds.absoluteBoundingBox.Height) { calculatedBounds.absoluteBoundingBox.Height += (itmBoundingBox.absoluteBoundingBox.Y + itmBoundingBox.absoluteBoundingBox.Height) - (calculatedBounds.absoluteBoundingBox.Y + calculatedBounds.absoluteBoundingBox.Height); } } } } }
public static void CalculateBounds(this IFigmaNodeContainer figmaNodeContainer) { if (figmaNodeContainer is IAbsoluteBoundingBox calculatedBounds) { calculatedBounds.absoluteBoundingBox = FigmaRectangle.Zero; foreach (var item in figmaNodeContainer.children) { if (item is IAbsoluteBoundingBox itmBoundingBox) { calculatedBounds.absoluteBoundingBox.x = Math.Min(calculatedBounds.absoluteBoundingBox.x, itmBoundingBox.absoluteBoundingBox.x); calculatedBounds.absoluteBoundingBox.y = Math.Min(calculatedBounds.absoluteBoundingBox.y, itmBoundingBox.absoluteBoundingBox.y); if (itmBoundingBox.absoluteBoundingBox.x + itmBoundingBox.absoluteBoundingBox.width > calculatedBounds.absoluteBoundingBox.x + calculatedBounds.absoluteBoundingBox.width) { calculatedBounds.absoluteBoundingBox.width += (itmBoundingBox.absoluteBoundingBox.x + itmBoundingBox.absoluteBoundingBox.width) - (calculatedBounds.absoluteBoundingBox.x + calculatedBounds.absoluteBoundingBox.width); } if (itmBoundingBox.absoluteBoundingBox.y + itmBoundingBox.absoluteBoundingBox.height > calculatedBounds.absoluteBoundingBox.y + calculatedBounds.absoluteBoundingBox.height) { calculatedBounds.absoluteBoundingBox.height += (itmBoundingBox.absoluteBoundingBox.y + itmBoundingBox.absoluteBoundingBox.height) - (calculatedBounds.absoluteBoundingBox.y + calculatedBounds.absoluteBoundingBox.height); } } } } }
public static bool HasChildrenVisible(this IFigmaNodeContainer optionsNode, string layerName) { return(optionsNode.children.FirstOrDefault(s => s.name == layerName) ?.visible ?? false); }