Changeset 19665 for platform

Show
Ignore:
Timestamp:
09/21/08 14:29:19 (2 months ago)
Author:
CL
Message:

rewite script.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • platform/indesign/fit_text/trunk/fit_text.jsx

    r19664 r19665  
    1 function choutai(txtObj) { 
    2     for (w=100; w >= 10; w--) { 
    3         if (!txtObj.overflows) break; 
    4         txtObj.paragraphs[0].horizontalScale = w;        
     1/* 
     2filename: fit_text.jsx 
     3ver. 0.1 初版 http://blog.dtpwiki.jp/dtp/2005/03/indesigncsjavas_1.html 
     4ver. 0.2 http://blog.dtpwiki.jp/dtp/2008/09/indesign-javasc.html 
     5         テキストフレーム内のすべてのパラグラフで実行 
     6         縦組・横組で判断して個別対応 
     7         テキストフレーム内のテキストを選択していた場合に対応 
     8         TextFrameオブジェクトにメソッドを拡張する形で実装 
     9*/ 
     10  
     11(function(){ 
     12   
     13   
     14  //TextFrameオブジェクトにfitTextHolizontalScaleメソッドを拡張 
     15  TextFrame.prototype.fitTextHolizontalScale = function(limit) { 
     16    var self = this; 
     17    for ( var i = 100; i >= limit; i--) { // 100からlimitまで1ずつ減らす 
     18      if ( !self.overflows ) break; // あふれ解消したらループ抜ける 
     19      for ( var j = 0; j < self.paragraphs.length; j++) { // パラグラフ全部走査 
     20        self.paragraphs[j].horizontalScale = i;  
     21      } 
    522    } 
    6 } 
     23    return; 
     24  }; 
     25   
     26  //TextFrameオブジェクトにfitTextVerticalScaleメソッドを拡張 
     27  TextFrame.prototype.fitTextVerticalScale = function(limit) { 
     28    var self = this; 
     29    for ( var i = 100; i >= limit; i--) { // 100からlimitまで1ずつ減らす 
     30      if ( !self.overflows ) break; // あふれ解消したらループ抜ける 
     31      for ( var j = 0; j < self.paragraphs.length; j++) { // パラグラフ全部走査 
     32        self.paragraphs[j].verticalScale = i;  
     33      } 
     34    } 
     35    return; 
     36  }; 
     37   
     38  // ストーリーの方向により処理を分岐(実際に呼ぶのはこのメソッド) 
     39  TextFrame.prototype.fitText = function(limit) { 
     40    var self = this; 
     41    var idGraphic ={ 
     42      1752134266: 'idHorizontal', 
     43      1986359924: 'idVertical', 
     44    }; 
     45    if (idGraphic[self.parentStory.storyPreferences.storyOrientation] 
     46          == 'idHorizontal') { 
     47      this.fitTextHolizontalScale(limit); 
     48    } else { 
     49      this.fitTextVerticalScale(limit); 
     50    } 
     51    return; 
     52  }; 
     53   
     54   
     55  // メインルーチン 
     56   
     57  // InDesign上で選択中のオブジェクトの一覧を取得 
     58  var selObjs = app.activeDocument.selection; 
     59   
     60  // 選択しているオブジェクトのコンストラクタを確認して、フィットするしない判断 
     61  for (var i = 0; i < selObjs.length; i++) { 
     62    var selObj = selObjs[i]; 
     63    if ( selObj.constructor.name == 'TextFrame' ) { 
     64      // テキストフレームだった場合 
     65      var textFrameObj = selObj; 
     66      textFrameObj.fitText(10); // 最小10%まで文字つぶす 
     67    } 
     68    else if ( selObj.constructor.name == 'Text' ) { 
     69      // テキストフレーム内のテキストが選択されていた場合 
     70      // テキストが所属するフレームを選択してfit 
     71      var textFrameObj = selObj.parentTextFrames[0]; 
     72      textFrameObj.fitText(10); // 最小10%まで文字つぶす 
     73    } 
     74  } 
     75  return; // メインルーチン終わり 
    776  
    8   
    9 sel = app.activeDocument.selection; 
    10   
    11 for (i = 0; i < sel.length; i++) { 
    12     txtObj = sel[i] 
    13     choutai(txtObj); 
    14 } 
    15  
     77})()