void DrawBackground(Canvas canvas, int width, int height, bool pressed)
		{
			var paint = new Paint { AntiAlias = true };
			var path = new APath();

			float borderRadius = ConvertCornerRadiusToPixels();

			RectF rect = new RectF(0, 0, width, height);

			rect.Inset(PaddingLeft, PaddingTop);

			path.AddRoundRect(rect, borderRadius, borderRadius, APath.Direction.Cw);

			paint.Color = pressed ? PressedBackgroundColor.ToAndroid() : BackgroundColor.ToAndroid();
			paint.SetStyle(Paint.Style.Fill);
			paint.SetShadowLayer(_shadowRadius, _shadowDx, _shadowDy, _shadowColor);

			if (BorderElement.IsBackgroundSet())
			{
				Brush background = BorderElement.Background;
				paint.UpdateBackground(background, height, width);
			}

			canvas.DrawPath(path, paint);
		}
示例#2
0
        public IElement Create()
        {
            var label = new LabelElement("Test");

            var align = new AlignmentElement(label)
            {
                VerticalAlignment = Alignment.Last, HorizontalAlignment = Alignment.Last
            };

            var border = new BorderElement(align)
            {
                Border = BorderStyle.SingleLine
            };

            var size = new SizeElement(border)
            {
                Size = new BoxConstraint(9, int.MaxValue, 5, int.MaxValue)
            };

            var style = new StyleElement(size)
            {
                Style = new Style()
                {
                    Background = Color.BurlyWood, Foreground = Color.Black
                }
            };

            var label2  = new LabelElement("sup");
            var border2 = new BorderElement(label2)
            {
                Border = BorderStyle.DoubleLine
            };
            var align2 = new AlignmentElement(border2)
            {
                VerticalAlignment = Alignment.Middle, HorizontalAlignment = Alignment.Last
            };

            var stack = new FlexLayoutElement(Axis.Vertical, new IElement[]
            {
                style,
                align2
            });

            var stack2 = new FlexLayoutElement(Axis.Horizontal, new IElement[]
            {
                new AlignmentElement(new LabelElement("hi"))
                {
                    HorizontalAlignment = Alignment.Middle, VerticalAlignment = Alignment.Middle
                },
                new LabelElement("hib"),
                stack
            })
            {
                ItemSpacing = FlexSpacing.Evenly
            };

            return(stack2);
        }
		float ConvertCornerRadiusToPixels()
		{
			int cornerRadius = DefaultCornerRadius;

			if (BorderElement.IsCornerRadiusSet() && BorderElement.CornerRadius != (int)BorderElement.CornerRadiusDefaultValue)
				cornerRadius = BorderElement.CornerRadius;

			return _convertToPixels(cornerRadius);
		}
示例#4
0
        /// <summary>
        /// Disposes the control.
        /// </summary>
        /// <param name="disposing">Whether Dispose has been called.</param>
        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);

            if (disposing)
            {
                this.skinElement   = null;
                this.borderElement = null;
            }
        }
示例#5
0
        public void LoadBorders()
        {
            Debug.WriteLine("Loading borders");
            var selected = ConfigIni.SelectedBorders.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);

            Directory.CreateDirectory(BorderElement.BackgroundsDirectory);
            var borderDirs = Directory.GetDirectories(BorderElement.BackgroundsDirectory);
            var borders    = new List <BorderElement>();

            foreach (var borderDir in borderDirs)
            {
                try
                {
                    // Removing empty directories without errors
                    try
                    {
                        var border = BorderElement.FromDirectory(borderDir);
                        borders.Add((BorderElement)border);
                    }
                    catch (FileNotFoundException ex) // Remove bad directories if any
                    {
                        Debug.WriteLine(ex.Message + ex.StackTrace);
                        Directory.Delete(borderDir, true);
                    }
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message + ex.StackTrace);
                    MessageBox.Show(this, ex.Message, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    continue;
                }
            }

            var bordersSorted = borders.OrderBy(o => o.Name);

            listViewBorders.Items.Clear();
            var listViewItem = new ListViewItem("Default borders");// Resources.Default30games);

            listViewItem.Tag     = "default";
            listViewItem.Checked = selected.Contains("default");
            listViewBorders.Items.Add(listViewItem);
            foreach (var border in bordersSorted)
            {
                listViewItem         = new ListViewItem(border.Name);
                listViewItem.Tag     = border;
                listViewItem.Checked = selected.Contains(border.Name);
                listViewBorders.Items.Add(listViewItem);
            }

            /*
             * RecalculateSelectedGames();*/
            ShowSelected();
        }
