色取得ダイアログを出す

css設定なんかを行っているとき、色選択ダイアログとかで色を選択できないかなぁとか思ったことありませんか?

SeraphyWareで配布しているSeraphyScriptToolsを使えばそれも可能だったりします


// %desc 色選択ダイアログを出して、指定色を抜き出します
// %menu 色取得ダイアログ

/** 整数値を16進数表記の文字列にして返します */
function hexstr( _num ){
  var hex = [ "0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f" ], hstr="";
  for( var i=1; i<=8; i++ ){
    hstr = hex[_num & 0xf] + hstr;  // 後ろ4ビットのデータを取りだして頭に継ぎ足し
    _num >>= 4;  // 取り出し終わったデータを、ビットシフト使ってダルマ落とし的に消去
  }
  return hstr;
}

/** 色のビット配列がBGRだったのでRGBに変換(原因はBMPの仕様がBGRで決まっているから…みたい) */
function ABGRtoARGB( _num ){
  var tnum = 0;
  tnum |= (_num & 0xff)<<16;  // 赤色変換
  tnum |= (_num & 0xff00); // 緑変換
  tnum |= (_num & 0xff0000)>>16;  //青色変換
  tnum |= (_num & 0xff000000);  //透明度追加
  return tnum;
}

var ctx = App.Caret.BeginUpdate();
try {
  App.Caret.BeginOperateGroup('マクロ:色取得');
  try {
    var color = new ActiveXObject("SeraphyScriptTools.CommDialog" ).ColorDialog();
    color = ABGRtoARGB( color );  // 色の配置がABGR配置でおかしかったのでちょっと位置変換
    color = hexstr( color ).substring( 2, 8 );
    App.Caret.Send( color );
  }  finally { App.Caret.EndOperateGroup(); }
} finally {  App.Caret.EndUpdate(ctx); }

このツール、他にもファイル選択ダイアログを出したり、自分でウィンドウ自作できたりと、GUI関連のツライことは大体全部できたりします

This document licenced by GFDL

Author:ばばんばーん

SEO [PR] !uO z[y[WJ Cu