コード例 #1
0
        public corel.Color Convert(corel.Color color)
        {
            string colorName;

            if (color.Type == cdrColorType.cdrColorSpot)
            {
                colorName = color.Name;

                // если спот из таблиц пантонов
                if (colorName.Contains("PANTONE"))
                {
                    colorName = colorName.Replace(" 2X", "");
                    colorName = colorName.Substring(0, colorName.LastIndexOf(' '));

                    //разные названия TransWhite
                    if (!colorName.Contains("Trans. White"))
                    {
                        colorName = colorName + " C";
                    }

                    // исправление неправильного названия в PANTONE MATCHING SYSTEM Coated - Corel 10
                    if (colorName == "PANTONE Relfex Blue C")
                    {
                        colorName = "PANTONE Reflex Blue C";
                    }
                }
            }

            else
            {
                colorName = color.HexValue.ToString();
            }

            // поиск в найденных цветах
            if (foundColors.ContainsKey(colorName))
            {
                corel.Color c = foundColors[colorName];
                // если спот сохранить тинт
                if (color.Type == cdrColorType.cdrColorSpot && color.IsTintable && c.IsSpot && c.IsTintable)
                {
                    c.Tint = color.Tint;
                    return(c);
                }
                else
                {
                    return(c);
                }
            }

            // поиск в палитрах корела если палитра Locked
            if (color.Type == cdrColorType.cdrColorSpot)
            {
                foreach (string id in palettesID)
                {
                    if (color.PaletteIdentifier != id)
                    {
                        corel.Palette castPalette = corelApp.PaletteManager.GetPalette(id);
                        int           colorID     = castPalette.FindColor(colorName);
                        if (colorID != 0)
                        {
                            corel.Color c = new Color();
                            c.PaletteAssign(castPalette.Identifier, colorID);
                            foundColors.Add(c.Name.ToString(), c);
                            c.Tint = color.Tint;
                            return(c);
                        }
                    }
                    else
                    {
                        return(color);
                    }
                }

                // если нигде нет
                if (MessageBox.Show("В палитрах ненайден цвет:\n" + color.Name + "\n" + "Заменить вручную?", "Ненайден цвет", MessageBoxButton.YesNo, MessageBoxImage.Information) == MessageBoxResult.Yes)
                {
                    corel.Color c = new corel.Color();
                    if (c.UserAssignEx())
                    {
                        // если спот учитывать тинт
                        foundColors.Add(colorName, c);
                        if (c.IsSpot && c.IsTintable)
                        {
                            c.Tint = color.Tint;
                        }
                        return(c);
                    }
                }
                else
                {
                    foundColors.Add(colorName, color);
                    return(color);
                }
            }

            else
            {
                corel.Color c = new corel.Color();
                c.CopyAssign(color);
                c.ConvertToPalette("6e75244b-d853-4d2e-bea2-a5da3f195d08");
                foundColors.Add(colorName, c);
                return(c);
            }

            return(color);
        }