示例#6
0
        public void ShowSelected()
        {
            object selected    = null;
            var    selectedAll = listViewBorders.SelectedItems;

            if (selectedAll.Count == 1)
            {
                selected = selectedAll[0].Tag;
            }
            if (selected == null)
            {
                groupBoxDefaultBorders.Visible = false;
                groupBoxOptions.Visible        = true;
                groupBoxOptions.Enabled        = false;
                textBoxName.Text    = "";
                pictureBoxArt.Image = null;
            }
            else if (!(selected is BorderElement))
            {
                groupBoxDefaultBorders.Visible = true;
                groupBoxOptions.Visible        = false;
                groupBoxDefaultBorders.Enabled = listViewBorders.CheckedIndices.Contains(0);
            }
            else
            {
                var app = selected as BorderElement;
                groupBoxDefaultBorders.Visible = false;
                groupBoxOptions.Visible        = true;
                textBoxName.Text = app.Name;
                if (File.Exists(app.IconPath))
                {
                    pictureBoxArt.Image = BorderElement.LoadBitmap(app.IconPath);
                }
                else
                {
                    pictureBoxArt.Image = null;
                }
                groupBoxOptions.Enabled = true;
            }
        }
示例#7
0
        private void AddBorderZip(string[] files)
        {
            foreach (var file in files)
            {
                var ext      = Path.GetExtension(file).ToLower();
                var basename = Path.GetFileNameWithoutExtension(file);
                if (ext == ".7z" || ext == ".zip" || ext == ".rar")
                {
                    SevenZipExtractor.SetLibraryPath(Path.Combine(Program.BaseDirectoryInternal, IntPtr.Size == 8 ? @"tools\7z64.dll" : @"tools\7z.dll"));
                    using (var szExtractor = new SevenZipExtractor(file))
                    {
                        szExtractor.PreserveDirectoryStructure = false;
                        var           filesInArchive     = new List <string>();
                        var           gameFilesInArchive = new List <string>();
                        List <string> lfiles             = generateFileList(basename);
                        int           lcount             = 0;
                        foreach (var f in szExtractor.ArchiveFileNames)
                        {
                            if (lfiles.Contains(f))
                            {
                                lcount++;
                            }
                            else
                            {
                                foreach (var ff in lfiles)
                                {
                                    if (f.EndsWith(ff))
                                    {
                                        lcount++;
                                    }
                                }
                            }
                            filesInArchive.Add(f);
                        }
                        if (lcount == lfiles.Count)
                        {
                            string tmp = Path.Combine(BorderElement.BackgroundsDirectory, basename);
                            Directory.CreateDirectory(tmp);
                            szExtractor.ExtractArchive(tmp);

                            BorderElement border = new BorderElement(tmp);
                            bool          found  = false;
                            foreach (var i in listViewBorders.Items)
                            {
                                if (((ListViewItem)(i)).Text == border.Name)
                                {
                                    found = true;
                                }
                            }
                            if (!found)
                            {
                                ListViewItem listViewItem = new ListViewItem(border.Name);
                                listViewItem.Tag     = border;
                                listViewItem.Checked = true;
                                listViewBorders.Items.Add(listViewItem);
                            }
                        }
                    }
                }
            }
        }
示例#8
0
 public virtual void Render(Renderer renderer)
 {
     BorderElement.Render(renderer);
 }