private LayoutScore ComputeScore(Size desiredSize, Size availableSize, string originalText, string formattedText) { if ((originalText == "" || originalText == null) && !this.ScoreIfEmpty) { return(LayoutScore.Zero); } bool cropped = (desiredSize.Width > availableSize.Width || desiredSize.Height > availableSize.Height); int numLineWraps = this.countLinewraps(formattedText); if (cropped) { if (this.ScoreIfCropped) { double desiredArea = desiredSize.Width * desiredSize.Height; double availableArea = availableSize.Width * availableSize.Height; return(this.BonusScore.Times(availableArea / desiredArea) .Plus(LayoutScore.Get_CutOff_LayoutScore(1)) .Plus(LayoutScore.Get_UnCentered_LayoutScore(numLineWraps))); } else { return(LayoutScore.Get_CutOff_LayoutScore(1)); } } return(new LayoutScore(this.BonusScore).Plus(LayoutScore.Get_UnCentered_LayoutScore(numLineWraps))); }
public LeafLayout(View view, LayoutDimensions desiredDimensions) { this.view = view; List <LayoutDimensions> dimensionOptions = new List <LayoutDimensions>(); dimensionOptions.Add(desiredDimensions); dimensionOptions.Add(new LayoutDimensions(0, 0, LayoutScore.Get_CutOff_LayoutScore(1))); this.dimensionOptions = dimensionOptions; }
private void Initialize(Button button, double fontSize = -1, bool includeBevel = true, bool allowCropping = false, bool scoreIfEmpty = false, bool allowSplittingWords = false) { bool isButtonColorSet = button.BackgroundColor.A > 0; LayoutChoice_Set sublayout; this.buttonBackground = new ContentView(); ButtonConfigurer buttonConfigurer = new ButtonConfigurer(button, this.buttonBackground); if (fontSize > 0) { if (allowCropping) { sublayout = TextLayout.New_Croppable(buttonConfigurer, fontSize, scoreIfEmpty); } else { sublayout = new TextLayout(buttonConfigurer, fontSize, allowSplittingWords, scoreIfEmpty); } } else { List <LayoutChoice_Set> sublayoutOptions = new List <LayoutChoice_Set>(3); if (allowCropping) { sublayoutOptions.Add(TextLayout.New_Croppable(buttonConfigurer, 30, scoreIfEmpty)); sublayoutOptions.Add(TextLayout.New_Croppable(buttonConfigurer, 16, scoreIfEmpty)); sublayoutOptions.Add(TextLayout.New_Croppable(buttonConfigurer, 12, scoreIfEmpty)); } else { sublayoutOptions.Add(new TextLayout(buttonConfigurer, 30, allowSplittingWords, scoreIfEmpty)); sublayoutOptions.Add(new TextLayout(buttonConfigurer, 16, allowSplittingWords, scoreIfEmpty)); sublayoutOptions.Add(new TextLayout(buttonConfigurer, 12, allowSplittingWords, scoreIfEmpty)); } LayoutUnion layoutUnion = new LayoutUnion(sublayoutOptions); sublayout = layoutUnion; } // add a view behind the button to change its normal background color without changing its color when selected ContainerLayout backgroundLayout = new ContainerLayout(buttonBackground, sublayout, false); if (includeBevel) { buttonBackground.BackgroundColor = Color.Black; // add a small border, so that it's easy to see where the buttons end Thickness innerBevelThickness = new Thickness(1); ContentView insideBevel = new ContentView(); insideBevel.Padding = innerBevelThickness; //insideBevel.BackgroundColor = Color.DarkGray;// Color.FromRgb(0.4, 0.4, 0.4); buttonConfigurer.InnerBevel = insideBevel; ContainerLayout middleLayout = new MustBorderLayout(insideBevel, backgroundLayout, innerBevelThickness, false); // add a bevel to the border Thickness outerBevelThickness = new Thickness(1); ContentView outsideBevel = new ContentView(); outsideBevel.Padding = outerBevelThickness; //outsideBevel.BackgroundColor = Color.LightGray;// Color.FromRgb(0.63, 0.63, 0.63); buttonConfigurer.OuterBevel = outsideBevel; ContainerLayout outsideLayout = new MustBorderLayout(outsideBevel, middleLayout, outerBevelThickness, false); // add some extra space around it Thickness spacingThickness = new Thickness(1); ContentView spacing = new ContentView(); spacing.Padding = spacingThickness; spacing.BackgroundColor = Color.FromRgba(0, 0, 0, 0); ContainerLayout spacingLayout = new MustBorderLayout(spacing, outsideLayout, spacingThickness, false); this.Set_LayoutChoices(new List <LayoutChoice_Set>() { spacingLayout, new ScoreShifted_Layout(null, LayoutScore.Get_CutOff_LayoutScore(1)) }); button.TextColor = Color.LightGray; } else { if (!isButtonColorSet) { buttonBackground.BackgroundColor = Color.White; button.TextColor = Color.Black; } this.Set_LayoutChoices(new List <LayoutChoice_Set>() { backgroundLayout }); } Effect effect = Effect.Resolve("VisiPlacement.ButtonEffect"); button.Effects.Add(effect); this.buttonConfigurer = buttonConfigurer; }