예제 #1
0
        public Color GetColor(string key)
        {
            object obj = this[key];

            string color_string = obj as string;

            if (null != color_string)
            {
                return(ColorTools.HEXToColor(color_string));
            }

            ColorWrapper color_wrapper = obj as ColorWrapper;

            if (null != color_wrapper)
            {
                Logging.Info("Doing a legacy Color upgrade for key " + key);
                SetColor(key, color_wrapper.Color);
                return(color_wrapper.Color);
            }

            // Not a good place to be, but we will try our best :-)
            // This means that we somehow didnt write a correct color to the streamm...
            JContainer color_json = obj as JContainer;

            if (null != color_json)
            {
                ColorWrapper cw = JsonConvert.DeserializeObject <ColorWrapper>(color_json.ToString());
                return(cw.Color);
            }

            // If we get here there is no color!
            return(Colors.Transparent);
        }
예제 #2
0
        public override void ProcessInput( Event ev )
        {
            base.ProcessInput( ev );

            if ( usePicker )
            {
                Color col = parentLight.CompGlower.Props.glowColor.ToColor;
                // set alpha to 1 (lights use alpha zero, but that won't show in the picker)
                ColorWrapper _color = new ColorWrapper( new Color( col.r, col.g, col.b ) );

                Find.WindowStack.Add( new Dialog_ColorPicker( _color, delegate
                {

                    parentLight.ChangeColor( _color.Color );
                }, ev.button == 1, true ) );
            }
            else
            {
                if( ev.button == 0 )
                {
                    parentLight.IncrementColorIndex();
                }
                else if( ev.button == 1 )
                {
                    parentLight.DecrementColorIndex();
                }
            }
        }
 static public object Parse(string value, Type type)
 {
     if (type == typeof(System.Drawing.SizeF))
     {
         return(Parse(new System.Drawing.SizeF(0, 0), value));
     }
     if (type == typeof(System.Drawing.PointF))
     {
         return(Parse(new System.Drawing.PointF(0, 0), value));
     }
     if (type == typeof(System.Drawing.Color))
     {
         value = value.Replace("Color ", "");
         value = value.Trim(new char[] { '[', ']' });
         System.Drawing.Color c = System.Drawing.Color.FromName(value);
         if (c.IsKnownColor)
         {
             return(c);
         }
         ColorWrapper color = new ColorWrapper();
         Parse(color, value);
         return(color.Color);
     }
     return(null);
 }
예제 #4
0
        public override void                ProcessInput(Event ev)
        {
            base.ProcessInput(ev);

            if (usePicker)
            {
                Color col = parentLight.CompGlower.Props.glowColor.ToColor;
                // set alpha to 1 (lights use alpha zero, but that won't show in the picker)
                ColorWrapper _color = new ColorWrapper(new Color(col.r, col.g, col.b));

                Find.WindowStack.Add(new Dialog_ColorPicker(_color, delegate
                {
                    parentLight.ChangeColor(_color.Color);
                }, ev.button == 1, true));
            }
            else
            {
                if (ev.button == 0)
                {
                    parentLight.IncrementColorIndex();
                }
                else if (ev.button == 1)
                {
                    parentLight.DecrementColorIndex();
                }
            }
        }
예제 #5
0
파일: UiImage.cs 프로젝트: prepare/Sitana
        protected override bool Init(object controller, object binding, DefinitionFile definition)
        {
            if (!base.Init(controller, binding, definition))
            {
                return(false);
            }

            DefinitionFileWithStyle file = new DefinitionFileWithStyle(definition, typeof(UiImage));

            _image         = DefinitionResolver.GetShared <Texture2D>(Controller, Binding, file["Image"], null);
            _stretch       = DefinitionResolver.Get <Stretch>(Controller, Binding, file["Stretch"], Stretch.Uniform);
            _color         = DefinitionResolver.GetColorWrapper(Controller, Binding, file["Color"]) ?? new ColorWrapper();
            _rotationSpeed = (float)DefinitionResolver.Get <double>(Controller, Binding, file["RotationSpeed"], 0);
            _scaleByUnit   = DefinitionResolver.Get <bool>(Controller, Binding, file["ScaleByUnit"], true);
            _scale         = DefinitionResolver.Get(Controller, Binding, file["Scale"], Scale.One);

            _image.ValueChanged += _image_ValueChanged;

            switch (DefinitionResolver.Get <ResampleFilter>(Controller, Binding, file["ResampleFilter"], ResampleFilter.Default))
            {
            case ResampleFilter.Point:
                _samplerState = SamplerState.PointClamp;
                break;

            case ResampleFilter.Linear:
                _samplerState = SamplerState.LinearClamp;
                break;

            case ResampleFilter.Anisotropic:
                _samplerState = SamplerState.AnisotropicClamp;
                break;
            }

            return(true);
        }
예제 #6
0
        protected virtual void Init(UiController controller, object binding, DefinitionFile definition)
        {
            DefinitionFileWithStyle file = new DefinitionFileWithStyle(definition, typeof(ButtonDrawable));

            float changeTime = (float)DefinitionResolver.Get <double>(controller, binding, file["ChangeTime"], 0) / 1000.0f;

            _changeSpeed = changeTime > 0 ? 1 / changeTime : 10000;

            _colorDisabled = DefinitionResolver.GetColorWrapper(controller, binding, file["ColorDisabled"]);
            _colorReleased = DefinitionResolver.GetColorWrapper(controller, binding, file["ColorReleased"]);
            _colorPushed   = DefinitionResolver.GetColorWrapper(controller, binding, file["ColorPushed"]);

            _margin = DefinitionResolver.Get <Margin>(controller, binding, file["Margin"], Margin.None);

            _opacity = (float)DefinitionResolver.Get <double>(controller, binding, file["Opacity"], 1);

            if (file["Special"] != null)
            {
                _specialState = DefinitionResolver.Get <bool>(controller, binding, file["Special"], false);
            }
            else
            {
                _specialState = null;
            }

            if (file["Checked"] != null)
            {
                _checkedState = DefinitionResolver.Get <bool>(controller, binding, file["Checked"], false);
            }
            else
            {
                _checkedState = null;
            }
        }
예제 #7
0
 public MyApp(ApplicationConfiguration config)
 {
     appClient = new Client(config.Hostname, config.Port);
     appServer = new Server(config.ReceivePort);
     mainColor = new ColorWrapper();
     Target    = config.Target;
     appServer.StartListen();
 }
