/**********************************************************
 
MakeCoolGradient.jsx

DESCRIPTION

このスクリプトは、新しいグラデーション「CoolGradient」を作成し、
スウォッチパネルに追加した後、ドキュメント内のすべてのパスアイテムに適用します。

**********************************************************/

// ドキュメントが開いているか確認
if (app.documents.length > 0) {
    var doc = app.activeDocument;
    var docPathItems = doc.pathItems;
    
    if (docPathItems.length > 0) {
        // 既存のグラデーションをチェック
        var gradientExists = false;
        var myGradients = doc.gradients;
        var numberOfGradients = myGradients.length;
        
        for (var i = 0; i < numberOfGradients; i++) {
            if (myGradients[i].name == "CoolGradient") {
                gradientExists = true;
                break;
            }
        }

        if (!gradientExists) {
            // 新しいグラデーションを作成
            var myGradient = createCoolGradient();

            // すべてのパスアイテムにグラデーションを適用
            // for (var i = 0; i < docPathItems.length; i++) {
            //     docPathItems[i].filled = true;
            //     docPathItems[i].fillColor = myGradient;
            // }

            redraw();
            alert("CoolGradient がスウォッチパネルに追加されました!");
        } else {
            alert("CoolGradient はすでに存在します。新しいドキュメントでスクリプトを実行してください。");
        }
    } else {
        alert("ドキュメントにパスアイテムがありません。");
    }
} else {
    alert("ドキュメントを開いてください。");
}

/*********************************************************
 
createCoolGradient: 「CoolGradient」スウォッチを作成する関数
 
**********************************************************/

function createCoolGradient() {
    var doc = app.activeDocument;
    
    // 新しいグラデーションを作成
    var theGradient = doc.gradients.add();
    theGradient.name = "CoolGradient";
    theGradient.type = GradientType.LINEAR;

    // 新しいグラデーションストップを追加(既存の2つ + 2つ)
    var stop1 = theGradient.gradientStops[0];
    var stop2 = theGradient.gradientStops.add();
    var stop3 = theGradient.gradientStops.add();
    var stop4 = theGradient.gradientStops[theGradient.gradientStops.length - 1];

    // 各ストップの色設定
    var color1 = new RGBColor();
    var color2 = new RGBColor();
    var color3 = new RGBColor();
    var color4 = new RGBColor();

    color1.red = 255; color1.green = 120; color1.blue = 100; // オレンジ系
    color2.red = 100; color2.green = 100; color2.blue = 255; // 青系
    color3.red = 100; color3.green = 255; color3.blue = 100; // 緑系
    color4.red = 255; color4.green = 200; color4.blue = 0;   // ゴールド系

    // グラデーションストップの詳細設定
    stop1.rampPoint = 0;
    stop1.color = color1;

    stop2.rampPoint = 33;
    stop2.color = color2;
    // stop2.opacity = 0.75;

    stop3.rampPoint = 66;
    stop3.color = color3;
    // stop3.opacity = 0.5;

    stop4.rampPoint = 100;
    stop4.color = color4;
    // stop4.opacity = 0.25;

    // Illustrator の GradientColor オブジェクトを作成
    var myGradientColor = new GradientColor();
    myGradientColor.gradient = theGradient;

    return myGradientColor;
}

// MakeCoolGradient.jsx

// ドキュメントが開いているか確認
if (app.documents.length > 0) {
    var doc = app.activeDocument;
    var docPathItems = doc.pathItems;

    createCoolGradient();
    
    redraw();
    alert("CoolGradient がスウォッチパネルに追加されました!");

} else {
    alert("ドキュメントを開いてください。");
}

/*********************************************************
 
createCoolGradient: 「CoolGradient」スウォッチを作成する関数
 
**********************************************************/

function createCoolGradient() {
    var doc = app.activeDocument;

    // 新しいグラデーションを作成
    var theGradient = doc.gradients.add();
    // theGradient.name = "CoolGradient";
    theGradient.type = GradientType.LINEAR;

    // 新しいグラデーションストップを追加(既存の2つ + 2つ)
    var stop1 = theGradient.gradientStops[0];
    var stop2 = theGradient.gradientStops.add();
    var stop3 = theGradient.gradientStops.add();
    var stop4 = theGradient.gradientStops[theGradient.gradientStops.length - 1];

    // 各ストップの色設定
    var color1 = new RGBColor();
    var color2 = new RGBColor();
    var color3 = new RGBColor();
    var color4 = new RGBColor();

    color1.red = 255; color1.green = 120; color1.blue = 100; // オレンジ系
    color2.red = 100; color2.green = 100; color2.blue = 255; // 青系
    color3.red = 100; color3.green = 255; color3.blue = 100; // 緑系
    color4.red = 255; color4.green = 200; color4.blue = 0;   // ゴールド系

    // グラデーションストップの詳細設定
    stop1.rampPoint = 0;
    stop1.color = color1;

    stop2.rampPoint = 33;
    stop2.color = color2;
    // stop2.opacity = 0.75;

    stop3.rampPoint = 66;
    stop3.color = color3;
    // stop3.opacity = 0.5;

    stop4.rampPoint = 100;
    stop4.color = color4;
    // stop4.opacity = 0.25;

    // Illustrator の GradientColor オブジェクトを作成
    var myGradientColor = new GradientColor();
    myGradientColor.gradient = theGradient;

    return myGradientColor;
}