Работа с цветом. Часть 2. Плашечные цвета (Spots)

Для того, чтобы научится эффективно управлять (создавать/изменять/удалять) цветовыми значениями векторных объектов в Adobe Illustrator с помощью скриптов, необходимо для начала, хорошо представлять как устроена работа с цветом в пользовательском интерфейсе Illustrator. Понимание этих основ избавит от нелепых и грубых ошибок при работе с цветом в ваших скриптах.

Создание spot-цвета в пользовательском интерфейсе Illustrator

Алгоритм создания spot-цвета в Illustrator, как правило, следующий:

color script model

Основные параметры – это Swatch Name и Color Type. Выбор Spot Color в списке Color Type как раз и создает spot-цвет, который затем появляется на палитре Swatches.

color script model

Создание spot-цвета с помощью скрипта

Чтобы программно сделать цвет spot, необходимо выполнить, в сущности, те же действия, что и с помощью интерфейса:

  1. Создать объект CMYKColor и задать его параметры
  2. Создать объект Spot и задать его параметры
  3. Создать объект SpotColor и присвоить его свойству spot параметры объекта Spot

Единственное отличие от первого алгоритма в том, что вместо Swatch здесь будет Spot. Я уже рассказывал в предыдущей статье, почему Swatch нельзя рассматривать просто как цвет.

Spot

Приведу немного измененный пример кода из документации, который прекрасно демонстрирует этапы создания spot-цвета прямо по пунктам вышеприведенного списка.

// Creates a new spot color in the current document, then applies an 80% tint to the color
if (app.documents.length > 0 ){
  var doc = app.activeDocument;

  // Define the new color value
  var newColor = new CMYKColor();
  newColor.cyan = 35;
  newColor.magenta = 0;
  newColor.yellow = 50;
  newColor.black = 0;

  // Create the new spot
  var newSpot = doc.spots.add();

  // Define a new SpotColor with an 80% tint
  // of the new Spot's color. The spot color can then
  // be applied to an art item like any other color.
  newSpot.name = "Pea-Green";
  newSpot.colorType = ColorModel.SPOT;
  newSpot.color = newColor;
  var newSpotColor = new SpotColor();
  newSpotColor.spot = newSpot;
  newSpotColor.tint = 80;
}

Пункт 1. Создается объект CMYKColor со ссылкой на него в переменной newColor и задаются параметры его свойств.

var newColor = new CMYKColor();
newColor.cyan = 35;
newColor.magenta = 0;
newColor.yellow = 50;
newColor.black = 0;

Пункт 2. Создается объект Spot с помощью метода add() объекта Spots

var newSpot = doc.spots.add();

и присваиваются значения его свойствам: свойству name – имя spot-цвета, свойству colorType – значение константы ColorModel (в нашем случае, это значение будет SPOT), а свойству color – значение переменной newColor, т.е. созданный в предыдущем пункте цвет в модели CMYK.

newSpot.name = "Pea-Green";
newSpot.colorType = ColorModel.SPOT;
newSpot.color = newColor;

Пункт 3. Создается новый объект SpotColor и ссылка на него в переменной newSpotColor. Его свойству spot присваивается объект Spot, хранящийся в переменной newSpot, а свойству tint – значение 80.

var newSpotColor = new SpotColor();
newSpotColor.spot = newSpot;
newSpotColor.tint = 80;

Cвойство tint – это оттенок spot-цвета. При создании объекта SpotColor этому свойству присваивается значение 100. Если не задавать tint явно, то ему будет присвоено значение по умолчанию. Другими словами, если не писать следующую строку скрипта,

newSpotColor.tint = 80;

то оттенок будет 100%. Однако, рекомендую задавать это свойство явно.

Таким образом с помощью скрипта создается spot-цвет, который и появляется в виде образца Swatch в палитре Swatches.

color script model

Остается только небольшой вопрос, как применить spot-цвет к векторному объекту? К примеру, так. Здесь myPathItem – это указатель на векторный контур.

myPathItem.filled = true;
myPathItem.fillColor = newSpotColor;

Ко всему сказанному, можно добавить, что цвет spot-объекта (свойство color объекта Spot) может быть задан не только цветовой моделью CMYK, но также и RGB.

Spots

Объект Spots – это коллекция (набор) всех Spot-объектов в документе Illustrator. Мы уже использовали метод add() этого объекта для создания нового Spot. У объекта Spots имеются также другие свойства и методы. Рассмотрим некоторые из них.

Свойство length показывает сколько Spot-объектов в документе.

Метод getByName() позволяет получить указатель на конкретный Spot по его имени.

Метод removeAll() удаляет все элементы коллекции. Следующий пример из документации демонстрирует это.

// Deletes all spots colors from the current document
if ( app.documents.length > 0 ) {
var spotCount = app.activeDocument.spots.length;
  if (spotCount > 0) {
    app.activeDocument.spots.removeAll();
  }
}

СтатьиСледующаяПредыдущая