예제 #8
0
        bool IDefinitionClass.Init(UiController controller, object binding, DefinitionFile definition)
        {
            DefinitionFileWithStyle file = new DefinitionFileWithStyle(definition, typeof(QuickSeparatorLine));

            _color = DefinitionResolver.GetColorWrapper(controller, binding, file["Color"]);

            _left  = DefinitionResolver.Get <Length>(controller, binding, file["Left"], Length.Zero);
            _right = DefinitionResolver.Get <Length>(controller, binding, file["Right"], Length.Zero);

            return(true);
        }
예제 #9
0
        protected override bool Init(object controller, object binding, DefinitionFile definition)
        {
            if (!base.Init(controller, binding, definition))
            {
                return(false);
            }

            DefinitionFileWithStyle file = new DefinitionFileWithStyle(definition, typeof(UiListBox));

            _selectionColor = DefinitionResolver.GetColorWrapper(Controller, Binding, file["SelectionColor"]);

            return(true);
        }
예제 #10
0
        bool IDefinitionClass.Init(UiController controller, object binding, DefinitionFile definition)
        {
            DefinitionFileWithStyle file = new DefinitionFileWithStyle(definition, typeof(NinePatchBackground));

            _image       = DefinitionResolver.Get <NinePatchImage>(controller, binding, file["Image"], null);
            _scaleByUnit = DefinitionResolver.Get <bool>(controller, binding, file["ScaleByUnit"], false);
            _scale       = (float)DefinitionResolver.Get <double>(controller, binding, file["Scale"], 1);
            _color       = DefinitionResolver.GetColorWrapper(controller, binding, file["Color"]) ?? new ColorWrapper();

            _margin = DefinitionResolver.Get <Margin>(controller, binding, file["Margin"], Margin.None);

            return(true);
        }
예제 #11
0
        /// <summary>
        /// Call with a ColorWrapper object containing the color to be changed, with an optional callback which is called when Apply or OK are clicked.
        /// Setting draggable = true will break sliders for now.
        /// </summary>
        /// <param name="color"></param>
        /// <param name="callback"></param>
        public Dialog_ColorPicker(ColorWrapper color, Action callback = null, bool preview = true, bool autoApply = false)
        {
            // TODO: figure out if sliders and draggable = true can coexist.
            // using Event.current.Use() prevents further drawing of the tab and closes parent(s).
            _wrapper   = color;
            _callback  = callback;
            _preview   = preview;
            _autoApply = autoApply;
            Color      = _wrapper.Color;
            tempColor  = _wrapper.Color;

            Notify_RGBUpdated();
        }
        /// <summary>
        /// Call with a ColorWrapper object containing the color to be changed, with an optional callback which is called when Apply or OK are clicked.
        /// Setting draggable = true will break sliders for now.
        /// </summary>
        /// <param name="color"></param>
        /// <param name="callback"></param>
        public Dialog_ColorPicker( ColorWrapper color, Action callback = null, bool preview = true, bool autoApply = false )
        {
            // TODO: figure out if sliders and draggable = true can coexist.
            // using Event.current.Use() prevents further drawing of the tab and closes parent(s).
            _wrapper     = color;
            _callback    = callback;
            _preview     = preview;
            _autoApply   = autoApply;
            Color        = _wrapper.Color;
            tempColor    = _wrapper.Color;

            Notify_RGBUpdated();
        }
예제 #13
0
        protected override bool Init(object controller, object binding, DefinitionFile definition)
        {
            if (!base.Init(controller, binding, definition))
            {
                return(false);
            }

            DefinitionFileWithStyle file = new DefinitionFileWithStyle(definition, typeof(UiVerticalGradient));

            _topColor    = DefinitionResolver.GetColorWrapper(Controller, Binding, file["TopColor"]);
            _bottomColor = DefinitionResolver.GetColorWrapper(Controller, Binding, file["BottomColor"]);

            return(true);
        }
예제 #14
0
        protected override bool Init(object controller, object binding, DefinitionFile definition)
        {
            if (!base.Init(controller, binding, definition))
            {
                return(false);
            }

            DefinitionFileWithStyle file = new DefinitionFileWithStyle(definition, typeof(UiHorizontalGradient));

            _leftColor  = DefinitionResolver.GetColorWrapper(Controller, Binding, file["LeftColor"]);
            _rightColor = DefinitionResolver.GetColorWrapper(Controller, Binding, file["RightColor"]);

            return(true);
        }
예제 #15
0
        public Color GetColor(int key, out bool found)
        {
            object obj2 = this.GetObject(key, out found);

            if (found)
            {
                ColorWrapper wrapper = obj2 as ColorWrapper;
                if (wrapper != null)
                {
                    return(wrapper.Color);
                }
            }
            found = false;
            return(Color.Empty);
        }
예제 #16
0
        protected override bool Init(object controller, object binding, DefinitionFile definition)
        {
            if (!base.Init(controller, binding, definition))
            {
                return(false);
            }

            DefinitionFileWithStyle file = new DefinitionFileWithStyle(definition, typeof(UiRectangle));

            _image       = DefinitionResolver.Get <NinePatchImage>(Controller, Binding, file["Image"], null);
            _scaleByUnit = DefinitionResolver.Get(Controller, Binding, file["ScaleByUnit"], false);
            _scale       = (float)DefinitionResolver.Get(Controller, Binding, file["Scale"], 1.0);
            _color       = DefinitionResolver.GetColorWrapper(Controller, Binding, file["Color"]);

            return(true);
        }
예제 #17
0
        protected override bool Init(object controller, object binding, DefinitionFile definition)
        {
            if (!base.Init(controller, binding, definition))
            {
                return(false);
            }

            DefinitionFileWithStyle file = new DefinitionFileWithStyle(definition, typeof(UiSeparatorLine));

            _image       = DefinitionResolver.GetShared <Texture2D>(Controller, Binding, file["Image"], null);
            _color       = DefinitionResolver.GetColorWrapper(Controller, Binding, file["Color"]) ?? new ColorWrapper();
            _scaleByUnit = DefinitionResolver.Get <bool>(Controller, Binding, file["ScaleByUnit"], true);
            _scale       = (float)DefinitionResolver.Get <double>(Controller, Binding, file["Scale"], 1);
            _vertical    = DefinitionResolver.Get <Mode>(Controller, Binding, file["Mode"], Mode.Horizontal) == Mode.Vertical;

            return(true);
        }
