Пример #1
0
        public CurrentItemList(IEnumerable <T> collection, T defaultItem) : base(collection)
        {
            CurrentIndexBase0 = new TextInt(0);
            CurrentIndexBase1 = new TextInt(1);

            DefaultItem = defaultItem;

            CurrentIndexBase0.ValueChangingEvent += CurrentIndexBase0_ValueChangingEvent;
            CurrentIndexBase1.ValueChangingEvent += CurrentIndexBase1_ValueChangingEvent;
        }
Пример #2
0
        public CurrentItemList(T defaultItem) : base()
        {
            CurrentIndexBase0 = new TextInt(-1);
            CurrentIndexBase1 = new TextInt(0);

            DefaultItem = defaultItem;

            CurrentIndexBase0.ValueChangingEvent += CurrentIndexBase0_ValueChangingEvent;
            CurrentIndexBase1.ValueChangingEvent += CurrentIndexBase1_ValueChangingEvent;
        }
Пример #3
0
        private void RenderText(MapGraphics g)
        {
            if (TextInt == string.Empty)
            {
                return;
            }
            string text = (TextInt.IndexOf("#", StringComparison.Ordinal) == -1) ? TextInt : GetMapCore().ResolveAllKeywords(TextInt, this);

            text = text.Replace("\\n", "\n");
            StringFormat stringFormat = new StringFormat();

            if (TextAlignment == ContentAlignment.BottomRight)
            {
                stringFormat.Alignment     = StringAlignment.Near;
                stringFormat.LineAlignment = StringAlignment.Near;
            }
            else if (TextAlignment == ContentAlignment.BottomCenter)
            {
                stringFormat.Alignment     = StringAlignment.Center;
                stringFormat.LineAlignment = StringAlignment.Near;
            }
            else if (TextAlignment == ContentAlignment.BottomLeft)
            {
                stringFormat.Alignment     = StringAlignment.Far;
                stringFormat.LineAlignment = StringAlignment.Near;
            }
            else if (TextAlignment == ContentAlignment.MiddleRight)
            {
                stringFormat.Alignment     = StringAlignment.Near;
                stringFormat.LineAlignment = StringAlignment.Center;
            }
            else if (TextAlignment == ContentAlignment.MiddleCenter)
            {
                stringFormat.Alignment     = StringAlignment.Center;
                stringFormat.LineAlignment = StringAlignment.Center;
            }
            else if (TextAlignment == ContentAlignment.MiddleLeft)
            {
                stringFormat.Alignment     = StringAlignment.Far;
                stringFormat.LineAlignment = StringAlignment.Center;
            }
            else if (TextAlignment == ContentAlignment.TopRight)
            {
                stringFormat.Alignment     = StringAlignment.Near;
                stringFormat.LineAlignment = StringAlignment.Far;
            }
            else if (TextAlignment == ContentAlignment.TopCenter)
            {
                stringFormat.Alignment     = StringAlignment.Center;
                stringFormat.LineAlignment = StringAlignment.Far;
            }
            else
            {
                stringFormat.Alignment     = StringAlignment.Far;
                stringFormat.LineAlignment = StringAlignment.Far;
            }
            SizeF  sizeF = g.MeasureString(text, Font, new SizeF(0f, 0f), StringFormat.GenericTypographic);
            PointF centerPointInContentPixels = GetCenterPointInContentPixels(g);

            new RectangleF(centerPointInContentPixels.X, centerPointInContentPixels.Y - 1f, 0f, 0f).Inflate(sizeF.Width / 2f, sizeF.Height / 2f);
            if (TextShadowOffset != 0)
            {
                using (Brush brush = g.GetShadowBrush())
                {
                    g.DrawString(point: new PointF(centerPointInContentPixels.X + (float)TextShadowOffset, centerPointInContentPixels.Y + (float)TextShadowOffset), s: text, font: Font, brush: brush, format: stringFormat);
                }
            }
            using (Brush brush2 = new SolidBrush(TextColor))
            {
                g.DrawString(text, Font, brush2, centerPointInContentPixels, stringFormat);
            }
        }
Пример #4
0
        private void OnEnable()
        {
            fsmShapeSelection = new FSM <ShapeSelectionState>(FSM.TransitionModeEnum.Immediate);
            fig = new GLFigure();
            guiSelectedShape    = new TextInt(gui.selectedShape);
            guiSelectedVertices = new TextInt(gui.selectedVertices);
            rctVisTarget        = new Reactive <VisTargetEnum>();

            SetMapper(new Mapper());

            fig.DefaultLineMat.ZTestMode = GLMaterial.ZTestEnum.ALWAYS;
            guiSelectedShape.Changed    += r => {
                validator.Invalidate();
                gui.selectedShape = r.Value;
            };
            guiSelectedVertices.Changed += r => {
                validator.Invalidate();
                gui.selectedVertices = r.Value;
            };
            rctVisTarget.Changed += r => {
                mapper.CurrFlags = r.Value == VisTargetEnum.Input ?
                                   (mapper.CurrFlags | Mapper.OutputFlags.InputVertex) :
                                   (mapper.CurrFlags & ~Mapper.OutputFlags.InputVertex);
            };

            validator.Reset();
            validator.Validation += () => {
                if (mapper == null)
                {
                    validator.Invalidate();
                    return;
                }
                mapper.Clear();
                foreach (var q in data.shapes.quads)
                {
                    mapper.Add(q);
                }
            };

            fsmShapeSelection.StateFor(ShapeSelectionState.None).Update(f => {
                if (0 <= gui.selectedShape && gui.selectedShape < data.shapes.Count)
                {
                    f.Goto(ShapeSelectionState.Selected);
                    return;
                }
            });
            fsmShapeSelection.StateFor(ShapeSelectionState.Selected).Update(f => {
                if (gui.selectedShape < 0 || data.shapes.Count <= gui.selectedShape)
                {
                    f.Goto(ShapeSelectionState.None);
                    return;
                }
            });
            fsmShapeSelection.Init(ShapeSelectionState.None);

            mouse.OnSelection += (m, arg) => {
                if ((arg & MouseTracker.ButtonFlag.Left) == 0)
                {
                    return;
                }

                var s2n = CoordConverter.ScreenToNDC;
                var dx  = (Vector2)s2n.MultiplyVector(m.PositionDiff);

                var shape = GetSelectedShape();
                if (shape != null)
                {
                    var vertices = GetVertices(shape);
                    for (var i = 0; i < vertices.Count; i++)
                    {
                        if ((gui.selectedVertices & (1 << i)) == 0)
                        {
                            continue;
                        }
                        var v = vertices[i];
                        v.x        += dx.x;
                        v.y        += dx.y;
                        vertices[i] = v;
                    }
                    shape.Invalidate();
                }
            };

            Load();
        }
Пример #5
0
 public GUIData(Data data)
 {
     spout  = data.spout;
     width  = new TextInt(data.width);
     height = new TextInt(data.height);
 }