:note

グラデーションぐらぐら

InDesignで選択中のオブジェクトがグラデーションならば、グラデーション各々の方向をランダムにしてみる。スクリプト

グラデーションぐらぐら /images/2010/09/635-gragra_tile.jpg

グラデーションの開始点をバウンディングボックスの四隅に限定したので、方向の偏りが気になるところ。そういうところはそこだけ選択して再実行してみるとよいかも。ぐらぐら

/*
グラデーションぐらぐら
"shake gradients"
使い方:
塗りがグラデーションのオブジェクトを選択して実行します。
選択中のオブジェクトがグラデーションなら
グラデーションの開始点の位置、角度をランダムにゆらします。
グラデーション以外の塗りは無視します。
動作確認:OS10.4.11 InDesign CS2, CS3
milligramme
www.milligramme.cc
*/
var doc=app.documents[0];
if(doc.selection.length!=0){
  var sel=doc.selection;
  for(var i=0; i < sel.length; i++){
    var selX1=sel[i].geometricBounds[1];
    var selY1=sel[i].geometricBounds[0];
    var selX2=sel[i].geometricBounds[3];
    var selY2=sel[i].geometricBounds[2];
    //バウンディングボックスの対角線の長さをだす
    var selDiago=Math.sqrt(Math.pow((selX2-selX1),2)+Math.pow((selY2-selY1),2));
    if(sel[i].fillColor.getElements()[0].constructor.name == "Gradient"){
      //グラデーションタイプを線形にする
      sel[i].fillColor.type=GradientType.LINEAR;
      //グラデーションの長さは対角線の長さ
      sel[i].gradientFillLength=selDiago;
      var startRandom=Math.round(3*Math.random());//0〜3のランダム
      //グラデーションの開始位置と方向(角度)を割り振り
      switch(startRandom){
        case 0:
          sel[i].gradientFillStart=[selX1,selY2];//左下から
          sel[i].gradientFillAngle=90*Math.random();
          break;//0〜90°
        case 1:
          sel[i].gradientFillStart=[selX1,selY1];//左上から
          sel[i].gradientFillAngle=-90*Math.random();
          break;//0〜-90°
        case 2:
          sel[i].gradientFillStart=[selX2,selY1];//右上から
          sel[i].gradientFillAngle=-90-90*Math.random();
          break;//-90〜-180°
        case 3:
          sel[i].gradientFillStart=[selX2,selY2];//右下から
          sel[i].gradientFillAngle=90+90*Math.random();
          break;//90〜180°
      }
    }
  }
}
 
comments powered by Disqus
back to top