예제 #18
0
        /// <summary>
        /// Handles the MouseUp event of the PersistentList control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.Windows.Input.MouseButtonEventArgs"/> instance containing the event data.</param>
        void PaletteList_MouseUp(object sender, MouseButtonEventArgs e)
        {
            ColorWrapper cw = persistentList.SelectedItem as ColorWrapper;
            ObservableCollection <ColorWrapper> items = persistentList.ItemsSource as ObservableCollection <ColorWrapper>;

            if (items != null)
            {
                // Get the operation mode based on either keys or mouse click-position
                Mode m = GetMode(sender, e);

                if (m == Mode.Add)
                {
                    // Add another color item
                    items.Insert(0, new ColorWrapper(SelectedColor));
                    UpdateCurrentPaletteStore();
                }
                else if (m == Mode.Remove)
                {
                    // Remove current color, but only if there are two or more items left and there is a selected item
                    // and the user clicked the persistent list
                    if (cw != null && items.Count > 1)
                    {
                        items.Remove(cw);
                        UpdateCurrentPaletteStore();
                    }
                }
                else if (cw != null)
                {
                    if (m == Mode.Update)
                    {
                        // Update the persistent palette with the current color
                        cw.Color = SelectedColor;
                        UpdateCurrentPaletteStore();
                    }
                    else if (sender == persistentList)
                    {
                        // No key pressed, just update the current color
                        SelectedColor = cw.Color;
                    }
                }

                // Event handled if mode was anything other than None
                e.Handled = m != Mode.None;
            }
        }
예제 #19
0
        protected override bool Init(object controller, object binding, DefinitionFile definition)
        {
            if (!base.Init(controller, binding, definition))
            {
                return(false);
            }

            DefinitionFileWithStyle file = new DefinitionFileWithStyle(definition, typeof(UiImage));

            _image         = DefinitionResolver.GetShared <Texture2D>(Controller, Binding, file["Image"], null);
            _stretch       = DefinitionResolver.Get <Stretch>(Controller, Binding, file["Stretch"], Stretch.Uniform);
            _color         = DefinitionResolver.GetColorWrapper(Controller, Binding, file["Color"]) ?? new ColorWrapper();
            _rotationSpeed = (float)DefinitionResolver.Get <double>(Controller, Binding, file["RotationSpeed"], 0);
            _scaleByUnit   = DefinitionResolver.Get <bool>(Controller, Binding, file["ScaleByUnit"], true);
            _scale         = (float)DefinitionResolver.Get <double>(Controller, Binding, file["Scale"], 1);

            return(true);
        }
예제 #20
0
        public object ParseColor(string id)
        {
            string name   = Value(id);
            object method = ParseMethodOrField(name);

            if (method != null)
            {
                return(method);
            }

            if (name.IsNullOrEmpty())
            {
                return(null);
            }

            if (name[0] == ':')
            {
                ColorWrapper colorWrapper = ColorsManager.Instance[name];

                if (colorWrapper != null)
                {
                    return(colorWrapper);
                }
            }

            Color?color = ColorParser.Parse(name);

            if (color.HasValue)
            {
                return(color.Value);
            }

            {
                Exception ex = Error(id, "Invalid format. Color formats are: '#aarrggbb' '#rrggbb' 'r,g,b' 'r,g,b,a' 'Name' 'Name*Alpha'.");
                if (ex != null)
                {
                    throw ex;
                }
            }

            return(null);
        }
예제 #21
0
        public void SetColor(int key, Color value)
        {
            bool   flag;
            object obj2 = this.GetObject(key, out flag);

            if (!flag)
            {
                this.SetObject(key, new ColorWrapper(value));
            }
            else
            {
                ColorWrapper wrapper = obj2 as ColorWrapper;
                if (wrapper != null)
                {
                    wrapper.Color = value;
                }
                else
                {
                    this.SetObject(key, new ColorWrapper(value));
                }
            }
        }
        public static double[] GetRowGrayScaleValues(WriteableBitmap bitmap, int row)
        {
            WriteableBitmapWrapper wrapper = WriteableBitmapWrapper.Create(bitmap);

            if (wrapper.IsFormatGrayScale)
            {
                double[] grayScaleValues = wrapper.GetRowGrayValues(row);
                return(grayScaleValues);
            }
            else
            {
                Color[]  rowColors       = wrapper.GetRowColors(row);
                double[] grayScaleValues = new double[rowColors.Length];
                for (int index = 0; index < rowColors.Length; index++)
                {
                    Color  color         = rowColors[index];
                    double grayIntensity = ColorWrapper.GetGrayIntensity(color);
                    grayScaleValues[index] = grayIntensity;
                }
                return(grayScaleValues);
            }
        }
예제 #23
0
        // this is a wrapper around GetObject designed to
        // reduce the boxing hit
        public Color GetColor(int key, out bool found)
        {
            object storedObject = GetObject(key, out found);

            if (found)
            {
                ColorWrapper wrapper = storedObject as ColorWrapper;

                if (wrapper != null)
                {
                    return(wrapper.Color);
                }
#if DEBUG
                else if (storedObject != null)
                {
                    Debug.Fail("Have non-null object that isnt a color wrapper stored in a color entry!\r\nDid someone SetObject instead of SetColor?");
                }
#endif
            }
            // we didnt actually find a non-null color wrapper.
            found = false;
            return(Color.Empty);
        }
예제 #24
0
        public void SetColor(int key, Color value)
        {
            bool   found;
            object storedObject = GetObject(key, out found);

            if (!found)
            {
                SetObject(key, new ColorWrapper(value));
            }
            else
            {
                ColorWrapper wrapper = storedObject as ColorWrapper;
                if (wrapper != null)
                {
                    // re-using the wrapper reduces the boxing hit.
                    wrapper.Color = value;
                }
                else
                {
                    Debug.Assert(storedObject == null, "object should either be null or ColorWrapper"); // could someone have SetObject to this key behind our backs?
                    SetObject(key, new ColorWrapper(value));
                }
            }
        }
