private bool BlockIsColorReplacementCandidate(ReplaceColorsParameterSet replaceColorsParameterSet, ItemFilterBlock block) { var textColorItem = block.HasBlockItemOfType <TextColorBlockItem>() ? block.BlockItems.OfType <TextColorBlockItem>().First() : null; var backgroundColorItem = block.HasBlockItemOfType <BackgroundColorBlockItem>() ? block.BlockItems.OfType <BackgroundColorBlockItem>().First() : null; var borderColorItem = block.HasBlockItemOfType <BorderColorBlockItem>() ? block.BlockItems.OfType <BorderColorBlockItem>().First() : null; // If we don't have all of the things we want to replace, then we aren't a candidate for replacing those things. if ((textColorItem == null && replaceColorsParameterSet.ReplaceTextColor) || (backgroundColorItem == null && replaceColorsParameterSet.ReplaceBackgroundColor) || (borderColorItem == null && replaceColorsParameterSet.ReplaceBorderColor)) { return(false); } if ((replaceColorsParameterSet.ReplaceTextColor && textColorItem.Color != replaceColorsParameterSet.OldTextColor) || (replaceColorsParameterSet.ReplaceBackgroundColor && backgroundColorItem.Color != replaceColorsParameterSet.OldBackgroundColor) || (replaceColorsParameterSet.ReplaceBorderColor && borderColorItem.Color != replaceColorsParameterSet.OldBorderColor)) { return(false); } return(true); }
public void ReplaceColors(ReplaceColorsParameterSet replaceColorsParameterSet) { foreach ( var block in ItemFilterBlocks.Where(b => BlockIsColorReplacementCandidate(replaceColorsParameterSet, b))) { if (replaceColorsParameterSet.ReplaceTextColor) { var textColorBlockItem = block.BlockItems.OfType <TextColorBlockItem>().First(); textColorBlockItem.Color = replaceColorsParameterSet.NewTextColor; } if (replaceColorsParameterSet.ReplaceBackgroundColor) { var backgroundColorBlockItem = block.BlockItems.OfType <BackgroundColorBlockItem>().First(); backgroundColorBlockItem.Color = replaceColorsParameterSet.NewBackgroundColor; } if (replaceColorsParameterSet.ReplaceBorderColor) { var borderColorBlockItem = block.BlockItems.OfType <BorderColorBlockItem>().First(); borderColorBlockItem.Color = replaceColorsParameterSet.NewBorderColor; } } }