/// <inheritdoc />
        public override Selector VisitSelector(CommonTree selectorTree, string selectorType)
        {
            Selector selector;

            switch (selectorType)
            {
            case MapCssStrings.NodeSelector:
                selector = new NodeSelector();
                break;

            case MapCssStrings.WaySelector:
                selector = new WaySelector();
                break;

            case MapCssStrings.AreaSelector:
                selector = new AreaSelector();
                break;

            case MapCssStrings.CanvasSelector:
                selector = new CanvasSelector();
                break;

            default:
                throw new MapCssFormatException(selectorTree,
                                                String.Format(Strings.MapCssUnknownSelectorType, selectorType));
            }

            var operation = selectorTree.Children[0].Text;

            ParseOperation(selectorTree, selector, operation);

            return(selector);
        }
Пример #2
0
 public ItemDrawer(PointSelector.PointSelector pointSelector,
     AreaSelector.AreaSelector areaSelector, RlViewer.Behaviors.Scaling.Scaler scaler,
     AreaSelector.AreaSelectorsAlignerContainer areaAlignerWrapper) : base(scaler)
 {
     _pointSelector = pointSelector;
     _areaSelector = areaSelector;
     _areaAlignerWrapper = areaAlignerWrapper;
 }
    static void DrawGizmoForMyScript(AreaSelector areaSelector, GizmoType gizmoType)
    {
        var size  = areaSelector.Size.ToVector3() * MapGenerator.BlockSize;
        var start = areaSelector.StartPosition.ToVector3() * MapGenerator.BlockSize - new Vector3(1f, 0, 1f) * MapGenerator.BlockSize * 0.5f;

        Gizmos.color = Color.red;
        Gizmos.DrawWireCube(areaSelector.MapGenerator.transform.position + start + size * 0.5f, size);
    }
    static void DrawGizmoForMyScript(AreaSelector areaSelector, GizmoType gizmoType)
    {
        if (areaSelector.MapBehaviour == null || !areaSelector.MapBehaviour.Initialized)
        {
            return;
        }
        var size  = areaSelector.Size.ToVector3() * InfiniteMap.BLOCK_SIZE;
        var start = areaSelector.StartPosition.ToVector3() * InfiniteMap.BLOCK_SIZE - new Vector3(1f, 0, 1f) * InfiniteMap.BLOCK_SIZE * 0.5f;

        Gizmos.color = Color.red;
        Gizmos.DrawWireCube(areaSelector.MapBehaviour.transform.position + start + size * 0.5f, size);
    }
    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();

        AreaSelector selector = (AreaSelector)target;

        if (GUILayout.Button("Generate"))
        {
            if (!selector.MapGenerator.Initialized)
            {
                selector.MapGenerator.Initialize();
            }
            selector.MapGenerator.Collapse(selector.StartPosition, selector.Size);
            selector.MapGenerator.BuildAllSlots();
        }
    }
        public static async Task <Screenshot?> CaptureSelection(HSSettings settingsContext)
        {
            if (settingsContext == null)
            {
                throw new ArgumentNullException(nameof(settingsContext));
            }

            Debug.Assert(!SelectionSemaphore.IsInAreaSelection);

            if (SelectionSemaphore.IsInAreaSelection)
            {
                return(null);
            }

            using var prio = new ProcessPriorityRequest();
            var(screen, cursorPosition) = ScreenshotCreator.CaptureScreenshot(SystemInformation.VirtualScreen, settingsContext.CaptureCursor);
            using var selector          = AreaSelector.Create(screen, true, settingsContext);

            var(selectedArea, _) = await selector.PromptSelectionAsync().ConfigureAwait(true);

            Debug.Assert(selectedArea.Width > 0);
            Debug.Assert(selectedArea.Height > 0);

            var selectedImage = new Bitmap(selectedArea.Width, selectedArea.Height);

            var cursorPositionOnSelectedImage = cursorPosition == null
                ? null
                : cursorPosition with {
                OnImage = new Point(cursorPosition.OnImage.X - selectedArea.X, cursorPosition.OnImage.Y - selectedArea.Y)
            };

            using var g = Graphics.FromImage(selectedImage);

            g.DrawImage(screen, new Rectangle(0, 0, selectedArea.Width, selectedArea.Height), selectedArea, GraphicsUnit.Pixel);

            return(Screenshot.FromImage(selectedImage, cursorPosition, ScreenshotSource.Selected));
        }
    }