예제 #25
0
        protected override bool Init(object controller, object binding, DefinitionFile definition)
        {
            if(!base.Init(controller, binding, definition))
            {
                return false;
            }

            DefinitionFileWithStyle file = new DefinitionFileWithStyle(definition, typeof(UiScrollBar));

            _grid = DefinitionResolver.GetShared<AutomataGrid>(Controller, Binding, file["AutomataGrid"], null);
            _editEnabled = DefinitionResolver.GetShared<bool>(Controller, Binding, file["EditEnabled"], true);

            _zoom = DefinitionResolver.GetShared<double>(Controller, Binding, file["Zoom"], 16);

            _colors = DefinitionResolver.Get<Color[]>(Controller, Binding, file["Colors"], null);
            _gridColor = DefinitionResolver.GetColorWrapper(Controller, Binding, file["GridColor"]);

            _stateToPaint = DefinitionResolver.GetShared<int>(Controller, Binding, file["StateToPaint"], 0);

            _calculatedForSize = new Point(_grid.Value.Width, _grid.Value.Height);

            return true;
        }
예제 #26
0
 public static bool Eval(string a, ColorWrapper aVal, string b, ColorWrapper bVal)
 {
     return(aVal != bVal);
 }
예제 #27
0
 public void Initialize()
 {
     colorWrapper = new ColorWrapper(Color.FromArgb(255, 100, 100, 100));
 }
예제 #28
0
 public static object Parse(string value, Type type)
 {
     if (type == typeof(System.Drawing.SizeF))
         return Parse(new System.Drawing.SizeF(0, 0), value);
     if (type == typeof(System.Drawing.PointF))
         return Parse(new System.Drawing.PointF(0, 0), value);
     if (type == typeof(System.Drawing.Color))
     {
         value = value.Replace("Color ", "");
         value = value.Trim(new char[] { '[', ']' });
         System.Drawing.Color c = System.Drawing.Color.FromName(value);
         if (c.IsKnownColor)
             return c;
         ColorWrapper color = new ColorWrapper();
         Parse(color, value);
         return color.Color;
     }
     return null;
 }
예제 #29
0
        protected virtual bool Init(object controller, object binding, DefinitionFile definition)
        {
            DefinitionFileWithStyle file = new DefinitionFileWithStyle(definition, typeof(UiView));

            Type controllerType = file["Controller"] as Type;

            _controller = controller as UiController;

            if (controllerType != null)
            {
                var newController = Activator.CreateInstance(controllerType) as UiController;

                if (newController != null)
                {
                    newController.Parent = _controller;
                    Controller           = newController;
                }
            }

            Binding = binding;

            object bindParameter = file["Binding"];

            if (bindParameter != null)
            {
                Object bind = DefinitionResolver.GetValueFromMethodOrField(Controller, binding, bindParameter);

                if (bind != null)
                {
                    Binding = bind;
                }
            }

            Id = DefinitionResolver.GetString(Controller, Binding, file["Id"]);

            if (file["Hidden"] != null && file["Visible"] == null)
            {
                _visiblityFlag   = DefinitionResolver.GetShared <bool>(Controller, Binding, file["Hidden"], false);
                _visibleIsHidden = true;
            }
            else
            {
                _visiblityFlag = DefinitionResolver.GetShared <bool>(Controller, Binding, file["Visible"], true);
            }

            Tag = DefinitionResolver.GetSharedString(Controller, Binding, file["Tag"]);

            Opacity = DefinitionResolver.GetShared <double>(Controller, Binding, file["Opacity"], 1);

            DisplayVisibility = Visible ? 1 : 0;

            _modal = DefinitionResolver.Get <bool>(Controller, Binding, file["Modal"], false);

            RegisterDelegate("ViewRemoved", file["ViewRemoved"]);
            RegisterDelegate("ViewAdded", file["ViewAdded"]);
            RegisterDelegate("ViewActivated", file["ViewActivated"]);
            RegisterDelegate("ViewDeactivated", file["ViewDeactivated"]);
            RegisterDelegate("ViewResized", file["ViewResized"]);

            _minWidth  = DefinitionResolver.Get <Length>(Controller, Binding, file["MinWidth"], Length.Zero);
            _minHeight = DefinitionResolver.Get <Length>(Controller, Binding, file["MinHeight"], Length.Zero);

            _showSpeed = (float)Math.Max(
                DefinitionResolver.Get <double>(Controller, Binding, file["ShowHideTime"], -1),
                DefinitionResolver.Get <double>(Controller, Binding, file["ShowTime"], -1));

            if (_showSpeed < 0)
            {
                _showSpeed = DefaultShowTime;
            }

            _showSpeed /= 1000.0f;

            _showSpeed = _showSpeed > 0 ? 1 / _showSpeed : float.MaxValue;

            _hideSpeed = (float)Math.Max(
                DefinitionResolver.Get <double>(Controller, Binding, file["ShowHideTime"], -1),
                DefinitionResolver.Get <double>(Controller, Binding, file["HideTime"], -1));

            if (_hideSpeed < 0)
            {
                _hideSpeed = DefaultHideTime;
            }

            _hideSpeed /= 1000.0f;

            _hideSpeed = _hideSpeed > 0 ? 1 / _hideSpeed : float.MaxValue;

            CreatePositionParameters(Controller, Binding, definition);

            DefinitionFile backgroundDrawable = file["BackgroundDrawable"] as DefinitionFile;

            Color defaultBackgroundColor = Color.Transparent;

            if (backgroundDrawable != null)
            {
                BackgroundDrawable = backgroundDrawable.CreateInstance(Controller, Binding) as IBackgroundDrawable;

                if (BackgroundDrawable != null)
                {
                    defaultBackgroundColor = Color.White;
                }
            }

            _backgroundColor = DefinitionResolver.GetColorWrapper(Controller, Binding, file["BackgroundColor"]) ?? new ColorWrapper(defaultBackgroundColor);

            DefinitionFile showTransitionEffectFile       = file["ShowTransitionEffect"] as DefinitionFile;
            DefinitionFile hideTransitionEffectFile       = file["HideTransitionEffect"] as DefinitionFile;
            DefinitionFile parentShowTransitionEffectFile = file["ParentShowTransitionEffect"] as DefinitionFile;
            DefinitionFile parentHideTransitionEffectFile = file["ParentHideTransitionEffect"] as DefinitionFile;

            if (showTransitionEffectFile != null)
            {
                _showTransitionEffect = showTransitionEffectFile.CreateInstance(Controller, Binding) as TransitionEffect;
            }

            if (hideTransitionEffectFile != null)
            {
                _hideTransitionEffect = hideTransitionEffectFile.CreateInstance(Controller, Binding) as TransitionEffect;
            }

            if (parentShowTransitionEffectFile != null)
            {
                _parentShowTransitionEffect = parentShowTransitionEffectFile.CreateInstance(Controller, Binding) as TransitionEffect;
            }

            if (parentHideTransitionEffectFile != null)
            {
                _parentHideTransitionEffect = parentHideTransitionEffectFile.CreateInstance(Controller, Binding) as TransitionEffect;
            }

            return(true);
        }
