Esempio n. 1
0
        private void OnLoadEvent(Dom.Event e)
        {
            BackgroundImage bgImage = RenderData.BGImage;

            if (bgImage == null)
            {
                return;
            }

            Image = bgImage.Image;

            if (Image == null)
            {
                return;
            }

            float width  = (float)Image.Width;
            float height = (float)Image.Height;

            // Figure out the aspect ratios:
            AspectRatio        = width / height;
            InverseAspectRatio = height / width;

            // Cache w/h:
            RawWidth  = width;
            RawHeight = height;

            // Request layout:
            bgImage.RequestLayout();
        }
Esempio n. 2
0
        public override void Apply(ComputedStyle style, Value value)
        {
            // Get the background image:
            BackgroundImage image = GetBackground(style);

            if (value == null)
            {
                image.ForcedIsolate = false;
            }
            else
            {
                image.ForcedIsolate = !value.Boolean;
            }

            // Request a layout:
            image.RequestLayout();
        }
        public override ApplyState Apply(ComputedStyle style, Value value)
        {
            // Get the background image:
            BackgroundImage image = GetBackground(style);

            if (value == null || value.Text == "" || value.Text == "repeat")
            {
                // Repeat by default:

                image.RepeatX = image.RepeatY = true;
            }
            else
            {
                if (value.Text == "repeat-x")
                {
                    // X only.

                    image.RepeatX = true;
                    image.RepeatY = false;
                }
                else if (value.Text == "repeat-y")
                {
                    // Y only.

                    image.RepeatY = true;
                    image.RepeatX = false;
                }
                else
                {
                    // No repeat.

                    image.RepeatX = false;
                    image.RepeatY = false;
                }
            }

            // Request a layout:
            image.RequestLayout();

            // Ok!
            return(ApplyState.Ok);
        }
Esempio n. 4
0
        public override ApplyState Apply(ComputedStyle style, Value value)
        {
            // Get the background image:
            BackgroundImage image = GetBackground(style);

            if (value == null)
            {
                image.ForcedIsolate = false;
            }
            else
            {
                image.ForcedIsolate = !value.GetBoolean(style.RenderData, this);
            }

            // Request a layout:
            image.RequestLayout();

            // Ok!
            return(ApplyState.Ok);
        }
        public override ApplyState Apply(ComputedStyle style, Value value)
        {
            // Get the background image:
            BackgroundImage image = GetBackground(style);

            Value offsetX = null;
            Value offsetY = null;
            float xOrigin = 0f;
            float yOrigin = 0f;

            if (value != null)
            {
                // Set true when center has been handled once before.
                bool center = false;
                bool xAxis  = true;

                // Get the inner value count:
                int count = value.Count;

                if (count == 1 || value is CssFunction)
                {
                    if (value.Type == ValueType.Text)
                    {
                        string text = value.Text;

                        // Occurs twice:
                        GetOrigin(text, ref xOrigin, ref yOrigin, ref center, ref xAxis);
                        GetOrigin(text, ref xOrigin, ref yOrigin, ref center, ref xAxis);
                    }
                    else
                    {
                        offsetX = offsetY = value;
                    }
                }
                else
                {
                    // Loops for e.g. right 10% top 5%
                    for (int i = 0; i < count; i++)
                    {
                        // Grab the inner value:
                        Value innerValue = value[i];

                        // Is it text?
                        if (innerValue.Type == ValueType.Text)
                        {
                            // Yep!
                            GetOrigin(innerValue.Text, ref xOrigin, ref yOrigin, ref center, ref xAxis);
                        }
                        else
                        {
                            // It's a %/ px/ some other fixed unit.
                            if (xAxis)
                            {
                                xAxis   = false;
                                offsetX = innerValue;
                            }
                            else
                            {
                                offsetY = innerValue;
                            }
                        }
                    }
                }
            }

            image.OffsetOriginX = xOrigin;
            image.OffsetOriginY = yOrigin;
            image.OffsetX       = offsetX;
            image.OffsetY       = offsetY;

            // Request a layout:
            image.RequestLayout();

            // Ok!
            return(ApplyState.Ok);
        }
        public override void Apply(ComputedStyle style, Value value)
        {
            // Get the background image:
            BackgroundImage image = GetBackground(style);

            if (value != null && value.InnerValues != null)
            {
                bool  x       = true;
                bool  centerX = true;
                Value offsetX = null;
                Value offsetY = null;

                // Get the inner value count:
                int count = value.InnerValues.Length;

                // Loops for e.g. right 10% top 5%
                for (int i = 0; i < count; i++)
                {
                    // Grab the inner value:
                    Value innerValue = value.InnerValues[i];

                    // Is it text?
                    if (innerValue.Type == ValueType.Text)
                    {
                        // Yep!
                        switch (innerValue.Text)
                        {
                        case "top":
                            // Ignore this:
                            offsetY = null;
                            break;

                        case "right":

                            // Set to 100%:
                            innerValue.SetPercent(1f);
                            offsetX = innerValue;

                            break;

                        case "bottom":

                            // Set to 100%:
                            innerValue.SetPercent(1f);
                            offsetY = innerValue;

                            break;

                        case "left":
                            // Ignore this:
                            offsetX = null;
                            break;

                        case "center":

                            // Set to 50%:
                            innerValue.SetPercent(0.5f);

                            if (centerX)
                            {
                                centerX = false;
                                offsetX = innerValue;
                            }
                            else
                            {
                                offsetY = innerValue;
                            }

                            break;
                        }
                    }
                    else if (x)
                    {
                        x = false;

                        if (offsetX == null)
                        {
                            offsetX = innerValue;
                        }
                        else
                        {
                            // E.g. right 5%
                            offsetX.Offset(innerValue);
                        }
                    }
                    else
                    {
                        if (offsetY == null)
                        {
                            offsetY = innerValue;
                        }
                        else
                        {
                            offsetY.Offset(innerValue);
                        }
                    }
                }

                // If either is equiv of zero, ignore it.
                if (offsetX != null && (offsetX.PX != 0 || offsetX.Single != 0f))
                {
                    image.OffsetX = offsetX;
                }
                else
                {
                    image.OffsetX = null;
                }

                if (offsetY != null && (offsetY.PX != 0 || offsetY.Single != 0f))
                {
                    image.OffsetY = offsetY;
                }
                else
                {
                    image.OffsetY = null;
                }
            }
            else
            {
                image.OffsetX = null;
                image.OffsetY = null;
            }

            // Request a layout:
            image.RequestLayout();
        }