Esempio n. 1
0
        public static TagSelector Select(Tag tag, Vector2 pos, float maxDist)
        {
            Vector2 delta = tag.Pos - pos;
            float   dist  = delta.Length;

            if (dist < maxDist)
            {
                TagSelector selector = new TagSelector(tag, dist);
                return(selector);
            }
            return(null);
        }
Esempio n. 2
0
        public void OnTapGesture(Vector2 posView)
        {
            float touchRange = ccContext.SelectRadius;

            Vector2 pos = CCContext.ViewToModel(posView, ccContext.ModelViewMatrix);

            // Mask draw and erase
            if (activeTool == Tool.MaskDraw || activeTool == Tool.MaskErase)
            {
                bool foreground = activeTool == Tool.MaskDraw;
                CountLayerHelper.MaskDraw(pos, pos, foreground, frameBuffer, maskTexName, ccContext.ImageSize,
                                          unitSphereVertices, ccContext.DrawRadius);

                bUpdateROI          = true;
                bUpdateSeqmentation = true;
                ccContext.RequestRender();
                return;
            }

            // Tap pos in count view spacew
            float radius = CCContext.ViewToModel(touchRange, ccContext.ModelViewMatrix);

            switch (ccContext.CountLayerContext.ActiveTool)
            {
            case CountLayerContext.Tool.TagCreate:
            {
                // Make sure tag is inside ROI
                if ((pos - roiSphere.center).Length < roiSphere.radius)
                {
                    tags.Add(new Tag(pos));
                    bUpdateSeqmentation = true;
                    ccContext.RequestRender();
                }

                break;
            }

            case CountLayerContext.Tool.TagDelete:
            {
                TagSelector selector = TagSelector.Select(tags, pos, radius);

                if (selector != null)
                {
                    Tag tag = selector.GetPrimitive() as Tag;
                    tags.Remove(tag);
                    bUpdateSeqmentation = true;
                    ccContext.RequestRender();
                }
                break;
            }
            }
        }
Esempio n. 3
0
        public static TagSelector Select(ICollection <Tag> tags, Vector2 pos, float maxDist)
        {
            TagSelector selector = null;

            foreach (Tag tag in tags)
            {
                TagSelector newSelector = Select(tag, pos, maxDist);
                if (newSelector != null)
                {
                    selector = newSelector;
                    maxDist  = selector.GetSelectDistance();
                }
            }
            return(selector);
        }
Esempio n. 4
0
        public bool OnSelect(Vector2 posView)
        {
            float touchRange = ccContext.SelectRadius;

            Vector2 p      = CCContext.ViewToModel(posView, ccContext.ModelViewMatrix);
            float   radius = CCContext.ViewToModel(touchRange, ccContext.ModelViewMatrix);

            switch (activeTool)
            {
            case Tool.ROIEdit:
            {
                selectedPrim = SphereSelector.Select(roiSphere, p, radius, true, true);
                if (selectedPrim != null)
                {
                    ccContext.RequestRender();
                    return(true);
                }
                break;
            }

            case Tool.TagCreate:
            case Tool.TagDelete:
            {
                selectedPrim = TagSelector.Select(tags, p, radius);
                if (selectedPrim != null)
                {
                    ccContext.RequestRender();
                    Console.WriteLine("selected:" + selectedPrim.GetPrimitive());
                    return(true);
                }
                break;
            }
            }

            return(false);
        }