« PDFドキュメントのフォームフィールドの情報の収集 | トップページ | [inetloc] inetlocのURLがBASE64エンコードされたデータの場合の取り出し方(HTMLにしちゃう版) »

[NSDecimalNumber]計算にNSDecimalNumberを使う


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004#com.cocolog-nifty.quicktimer.icefloe
005----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
006use AppleScript version "2.8"
007use framework "Foundation"
008use framework "AppKit"
009use scripting additions
010
011property refMe : a reference to current application
012
013
014set the listRGB16bitColor to (choose color default color {50, 50, 50}) as list
015
016###戻り値は16bitの整数をテキストに
017set str16bitR to (item 1 of listRGB16bitColor) as text
018set str16bitG to (item 2 of listRGB16bitColor) as text
019set str16bitB to (item 3 of listRGB16bitColor) as text
020###NSDecimalNumberに変換
021set ocidDecR to refMe's NSDecimalNumber's alloc()'s initWithString:(str16bitR)
022set ocidDecG to refMe's NSDecimalNumber's alloc()'s initWithString:(str16bitG)
023set ocidDecB to refMe's NSDecimalNumber's alloc()'s initWithString:(str16bitB)
024###割り算
025set ocid16bit to refMe's NSDecimalNumber's alloc()'s initWithString:("65535")
026
027set ocidFloatR to (ocidDecR's decimalNumberByDividingBy:(ocid16bit))
028set ocidFloatG to (ocidDecG's decimalNumberByDividingBy:(ocid16bit))
029set ocidFloatB to (ocidDecB's decimalNumberByDividingBy:(ocid16bit))
030
031log ocidFloatR's stringValue() as text
032###小数点4位まで
033set ocidFormatter to refMe's NSNumberFormatter's alloc()'s init()
034ocidFormatter's setRoundingMode:(refMe's NSNumberFormatterRoundFloor)
035ocidFormatter's setNumberStyle:(refMe's NSNumberFormatterDecimalStyle)
036ocidFormatter's setUsesGroupingSeparator:(false)
037ocidFormatter's setMaximumFractionDigits:(10)
038set ocidFloat4R to ocidFormatter's stringFromNumber:(ocidFloatR)
039set ocidFloat4G to ocidFormatter's stringFromNumber:(ocidFloatG)
040set ocidFloat4B to ocidFormatter's stringFromNumber:(ocidFloatB)
041log ocidFloat4R as text
042
043###掛け算
044set ocid8bit to refMe's NSDecimalNumber's alloc()'s initWithString:("255")
045
046set ocid8BitR to (ocidFloatR's decimalNumberByMultiplyingBy:(ocid8bit))
047set ocid8BitG to (ocidFloatG's decimalNumberByMultiplyingBy:(ocid8bit))
048set ocid8BitB to (ocidFloatB's decimalNumberByMultiplyingBy:(ocid8bit))
049
050log ocid8BitR's stringValue() as text
051###小数点以下切り捨て
052(*  
053NSNumberFormatterRoundCeiling
054NSNumberFormatterRoundFloor
055NSNumberFormatterRoundDown
056NSNumberFormatterRoundUp
057NSNumberFormatterRoundHalfEven
058NSNumberFormatterRoundHalfDown
059NSNumberFormatterRoundHalfUp
060*)
061#切り捨て
062set ocidFormatter to refMe's NSNumberFormatter's alloc()'s init()
063ocidFormatter's setRoundingMode:(refMe's NSNumberFormatterRoundUp)
064ocidFormatter's setNumberStyle:(refMe's NSNumberFormatterDecimalStyle)
065ocidFormatter's setUsesGroupingSeparator:(false)
066ocidFormatter's setMaximumFractionDigits:(0)
067set str8BitStrR to (ocidFormatter's stringFromNumber:(ocid8BitR)) as text
068set str8BitStrG to (ocidFormatter's stringFromNumber:(ocid8BitG)) as text
069set str8BitStrB to (ocidFormatter's stringFromNumber:(ocid8BitB)) as text
070
071
072set strRhex to getHex(str8BitStrR) as text
073set strGhex to getHex(str8BitStrG) as text
074set strBhex to getHex(str8BitStrB) as text
075
076
077#を付けてHTML用のHEXカラーコードに
078set strHex to ("#" & strRhex & strGhex & strBhex) as text
079set strRGBA to ("-color-rgba(" & str8BitStrR & ", " & str8BitStrG & ", " & str8BitStrB & ", " & 0 & ")") as text
080
081set strDisptext to (strHex & "\n" & strRGBA) as text
082#RGBカラー値を整形
083set theRGB8bitColor to ("R:" & str8BitStrR & " G:" & str8BitStrG & " B:" & str8BitStrB & "\n" & strHex & "\n")
084
085##############################
086#####ダイアログを前面に
087tell current application
088  set strName to name as text
089end tell
090####スクリプトメニューから実行したら
091if strName is "osascript" then
092  tell application "Finder" to activate
093else
094  tell current application to activate
095end if
096
097###ダイアログ
098set aliasIconPath to POSIX file "/System/Applications/Utilities/Digital Color Meter.app/Contents/Resources/AppIcon.icns" as alias
099set strTitle to ("コードをコピーしてください") as text
100set strMes to ("" & theRGB8bitColor & "Colorが\n出来ました\nコピーして使って下さい。") as text
101set recordResult to (display dialog strMes default answer the strDisptext with icon aliasIconPath with title strTitle buttons {"クリップボードにコピー", "OK", "終了"} default button "OK" cancel button "終了" giving up after 20 without hidden answer) as record
102###クリップボードコピー
103if button returned of recordResult is "クリップボードにコピー" then
104  try
105    set strText to text returned of recordResult as text
106    ####ペーストボード宣言
107    set appPasteboard to refMe's NSPasteboard's generalPasteboard()
108    set ocidText to (refMe's NSString's stringWithString:(strText))
109    appPasteboard's clearContents()
110    appPasteboard's setString:(ocidText) forType:(refMe's NSPasteboardTypeString)
111  on error
112    tell application "Finder"
113      set the clipboard to strTitle as text
114    end tell
115  end try
116end if
117
118##############################
119#サブ
120##############################
121to getHex(arg8BitNum)
122  set record8Bit2Hex to {|0|:"00", |1|:"01", |2|:"02", |3|:"03", |4|:"04", |5|:"05", |6|:"06", |7|:"07", |8|:"08", |9|:"09", |10|:"0A", |11|:"0B", |12|:"0C", |13|:"0D", |14|:"0E", |15|:"0F", |16|:"10", |17|:"11", |18|:"12", |19|:"13", |20|:"14", |21|:"15", |22|:"16", |23|:"17", |24|:"18", |25|:"19", |26|:"1A", |27|:"1B", |28|:"1C", |29|:"1D", |30|:"1E", |31|:"1F", |32|:"20", |33|:"21", |34|:"22", |35|:"23", |36|:"24", |37|:"25", |38|:"26", |39|:"27", |40|:"28", |41|:"29", |42|:"2A", |43|:"2B", |44|:"2C", |45|:"2D", |46|:"2E", |47|:"2F", |48|:"30", |49|:"31", |50|:"32", |51|:"33", |52|:"34", |53|:"35", |54|:"36", |55|:"37", |56|:"38", |57|:"39", |58|:"3A", |59|:"3B", |60|:"3C", |61|:"3D", |62|:"3E", |63|:"3F", |64|:"40", |65|:"41", |66|:"42", |67|:"43", |68|:"44", |69|:"45", |70|:"46", |71|:"47", |72|:"48", |73|:"49", |74|:"4A", |75|:"4B", |76|:"4C", |77|:"4D", |78|:"4E", |79|:"4F", |80|:"50", |81|:"51", |82|:"52", |83|:"53", |84|:"54", |85|:"55", |86|:"56", |87|:"57", |88|:"58", |89|:"59", |90|:"5A", |91|:"5B", |92|:"5C", |93|:"5D", |94|:"5E", |95|:"5F", |96|:"60", |97|:"61", |98|:"62", |99|:"63", |100|:"64", |101|:"65", |102|:"66", |103|:"67", |104|:"68", |105|:"69", |106|:"6A", |107|:"6B", |108|:"6C", |109|:"6D", |110|:"6E", |111|:"6F", |112|:"70", |113|:"71", |114|:"72", |115|:"73", |116|:"74", |117|:"75", |118|:"76", |119|:"77", |120|:"78", |121|:"79", |122|:"7A", |123|:"7B", |124|:"7C", |125|:"7D", |126|:"7E", |127|:"7F", |128|:"80", |129|:"81", |130|:"82", |131|:"83", |132|:"84", |133|:"85", |134|:"86", |135|:"87", |136|:"88", |137|:"89", |138|:"8A", |139|:"8B", |140|:"8C", |141|:"8D", |142|:"8E", |143|:"8F", |144|:"90", |145|:"91", |146|:"92", |147|:"93", |148|:"94", |149|:"95", |150|:"96", |151|:"97", |152|:"98", |153|:"99", |154|:"9A", |155|:"9B", |156|:"9C", |157|:"9D", |158|:"9E", |159|:"9F", |160|:"A0", |161|:"A1", |162|:"A2", |163|:"A3", |164|:"A4", |165|:"A5", |166|:"A6", |167|:"A7", |168|:"A8", |169|:"A9", |170|:"AA", |171|:"AB", |172|:"AC", |173|:"AD", |174|:"AE", |175|:"AF", |176|:"B0", |177|:"B1", |178|:"B2", |179|:"B3", |180|:"B4", |181|:"B5", |182|:"B6", |183|:"B7", |184|:"B8", |185|:"B9", |186|:"BA", |187|:"BB", |188|:"BC", |189|:"BD", |190|:"BE", |191|:"BF", |192|:"C0", |193|:"C1", |194|:"C2", |195|:"C3", |196|:"C4", |197|:"C5", |198|:"C6", |199|:"C7", |200|:"C8", |201|:"C9", |202|:"CA", |203|:"CB", |204|:"CC", |205|:"CD", |206|:"CE", |207|:"CF", |208|:"D0", |209|:"D1", |210|:"D2", |211|:"D3", |212|:"D4", |213|:"D5", |214|:"D6", |215|:"D7", |216|:"D8", |217|:"D9", |218|:"DA", |219|:"DB", |220|:"DC", |221|:"DD", |222|:"DE", |223|:"DF", |224|:"E0", |225|:"E1", |226|:"E2", |227|:"E3", |228|:"E4", |229|:"E5", |230|:"E6", |231|:"E7", |232|:"E8", |233|:"E9", |234|:"EA", |235|:"EB", |236|:"EC", |237|:"ED", |238|:"EE", |239|:"EF", |240|:"F0", |241|:"F1", |242|:"F2", |243|:"F3", |244|:"F4", |245|:"F5", |246|:"F6", |247|:"F7", |248|:"F8", |249|:"F9", |250|:"FA", |251|:"FB", |252|:"FC", |253|:"FD", |254|:"FE", |255|:"FF"} as record
123  
124  set ocid8Bit2HexDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
125  ocid8Bit2HexDict's setDictionary:(record8Bit2Hex)
126  set str8BitNum to arg8BitNum as string
127  set ocidValue to (ocid8Bit2HexDict's valueForKey:(str8BitNum))
128  set strValue to ocidValue as text
129  return strValue
130end getHex
AppleScriptで生成しました

|

« PDFドキュメントのフォームフィールドの情報の収集 | トップページ | [inetloc] inetlocのURLがBASE64エンコードされたデータの場合の取り出し方(HTMLにしちゃう版) »

NSNumber」カテゴリの記事