Я хотел бы написать сценарий для Photoshop CS2 в js, который окрашивает sql ключевые слова внутри TextLayer, например, синим, а не ключевые слова - черным. Я знаю, что существует поддержка нескольких цветов в одном TextLayer в gui, но в документации для js ничего не упоминается о нескольких цветах для ArtLayer, а также не упоминается в документации объекта TextItem. Я изменил цвет первой буквы в Textlayer, и возвращается только ее цвет. Вот мой код:
// enable double clicking from the Macintosh Finder or the Windows Explorer
#target photoshop
// in case we double clicked the file
app.bringToFront();
var doc = app.activeDocument;
var layers = collectAllLayers(doc);
// save all layers
function collectAllLayers (doc){
var allLayers = [];
for (var m = 0; m < doc.layers.length; m++){
var theLayer = doc.layers[m];
if (theLayer.typename === "ArtLayer"){
allLayers.push(theLayer);
}else{
collectAllLayers(theLayer, allLayers);
}
}
return allLayers;
}
// only use textlayers that contain this string
const sqlMarkerText = "code:sql";
var textLayers = [];
// save all textlayers containing marker
for(var i = 0; i<layers.length; i++){
var layer = layers[i];
if(layer.kind == LayerKind.TEXT && layer.name.indexOf(sqlMarkerText) != -1)
textLayers.push(layer);
}
После этого я использую следующий метод для получения цвета:
// display color for layer
for(var i = 0; i<textLayers.length; i++){
var layer = layers[i];
alert(layer.textItem.color.rgb.hexValue);
}
color возвращает только SolidColor. Как показано на изображении ниже, один TextLayer имеет несколько цветов, но возвращает только КРАСНЫЙ. только один TextLayer Но я бы хотел иметь список SolidColor или другой способ получить цвета :) Есть ли способ получить все цвета из одного текстового слоя ?