Beispiel #1
0
        public bool GenerateEntity(EntityMetadata entityMetadata, IServiceProvider services)
        {
            if (!DefaultService.GenerateEntity(entityMetadata, services))
            {
                return(false);
            }

            if (!EntityMetadata.ContainsKey(entityMetadata.LogicalName))
            {
                EntityMetadata.Add(entityMetadata.LogicalName, entityMetadata);
            }
            return(!EntitiesToSkip.Contains(entityMetadata.LogicalName));
        }
        public bool GenerateEntity(EntityMetadata entityMetadata, IServiceProvider services)
        {
            if (!DefaultService.GenerateEntity(entityMetadata, services))
            {
                return(false);
            }

            if (!EntityMetadata.ContainsKey(entityMetadata.LogicalName))
            {
                EntityMetadata.Add(entityMetadata.LogicalName, entityMetadata);
            }

            // If Whitelist is populated, Skip if not in Whitelist.
            if (EntitiesWhitelist.Count > 0 && !EntitiesWhitelist.Contains(entityMetadata.LogicalName))
            {
                return(false);
            }

            return(!EntitiesToSkip.Contains(entityMetadata.LogicalName) && !EntityPrefixesToSkip.Any(p => entityMetadata.LogicalName.StartsWith(p)));
        }
Beispiel #3
0
        private AGSBoundingBox getBoundingBox(IInObjectTreeComponent tree, IBoundingBoxComponent box,
                                              Func <AGSBoundingBoxes, AGSBoundingBox> getBox, string printoutId)
        {
            float minX = float.MaxValue;
            float maxX = float.MinValue;
            float minY = float.MaxValue;
            float maxY = float.MinValue;

            var boxes = box?.GetBoundingBoxes(_state.Viewport);

            if (boxes != null)
            {
                var boundingBox = getBox(boxes);

                if (boundingBox.IsValid)
                {
                    minX = boundingBox.MinX;
                    maxX = boundingBox.MaxX;
                    minY = boundingBox.MinY;
                    maxY = boundingBox.MaxY;
                }

                if (printoutId != null)
                {
                    Debug.WriteLine($"{printoutId}: {minX}-{maxX}, {minY}-{maxY}");
                }
            }

            if (tree?.TreeNode != null)
            {
                foreach (var child in tree.TreeNode.Children)
                {
                    if (child == null || !child.UnderlyingVisible || EntitiesToSkip.Contains(child.ID))
                    {
                        continue;
                    }

                    //note: the text component check is needed for textboxes. We have a "with caret" version of the textbox flashing in and out
                    //but we don't want to set it to visible and not visible because it hurts performance to keep changing the display list (which triggers sorting)
                    //so we hide the the text and text background with label renderer properties. Because it's hidden the textbox may not be updated which correct bounding boxes.
                    var textComponent = child.GetComponent <ITextComponent>();
                    if (textComponent != null && !textComponent.TextVisible && !child.IsImageVisible)
                    {
                        continue;
                    }

                    var childBox = getBoundingBox(child, child, getBox, printoutId == null ? null : child.ID);
                    if (!childBox.IsValid)
                    {
                        continue;
                    }
                    if (minX > childBox.MinX)
                    {
                        minX = childBox.MinX;
                    }
                    if (maxX < childBox.MaxX)
                    {
                        maxX = childBox.MaxX;
                    }
                    if (minY > childBox.MinY)
                    {
                        minY = childBox.MinY;
                    }
                    if (maxY < childBox.MaxY)
                    {
                        maxY = childBox.MaxY;
                    }
                }
            }
            if (MathUtils.FloatEquals(minX, float.MaxValue))
            {
                return(default);