public static Color GetRenderingColor(EdgeColorType edgeColorType, Color color)
{
Debug.Assert(color != Color.Empty);
if (edgeColorType == EdgeColorType.Contrast || edgeColorType == EdgeColorType.EnhancedContrast)
edgeColorType = GetContrastColorType(color, edgeColorType);
float correctionFactor = 0;
switch (edgeColorType) {
case EdgeColorType.SystemColor:
return SystemColors.WindowText;
case EdgeColorType.SurfaceColor:
return color;
case EdgeColorType.FullContrast:
return GetFullContrastColor(color);
case EdgeColorType.DarkerThanSurface:
correctionFactor = -ColorUtil.BrightnessEnhancementFactor1;
break;
case EdgeColorType.DarkerDarkerThanSurface:
correctionFactor = -ColorUtil.BrightnessEnhancementFactor2;
break;
case EdgeColorType.LighterThanSurface:
correctionFactor = +ColorUtil.BrightnessEnhancementFactor1;
break;
case EdgeColorType.LighterLighterThanSurface:
correctionFactor = +ColorUtil.BrightnessEnhancementFactor2;
break;
case EdgeColorType.NoEdge:
return System.Drawing.Color.Transparent;
}
return ColorUtil.CreateColorWithCorrectedLightness(color, correctionFactor);
}