예제 #30
0
        protected override bool Init(object controller, object binding, DefinitionFile definition)
        {
            if (!base.Init(controller, binding, definition))
            {
                return(false);
            }

            DefinitionFileWithStyle file = new DefinitionFileWithStyle(definition, typeof(UiRichView));

            string defaultFont        = file["Font"] as string;
            int    defaultFontSize    = DefinitionResolver.Get <int>(Controller, Binding, file["FontSize"], 0);
            int    defaultFontSpacing = DefinitionResolver.Get <int>(Controller, Binding, file["FontSpacing"], int.MaxValue);

            for (int idx = 0; idx < (int)FontType.Count; ++idx)
            {
                FontType type    = (FontType)idx;
                string   font    = string.Format("{0}.Font", type);
                string   spacing = string.Format("{0}.FontSpacing", type);
                string   resize  = string.Format("{0}.FontResize", type);

                string fontName    = file[font] as string;
                int    fontSpacing = DefinitionResolver.Get <int>(Controller, Binding, file[spacing], defaultFontSpacing == int.MaxValue ? 0 : defaultFontSpacing);
                int    fontResize  = DefinitionResolver.Get <int>(Controller, Binding, file[resize], 0);

                if (fontName == null)
                {
                    fontName = defaultFont;
                }

                FontFace fontObj = FontManager.Instance.FindFont(fontName);

                if (defaultFont == null)
                {
                    defaultFont = fontName;
                }

                if (defaultFontSpacing == int.MaxValue)
                {
                    defaultFontSpacing = fontSpacing;
                }

                _fonts[idx] = new FontInfo()
                {
                    Font        = fontObj,
                    FontSpacing = (float)fontSpacing / 1000.0f,
                    FontResize  = fontResize
                };
            }

            for (int idx = 0; idx < (int)SizeType.Count; ++idx)
            {
                SizeType type = (SizeType)idx;
                string   size = string.Format("{0}.FontSize", type);

                int fontSize = DefinitionResolver.Get <int>(Controller, Binding, file[size], defaultFontSize);

                if (defaultFontSize == 0)
                {
                    defaultFontSize = fontSize;
                }

                _sizes[idx] = fontSize;
            }

            _bulletText = DefinitionResolver.GetString(Controller, Binding, file["BulletText"]) ?? "* ";
            //_bulletText = _bulletText.Replace(" ", ((char)0xa0).ToString());

            _horizontalRulerHeight = DefinitionResolver.Get <Length>(Controller, Binding, file["HorizontalRulerHeight"], new Length(0, 0, 1));
            _indentSize            = DefinitionResolver.Get <Length>(Controller, Binding, file["Indent"], Length.Zero);
            _paragraphSpacing      = DefinitionResolver.Get <Length>(Controller, Binding, file["ParagraphSpacing"], Length.Zero);
            _imageNotLoaded        = DefinitionResolver.Get <Texture2D>(Controller, Binding, file["ImageNotLoaded"], AdvancedDrawBatch.OnePixelWhiteTexture);
            _lineHeight            = (float)DefinitionResolver.Get <int>(Controller, Binding, file["LineHeight"], 100) / 100.0f;
            _justify = DefinitionResolver.Get <bool>(Controller, Binding, file["Justify"], false);

            _linkResolver = DefinitionResolver.Get <ILinkResolver>(Controller, Binding, file["LinkResolver"], this);

            _baseLineCorrection = DefinitionResolver.Get <bool>(Controller, Binding, file["EnableBaseLineCorrection"], false);

            Type processorType = file["Processor"] as Type;

            if (processorType != null)
            {
                _richProcessor = Activator.CreateInstance(processorType) as IRichProcessor;
            }

            Text = DefinitionResolver.GetString(Controller, Binding, file["Text"]);

            _colorNormal          = DefinitionResolver.GetColorWrapper(Controller, Binding, file["TextColor"]) ?? UiLabel.DefaultTextColor;
            _colorClickable       = DefinitionResolver.GetColorWrapper(Controller, Binding, file["LinkColor"]) ?? UiLabel.DefaultTextColor;
            _colorClickableActive = DefinitionResolver.GetColorWrapper(Controller, Binding, file["ActiveLinkColor"]) ?? _colorClickable;
            _colorRuler           = DefinitionResolver.GetColorWrapper(Controller, Binding, file["HorizontalRulerColor"]) ?? UiLabel.DefaultTextColor;

            HorizontalContentAlignment horzAlign = DefinitionResolver.Get <HorizontalContentAlignment>(Controller, Binding, file["HorizontalContentAlignment"], HorizontalContentAlignment.Left);
            VerticalContentAlignment   vertAlign = DefinitionResolver.Get <VerticalContentAlignment>(Controller, Binding, file["VerticalContentAlignment"], VerticalContentAlignment.Top);

            _textAlign = UiHelper.TextAlignFromContentAlignment(horzAlign, vertAlign);

            _clickMargin = DefinitionResolver.Get <Length>(Controller, Binding, file["ClickMargin"], Length.Zero);

            RegisterDelegate("UrlClick", file["UrlClick"]);

            EnabledGestures = (GestureType.Down | GestureType.Up | GestureType.Move | GestureType.Tap);

            return(true);
        }
