예제 #1
0
        static void ProcessTransitionNodeID(string transitionNodeId, FigmaViewRendererService rendererService, FigmaViewRendererServiceOptions options)
        {
            if (string.IsNullOrEmpty(transitionNodeId))
            {
                return;
            }

            var node = rendererService.FindNodeById(transitionNodeId);

            if (node.name == SignInDialog)
            {
                LoadSignInDialog(rendererService, options);
            }
            else if (node.name == RecentItemsDialog)
            {
                LoadRecentItemsDialog(rendererService, options);
            }
            else if (node.name == LoginDialog)
            {
                LoadLoginDialog(rendererService, options);
            }
            else if (node.name == LoadingDialog)
            {
                LoadLoadingDialog(rendererService, options);
            }
            else
            {
                var selectedNode      = rendererService.FindNodeById(transitionNodeId);
                var storyboardRedered = rendererService.RenderByNode <IView>(selectedNode);

                storyboardRedered.CornerRadius = 5;
                SetContentDialog(storyboardRedered);
            }
        }
예제 #2
0
        public static void RenderInWindow(this FigmaViewRendererService sender, IWindow mainWindow, FigmaViewRendererServiceOptions options, params string[] path)
        {
            var contentPath = path.Concat(new[] { "content" }).ToArray();

            var contentFigmaNode = (IAbsoluteBoundingBox)sender.FileProvider.FindByPath(contentPath);
            var contentView      = sender.RenderByNode <IView>((FigmaNode)contentFigmaNode, options);

            var windowFigmaNode = (IAbsoluteBoundingBox)sender.FileProvider.FindByPath(path);

            mainWindow.Size = windowFigmaNode.absoluteBoundingBox.Size;

            var windowNodeContainer = (IFigmaNodeContainer)windowFigmaNode;
            var windowComponent     = windowNodeContainer.children
                                      .OfType <FigmaInstance>()
                                      .FirstOrDefault(s => s.Component.key == "b666bac2b68d976c9e3e5b52a0956a9f1857c1f2");

            var windowLabel = windowComponent.children
                              .OfType <FigmaText>()
                              .FirstOrDefault();

            mainWindow.Title = windowLabel.characters;

            var       difX = contentFigmaNode.absoluteBoundingBox.X - windowFigmaNode.absoluteBoundingBox.X;
            var       difY = contentFigmaNode.absoluteBoundingBox.Y - windowFigmaNode.absoluteBoundingBox.Y;
            const int WindowTitleHeight = 20;

            difY -= WindowTitleHeight;

            mainWindow.Content.AddChild(contentView);
            contentView.SetPosition(difX, difY);
        }
예제 #3
0
        public static void RenderInWindow(this FigmaViewRendererService sender, IWindow mainWindow, string windowLayerName, FigmaViewRendererServiceOptions options = null)
        {
            var windowFigmaNode = sender.FileProvider.FindByName(windowLayerName);

            FigmaNode content = null;

            if (windowFigmaNode is IFigmaNodeContainer figmaNodeContainer)
            {
                content = figmaNodeContainer.children.FirstOrDefault(s => s.IsNodeWindowContent());

                var windowComponent = windowFigmaNode.GetDialogInstanceFromParentContainer();

                if (options == null)
                {
                    options = new FigmaViewRendererServiceOptions();
                    options.AreImageProcessed = false;
                }

                options.ToIgnore = new FigmaNode[] { windowComponent };

                if (windowComponent != null)
                {
                    var windowLabel = windowComponent.children
                                      .OfType <FigmaText>()
                                      .FirstOrDefault();
                    if (windowLabel != null)
                    {
                        mainWindow.Title = windowLabel.characters;
                    }
                }
            }

            if (windowFigmaNode is IAbsoluteBoundingBox box)
            {
                mainWindow.Size = box.absoluteBoundingBox.Size;
            }

            if (content == null)
            {
                content = windowFigmaNode;
            }

            var renderContent = sender.RenderByNode(content, mainWindow.Content, options);

            mainWindow.Content = renderContent;
        }