예제 #31
0
        private void btnGraphFromImages_Click(object sender, EventArgs e)
        {
            string directoryPath = @"D:\Images\!";

            int x = 2690;
            int y = 1990;

            if (Directory.Exists(directoryPath))
            {
                string[]             files       = Directory.GetFiles(directoryPath);
                IEnumerable <string> sortedFiles = files.OrderBy(f => int.Parse(Path.GetFileNameWithoutExtension(f)));

                int n = 0;

                int minIntensity         = 255;
                int maxIntensity         = 0;
                List <ChartPoint> points = new List <ChartPoint>();

                foreach (string file in sortedFiles)
                {
                    using (Bitmap bitmap = new Bitmap(file))
                    {
                        System.Drawing.Color color = bitmap.GetPixel(x, y);
                        int intensity = ColorWrapper.GetGrayIntensity(color);
                        if (intensity < minIntensity)
                        {
                            minIntensity = intensity;
                        }
                        if (intensity > maxIntensity)
                        {
                            maxIntensity = intensity;
                        }

                        ChartPoint chartPoint = new ChartPoint(n, intensity);
                        points.Add(chartPoint);
                        n++;
                    }
                }

                Chart chart1 = new Chart()
                {
                    SeriesCollection = new List <ChartSeries>()
                    {
                        new ChartSeries()
                        {
                            Name            = "Grpah",
                            Type            = HoloCommon.Enumeration.Charting.ChartSeriesType.Linear,
                            ColorDescriptor = new ColorDescriptor(255, 0, 0),
                            Points          = points
                        }
                    }
                };

                MemoryWriter.Write <Chart>(chart1, new ChartSerialization());
                ProcessManager.RunProcess(@"D:\Projects\HoloApplication\Modules\ChartApp\ChartApp\bin\Release\ChartApp.exe", null, false, false);

                Thread.Sleep(2000);

                Interval <double>     startInterval  = new Interval <double>(minIntensity, maxIntensity);
                Interval <double>     finishInterval = new Interval <double>(-1, 1);
                RealIntervalTransform transform      = new RealIntervalTransform(startInterval, finishInterval);
                List <ChartPoint>     points2        = new List <ChartPoint>();
                foreach (ChartPoint p in points)
                {
                    double     newValue = transform.TransformToFinishIntervalValue(p.Y);
                    ChartPoint point    = new ChartPoint(p.X, newValue);
                    points2.Add(point);
                }

                Chart chart2 = new Chart()
                {
                    SeriesCollection = new List <ChartSeries>()
                    {
                        new ChartSeries()
                        {
                            Name            = "Grpah2",
                            Type            = HoloCommon.Enumeration.Charting.ChartSeriesType.Linear,
                            ColorDescriptor = new ColorDescriptor(0, 255, 0),
                            Points          = points2
                        }
                    }
                };

                MemoryWriter.Write <Chart>(chart2, new ChartSerialization());
                ProcessManager.RunProcess(@"D:\Projects\HoloApplication\Modules\ChartApp\ChartApp\bin\Release\ChartApp.exe", null, false, false);

                Thread.Sleep(2000);

                List <ChartPoint> points3 = new List <ChartPoint>();
                foreach (ChartPoint p in points2)
                {
                    double     newValue = Math.Acos(p.Y);
                    ChartPoint point    = new ChartPoint(p.X, newValue);
                    points3.Add(point);
                }

                Chart chart3 = new Chart()
                {
                    SeriesCollection = new List <ChartSeries>()
                    {
                        new ChartSeries()
                        {
                            Name            = "Grpah3",
                            Type            = HoloCommon.Enumeration.Charting.ChartSeriesType.Linear,
                            ColorDescriptor = new ColorDescriptor(0, 0, 0),
                            Points          = points3
                        }
                    }
                };

                MemoryWriter.Write <Chart>(chart3, new ChartSerialization());
                ProcessManager.RunProcess(@"D:\Projects\HoloApplication\Modules\ChartApp\ChartApp\bin\Release\ChartApp.exe", null, false, false);

                Thread.Sleep(2000);
            }
        }
예제 #32
0
    private void Awake()
    {
        colors    = new ColorWrapper[3];
        colors[0] = new ColorWrapper
        {
            id    = "red",
            color = new Color32(244, 67, 54, 255),
        };
        colors[1] = new ColorWrapper
        {
            id    = "green",
            color = new Color32(76, 175, 80, 255),
        };
        colors[2] = new ColorWrapper
        {
            id    = "blue",
            color = new Color32(33, 150, 243, 255),
        };

        int       order = Manager.currentLevel.order + (Manager.currentLevel.tier * 3);
        LevelData data  = levels[order];

        for (int i = 0; i < data.items.Length; i++)
        {
            Tile t = data.items[i];
            switch (t.tile)
            {
            case "c":
                GameObject cItem = Instantiate(Circle, Vector2.zero, Quaternion.identity, transform) as GameObject;
                cItem.GetComponent <RectTransform>().localPosition = new Vector2(-390 + ((i > 2 ? i + 1 : i) * 130), 0);
                for (int j = 0; j < colors.Length; j++)
                {
                    ColorWrapper cw = colors[j];
                    if (cw.id == t.color)
                    {
                        cItem.GetComponent <Image>().color = cw.color;
                    }
                }

                break;

            case "s":
                GameObject sItem = Instantiate(Square, Vector2.zero, Quaternion.identity, transform) as GameObject;
                sItem.GetComponent <RectTransform>().localPosition = new Vector2(-390 + ((i > 2 ? i + 1 : i) * 130), 0);
                for (int j = 0; j < colors.Length; j++)
                {
                    ColorWrapper cw = colors[j];
                    if (cw.id == t.color)
                    {
                        sItem.transform.GetChild(0).GetComponent <Image>().color = cw.color;
                    }
                }

                break;

            case "t":
                GameObject tItem = Instantiate(Triangle, Vector2.zero, Quaternion.identity, transform) as GameObject;
                tItem.GetComponent <RectTransform>().localPosition = new Vector2(-390 + ((i > 2 ? i + 1 : i) * 130), 0);
                for (int j = 0; j < colors.Length; j++)
                {
                    ColorWrapper cw = colors[j];
                    if (cw.id == t.color)
                    {
                        tItem.transform.GetChild(0).GetComponent <Image>().color = cw.color;
                    }
                }

                break;
            }
        }

        for (int i = 0; i < data.options.Length; i++)
        {
            Tile t = data.options[i];
            switch (t.tile)
            {
            case "c":
                GameObject cOption = Instantiate(Circle, Vector2.zero, Quaternion.identity, transform) as GameObject;
                cOption.GetComponent <RectTransform>().localPosition = new Vector2(-150 + (i * 150), -205);
                for (int j = 0; j < colors.Length; j++)
                {
                    ColorWrapper cw = colors[j];
                    if (cw.id == t.color)
                    {
                        cOption.GetComponent <Image>().color = cw.color;
                    }
                }


                cOption.AddComponent <Button>();
                Button c = cOption.GetComponent <Button>();
                c.onClick.AddListener(() => Answer(data.answer, cOption));

                break;

            case "s":
                GameObject sOption = Instantiate(Square, Vector2.zero, Quaternion.identity, transform) as GameObject;
                sOption.GetComponent <RectTransform>().localPosition = new Vector2(-150 + (i * 150), -205);
                for (int j = 0; j < colors.Length; j++)
                {
                    ColorWrapper cw = colors[j];
                    if (cw.id == t.color)
                    {
                        sOption.transform.GetChild(0).GetComponent <Image>().color = cw.color;
                    }
                }

                sOption.AddComponent <Button>();
                Button s = sOption.GetComponent <Button>();
                s.onClick.AddListener(() => Answer(data.answer, sOption));

                break;

            case "t":
                GameObject tOption = Instantiate(Triangle, Vector2.zero, Quaternion.identity, transform) as GameObject;
                tOption.GetComponent <RectTransform>().localPosition = new Vector2(-150 + (i * 150), -205);
                for (int j = 0; j < colors.Length; j++)
                {
                    ColorWrapper cw = colors[j];
                    if (cw.id == t.color)
                    {
                        tOption.transform.GetChild(0).GetComponent <Image>().color = cw.color;
                    }
                }

                tOption.AddComponent <Button>();
                Button tt = tOption.GetComponent <Button>();
                tt.onClick.AddListener(() => Answer(data.answer, tOption));

                break;

            default:
                GameObject dOption = Instantiate(Circle, Vector2.zero, Quaternion.identity, transform) as GameObject;
                dOption.GetComponent <RectTransform>().localPosition = new Vector2(-150 + (i * 150), -205);
                for (int j = 0; j < colors.Length; j++)
                {
                    ColorWrapper cw = colors[j];
                    if (cw.id == t.color)
                    {
                        dOption.GetComponent <Image>().color = cw.color;
                    }
                }

                Button dd = dOption.AddComponent <Button>() as Button;
                dd.onClick.AddListener(() => Answer(data.answer, dOption));

                break;
            }
        }
    }
예제 #33
0
        public WndAppearance(BaseObject obj, Vector2f pos)
            : base(obj, WndWidth, pos)
        {
            var wrapper = new ColorWrapper(() => obj.Color);

            var renderImg = new Image(WndWidth, SqSize + 2 * Margin, BackColor);

            var selector = new Canvas();

            selector.SizeLayout = new Layout2d(renderImg.Size.X, renderImg.Size.Y);
            selector.Clear(BackColor);

            Add(selector);

            Color  oldColor   = default;
            IntPtr oldPointer = default;

            var userChanging = false;

            var previewRect    = new VertexArray(PrimitiveType.Quads, 4);
            var previewOutline = new VertexArray(PrimitiveType.LineStrip, 5);

            Vector2f[] previewCorners =
            {
                new Vector2f(Margin + PreviewOffset,                Margin),
                new Vector2f(Margin + PreviewOffset + PreviewWidth, Margin),
                new Vector2f(Margin + PreviewOffset + PreviewWidth, Margin + SqSize),
                new Vector2f(Margin + PreviewOffset,                Margin + SqSize),
            };

            var hueSelector = new RectangleShape(new Vector2f(HueWidth, 4))
            {
                OutlineColor = SelectorOutline, OutlineThickness = 2f, FillColor = Color.Transparent,
                Origin       = new Vector2f(HueWidth / 2, 2)
            };

            var colorSelector = new RectangleShape(new Vector2f(8, 8))
            {
                OutlineColor = SelectorOutline, OutlineThickness = 2f, FillColor = Color.Transparent,
                Origin       = new Vector2f(4, 4)
            };

            wrapper.ValueChanged += delegate { UpdateSelector(); };

            void DrawSelector()
            {
                var tex = selector.RenderTexture();

                if (tex == null)
                {
                    return;
                }

                oldPointer = tex.CPointer;

                oldColor = wrapper.Value;

                const float fac = 1f / SqSize;

                selector.Clear(BackColor);

                for (uint y = 0; y < renderImg.Size.Y; y++)
                {
                    for (uint x = 0; x < renderImg.Size.X; x++)
                    {
                        renderImg.SetPixel(x, y, BackColor);
                    }
                }

                renderImg.Copy(HueImg, Margin, Margin);

                var hue = wrapper.H;

                for (uint y = 0; y < SqSize; y++)
                {
                    var v = y * fac;

                    for (uint x = 0; x < SqSize; x++)
                    {
                        var s = x * fac;

                        renderImg.SetPixel(Margin + Offset + x, Margin + y, new Hsva(hue, s, 1 - v, 1));
                    }
                }

                tex.Texture.Update(renderImg);

                hueSelector.Position = new Vector2f(
                    Margin + HueWidth / 2,
                    Margin + (float)((360 - wrapper.H) / HueFac));
                tex.Draw(hueSelector);

                colorSelector.Position = new Vector2f(
                    (float)(Margin + Offset + wrapper.S * SqSize),
                    (float)(Margin + wrapper.V * SqSize));
                tex.Draw(colorSelector);

                var col = wrapper.Value;

                previewRect[0] = new Vertex(previewCorners[0], col);
                previewRect[1] = new Vertex(previewCorners[1], col);
                previewRect[2] = new Vertex(previewCorners[2], col);
                previewRect[3] = new Vertex(previewCorners[3], col);
                tex.Draw(previewRect);

                col.A             = 255;
                previewOutline[0] = new Vertex(previewCorners[0], col);
                previewOutline[1] = new Vertex(previewCorners[1], col);
                previewOutline[2] = new Vertex(previewCorners[2], col);
                previewOutline[3] = new Vertex(previewCorners[3], col);
                previewOutline[4] = new Vertex(previewCorners[0], col);
                tex.Draw(previewOutline);
            }

            void UpdateSelector()
            {
                if (userChanging)
                {
                    return;
                }

                if (Mouse.IsButtonPressed(Mouse.Button.Left))
                {
                    userChanging = true;

                    var mpos = Mouse.GetPosition(Render.Window).F() - AbsolutePosition -
                               new Vector2f(0, Renderer.TitleBarHeight);
                    if (selector.MouseOnWidget(mpos))
                    {
                        var(x, y) = (mpos - selector.Position).I();
                        x        -= Margin;
                        y        -= Margin;
                        if (x >= 0 && x <= TotalSize && y >= 0 && y < 140)
                        {
                            if (x <= HueWidth)
                            {
                                wrapper.H = y * HueFac;
                            }
                            else if (x >= Offset)
                            {
                                wrapper.Value = new Color(renderImg.GetPixel(Margin + (uint)x, Margin + (uint)y))
                                {
                                    A = wrapper.A
                                }
                            }
                            ;
                        }
                    }

                    userChanging = false;
                }

                if (wrapper.Value != oldColor || selector.RenderTexture()?.CPointer != oldPointer)
                {
                    DrawSelector();
                }
            }

            Ui.Drawn += UpdateSelector;

            Closed += delegate { Ui.Drawn -= UpdateSelector; };

            Add(new NumberField <double>(0, 360, () => wrapper.H, unit: "°", inline: true, round: 0));
            Add(new NumberField <double>(0, 100, () => wrapper.S, unit: "%",
                                         factor: 100, inline: true, round: 0));
            Add(new NumberField <double>(0, 100, () => wrapper.V, unit: "%",
                                         factor: 100, inline: true, round: 0));

            Add(new NumberField <double>(0, 100, () => wrapper.Ad, unit: "%",
                                         factor: 100, inline: true, round: 0));

            Add(new NumberField <byte>(0, 255, () => wrapper.R, deci: false, inline: true));
            Add(new NumberField <byte>(0, 255, () => wrapper.G, deci: false, inline: true));
            Add(new NumberField <byte>(0, 255, () => wrapper.B, deci: false, inline: true));

            var btnRandom = new BitmapButton(L["Random color"])
            {
                Image = new Texture("icons/small/random.png")
            };

            btnRandom.Clicked += delegate
            {
                wrapper.Value = new Color(Palette.Default.ColorRange.RandomColor())
                {
                    A = wrapper.A
                };
            };

            Add(btnRandom);

            if (obj is PhysicalObject phy)
            {
                Add(new NumberField <float>(30, 2000, () => phy.ColorFilterWidth, log: true)
                {
                    RightValue = float.PositiveInfinity
                });

                var absorbanceImg = new Image(WndWidth, AbsorbHeight + 2 * Margin, BackColor);

                var absorbance = new Canvas();
                absorbance.SizeLayout = new Layout2d(absorbanceImg.Size.X, absorbanceImg.Size.Y);
                absorbance.Clear(BackColor);

                var txtA = new Text("A", Ui.FontMono, AbsorbTextSize)
                {
                    FillColor = Color.White, Scale = new Vector2f(1, -1)
                }.CenterOriginText();
                var txtH = new Text("H", Ui.FontMono, AbsorbTextSize)
                {
                    FillColor = Color.White, Scale = new Vector2f(1, -1)
                }.CenterOriginText();

                Add(absorbance);

                IntPtr oldPointerAbs = default;

                var oldCol   = new Hsva(-1, -1, -1, -1);
                var oldWidth = -1f;

                void DrawAbsorbance()
                {
                    var tex = absorbance.RenderTexture();

                    if (tex == null)
                    {
                        return;
                    }

                    oldCol        = wrapper.ValueHsv;
                    oldWidth      = phy.ColorFilterWidth;
                    oldPointerAbs = tex.CPointer;

                    absorbance.Clear(BackColor);

                    absorbanceImg.Copy(HueImgHoriz, Margin + AbsorbTextSize, Margin + AbsorbTextSize);

                    var hsva   = phy.ColorHsva;
                    var objHue = hsva.H;
                    var objSat = hsva.S;
                    var alphaD = 1 - hsva.A;

                    for (uint x = 0; x < HueWidthHoriz; x++)
                    {
                        var transmittance = (int)((1 - alphaD * Transmittance(x * HueFacHoriz, objHue, phy.ColorFilterWidth, objSat)) *
                                                  HueHeightHoriz) + 1;
                        for (uint y = 0; y < transmittance; y++)
                        {
                            absorbanceImg.SetPixel(Margin + AbsorbTextSize + x, Margin + AbsorbTextSize + y, BackColor);
                        }
                    }

                    tex.Texture.Update(absorbanceImg);

                    var hx = (float)(Margin + AbsorbTextSize + objHue / HueFacHoriz);
                    var ay = (float)(Margin - 1 + alphaD * HueHeightHoriz);

                    tex.Draw(new[]
                    {
                        new Vertex(new Vector2f(hx, Margin), Color.White),
                        new Vertex(new Vector2f(hx, Margin + HueHeightHoriz + 2), Color.White),

                        new Vertex(new Vector2f(Margin, ay), Color.White),
                        new Vertex(new Vector2f(WndWidth - Margin, ay), Color.White),
                    }, PrimitiveType.Lines);

                    txtA.Position = new Vector2f(Margin + AbsorbTextSize / 2, ay + AbsorbTextSize);
                    tex.Draw(txtA);
                    txtH.Position = new Vector2f(hx, AbsorbHeight - Margin + AbsorbTextSize / 2);
                    tex.Draw(txtH);
                }

                void UpdateAbsorbance()
                {
                    if (wrapper.ValueHsv != oldCol || phy.ColorFilterWidth != oldWidth ||
                        absorbance.RenderTexture()?.CPointer != oldPointerAbs)
                    {
                        DrawAbsorbance();
                    }
                }

                Ui.Drawn += UpdateAbsorbance;

                Closed += delegate { Ui.Drawn -= UpdateAbsorbance; };

                Add(new CheckField(() => phy.Appearance.Borders, onChanged: () => { phy.UpdateOutline(); }));
                Add(new CheckField(() => phy.Appearance.OpaqueBorders, onChanged: () => { phy.UpdateOutline(); }));

                if (phy is Circle circle)
                {
                    Add(new CheckField(() => circle.Appearance.DrawCircleCakes));
                    Add(new CheckField(() => circle.Appearance.Protractor));
                }

                if (phy is Box box)
                {
                    Add(new CheckField(() => box.Appearance.Ruler));
                }
            }

            Show();
        }
    }