Quick Calc — File Browser
QuickCalcv3.51 / QuickCalcv3.51 / qcalc.mrc
qcalc.mrc — 51.37 KB — Download this file
; Script: Quick Calc 3.51
; Build: 811.1
; mIRC Version: 6.16
; Author: Daryth
menu Status,Channel {
Quick Calc
.Quick Calc:qcalc
.-
.Readme File:qcalc help
.-
.Unload Script:qcalc unload
}
dialog -l qcalc {
title "Quick Calc 3.51"
icon $scriptdirqcalc.ico
size -1 -1 290 270
list 1,5 5 280 105
edit "",2,5 102 280 22,autohs
radio "Home",3,5 127 45 18,push group
radio "Y=",4,52 127 45 18,push
radio "Window",5,99 127 45 18,push
button "Graph",6,146 127 45 18
radio "TblSet",7,193 127 45 18,push
radio "Table",8,240 127 45 18,push
check "2nd",9,5 147 45 18,push
button "X Var",10,52 147 45 18,disable
button "Catalog",11,99 147 45 18
button "Mode",12,146 147 45 18
button "Back",13,193 147 45 18
button "Clear",14,240 147 45 18
button "(",15,5 167 45 18
button ")",16,52 167 45 18
button "Sin",17,99 167 45 18
button "Cos",18,146 167 45 18
button "Tan",19,193 167 45 18
button "Store",20,240 167 45 18
button "7",21,5 187 45 18
button "8",22,52 187 45 18
button "9",23,99 187 45 18
button "Log",24,146 187 45 18
button "Ln",25,193 187 45 18
button "Abs",26,240 187 45 18
button "4",27,5 207 45 18
button "5",28,52 207 45 18
button "6",29,99 207 45 18
button "n!",30,146 207 45 18
button "e^x",31,193 207 45 18
button "^",32,240 207 45 18
button "1",33,5 227 45 18
button "2",34,52 227 45 18
button "3",35,99 227 45 18
button "x",36,146 227 45 18
button "/",37,193 227 45 18
button "Sqrt",38,240 227 45 18
button "0",39,5 247 45 18
button ".",40,52 247 45 18
button "pi",41,99 247 45 18
button "+",42,146 247 45 18
button "-",43,193 247 45 18
button "Enter",44,240 247 45 18,default
button "",45,240 247 45 18,cancel hide
list 50,5 5 280 105,hide ; y= listbox
list 51,5 5 280 105,hide ; window listbox
list 53,5 5 280 105,hide ; tblset listbox
list 54,5 5 280 105,hide ; table listbox
list 55,5 5 280 105,hide ; equation listbox
list 56,5 5 280 105,sort hide ; var-link listbox
list 57,5 5 280 105,sort hide ; catalog listbox
}
dialog -l qcalc-var {
title "Variables"
icon $scriptdirqcalc.ico
size -1 -1 200 67
text "Variable:",1,10 14 45 22
edit "",2,60 10 130 22,limit 25
button "&Ok",3,10 42 80 20,ok default
button "&Cancel",4,110 42 80 20,cancel
}
dialog -l qcalc-win {
title "Window Size"
icon $scriptdirqcalc.ico
size -1 -1 200 115
text "Window Width:",1,10 14 80 22
edit "",2,95 10 55 22,center limit 4
text "pixels",3,160 14 40 22
text "Window Height:",4,10 46 80 22
edit "",5,95 42 55 22,center limit 4
text "pixels",6,160 46 40 22
button "&Ok",7,10 80 80 20,ok default
button "&Cancel",8,110 80 80 20,cancel
}
dialog -l qcalc-c {
title "Catalog"
icon $scriptdirqcalc.ico
size -1 -1 130 180
list 1,2 2 126 186,autovs sort
edit "",2,2 2 100 22,hide result
button " ",3,20 155 65 20,cancel default hide
}
dialog -l qcalc-m {
title "Quick Calc Settings"
icon $scriptdirqcalc.ico
size -1 -1 245 210
combo 1,40 5 160 150,drop
button "<",2,15 5 20 20
button ">",3,205 5 20 20
box "General Settings",4,5 30 235 147
button "1",5,1 1 1 1,hide
text "Graph Type",10,15 50 100 20
combo 11,115 46 115 80,drop
text "Drawing Style",12,15 75 100 20
combo 13,115 71 115 80,drop
text "Angle",14,15 100 100 20
combo 15,115 96 115 80,drop
text "Decimal Numbers",16,15 125 100 20
combo 17,115 121 115 200,drop
text "History Buffer",18,15 151 100 20
combo 19,115 146 115 160,drop
text "Axes",20,15 50 100 20,hide
combo 21,115 46 115 80,drop hide
text "Grid",22,15 75 100 20,hide
combo 23,115 71 115 80,drop hide
text "Coordinates",24,15 100 100 20,hide
combo 25,115 96 115 80,drop hide
text "Labels",26,15 125 100 20,hide
combo 27,115 121 115 80,drop hide
text "Background",28,15 151 100 20,hide
combo 29,115 146 115 80,drop hide
combo 30,15 55 90 200,drop hide
text "=",31,118 58 35 20,hide
combo 32,140 55 90 200,drop hide
text "Red",33,15 94 50 20,hide
edit "0",34,65 92 60 20,center limit 3 hide disable
text "Green",35,15 119 50 20,hide
edit "0",36,65 117 60 20,center limit 3 hide disable
text "Blue",37,15 144 50 20,hide
edit "0",38,65 142 60 20,center limit 3 hide disable
icon 39,141 94 85 67,$shortfn($scriptdirqcalc.bmp),hide
check "Status Window",40,25 55 150 20,hide
check "Channel Windows",41,25 75 150 20,hide
check "Query/Chat Windows",42,25 95 150 20,hide
check "Nicklist Popups",43,25 115 150 20,hide
check "Menubar Popup",44,25 135 150 20,hide
check "Set 2nd function as a toggle button",50,15 48 210 20,hide
check "Save equation history on exit",51,15 68 210 20,hide
check "Show equations in history display",52,15 88 210 20,hide 3state
check "Open windows/dialogs on the desktop",53,15 108 210 20,hide
check "Always display windows/dialogs on top",54,15 128 210 20,hide
check "Always use timer based graph rendering",55,15 148 210 20,hide
list 56,10 10 220 180,hide
button "&OK",100,45 185 60 20,ok default
button "&Cancel",101,110 185 60 20,cancel
button "&Apply",102,175 185 60 20,disable
}
on *:dialog:qcalc:init:0: {
dialog -s qcalc $qcr(windowsQcalc) 290 270
did -c qcalc 3
gdata 51
y=
did -f qcalc 2
if ($qcr(advHistory)) {
var %a = 1
while ($qcr($+(history,%a))) {
did -a qcalc 1 $gettok($qcr($+(history,%a)),1,59)
did -a qcalc 55 $gettok($qcr($+(history,%a)),2,59)
inc %a
}
did -c qcalc 1 $did(1).lines
}
}
on *:dialog:qcalc:sclick:*: {
did -f qcalc 2
if ((($did isnum 3-44) || ($did isnum 51-53)) && ($mouse.key & 2) && ($mouse.key & 4)) {
var %a = $read($+(",$scriptdir,qcalc.txt"),w,*##### BUTTON EXPLANATION #####*)
if ($did isnum 51-53) { var %a = $read($+(",$scriptdir,qcalc.txt"),w,$+($chr(9),$gettok($did($did).seltext,1,61),*:*),$readn) , %b = $calc($readn +1) }
else {
var %a = $read($+(",$scriptdir,qcalc.txt"),w,$+([,$did($did),]:*),$readn) , %b = $calc($readn +1)
while ($read($+(",$scriptdir,qcalc.txt"),%b)) { var %a = %a $read($+(",$scriptdir,qcalc.txt"),%b) | inc %b }
}
.echo -q $input($replace(%a,$chr(9),$crlf),oq,Quick Calc Help - $iif($did isnum 51-53,$gettok($did($did).seltext,1,61),$did($did)))
return
}
if ($findtok(15.16.21.22.23.27.28.29.32.33.34.35.37.39.40.42.43,$did,1,46)) { did -a qcalc 2 $did($did) }
elseif ($findtok(3 4 5 7 8,$did,1,32)) {
did -h qcalc 1,50,51,53,54,56,57
did $iif($did == 4,-e,$iif($did(10) == Var-Link,-e,-b)) qcalc 10
did -v qcalc $iif($did == 3,1,$calc(46+$did))
gdata $calc(46+$did)
}
elseif ($did == 6) {
if ($mouse.key & 4) { .timer -o 1 0 return $dialog(qcalc-win,qcalc-win,-4) }
else { graph $iif($mouse.key & 2,1) }
}
elseif ($did == 9) {
if ($did(9).state) {
did -e qcalc 10
did -a qcalc 11 Help
did -a qcalc 15 [
did -a qcalc 16 ]
did -a qcalc 17 ArcSin
did -a qcalc 18 ArcCos
did -a qcalc 19 ArcTan
did -a qcalc 14 $iif($did(56).visible,ClrVars,ClrHst)
did -a qcalc 10 Var-Link
did -a qcalc 20 Recall
did -a qcalc 32 °
}
else {
did $iif($did(6).state,-e,-b) qcalc 10
did -a qcalc 11 Catalog
did -a qcalc 15 (
did -a qcalc 16 )
did -a qcalc 17 Sin
did -a qcalc 18 Cos
did -a qcalc 19 Tan
did -a qcalc 14 Clear
did -a qcalc 10 X Var
did -a qcalc 20 Store
did -a qcalc 32 ^
}
}
elseif ($did == 10) {
if ($did(10) == Var-Link) {
did -h qcalc 1,50,51,53,54,57
did -v qcalc 56
gdata 56
}
else { did -a qcalc 2 x }
}
elseif ($did == 11) {
if ($did(11) == Help) { qcalc help }
elseif ($mouse.key & 4) {
if ($dialog(qcalc-c)) { dialog -v qcalc-c }
else { dialog $+(-m,$iif($qcr(advDesktop),d),$iif($qcr(advOntop),o)) qcalc-c qcalc-c }
}
else {
var %a = 3
while ((!$did(%a).state) && (%a < 8)) { inc %a }
did -h qcalc 1,50,51,53,54,56
did -rfv qcalc 57
didtok qcalc 57 32 + - * / % ^ ^-1 ^2 ^3 !( 10^ 1/ abs( acos( acosh( asin( asinh( atan( atanh( cos( cosh( e^( gcd( int( log( ln( phi rand( root( round( sign( sin( sinh( sqrt( sum( tan( tanh(
did -c qcalc 57 1
}
}
elseif ($did == 12) { qcalc mode }
elseif ($did == 13) { did -o qcalc 2 1 $left($did(2),-1) }
elseif ($did == 14) {
if ($did(14) == ClrHst) { did -r qcalc 1,55 }
elseif ($did(14) == ClrVars) {
hdel -w qcalc var.*
did -r qcalc 56
}
else {
if ($did(2) != $null) { did -r qcalc 2 }
elseif ($did(56).visible) {
hdel qcalc $+(var.,$gettok($did(56).seltext,1,61))
did -d qcalc 56 $did(56).sel
}
elseif ($did(3).state) {
did -d qcalc 1,55 $did(1).sel
did -c qcalc 1 $did(1).lines
}
elseif ($did(4).state) {
did -co qcalc 50 $did(50).sel $+($gettok($did(50).seltext,1,61),=)
if ($qcr($+($qcr(modeGraph),$did(50).sel)) != $null) { hdel qcalc $qcr($+($qcr(modeGraph),$did(50).sel)) }
}
}
}
elseif ($did == 20) {
if ($did(20) == Store) { if ($did(2,1).len) { .timer -o 1 0 return $dialog(qcalc-store,qcalc-var,-4) } }
else { .timer -o 1 0 return $dialog(qcalc-recall,qcalc-var,-4) }
}
elseif ($did == 44) {
if ($did(56).visible) {
did -h qcalc 56
var %a = 3
while (%a < 9) {
if ($did(%a).state) {
did -h qcalc 54
did -v qcalc $gettok(1 50 51 50 53 54,$calc(%a -2),32)
%a = 7
}
inc %a
}
if ($did(50).visible) { did -e qcalc 10 }
}
elseif ($did(3).state) {
var %a = $qc($calc( [ $parse($did(2)) ] ))
if ($did(1).lines >= $qcr(modeHist)) { did -d qcalc 1,55 1 }
if (%a != $null) {
if ($qcr(advShowEq) == 2) { did -ac qcalc 1 $replace($did(2),$chr(44),$chr(32),*,$+($chr(32),x,$chr(32)),/,$+($chr(32),/,$chr(32)),+,$+($chr(32),+,$chr(32)),-,$+($chr(32),-,$chr(32))) = %a }
elseif ($qcr(advShowEq)) { did -ac qcalc 1 $+($replace($did(2),$chr(44),$chr(32)),=,%a) }
else { did -ac qcalc 1 %a }
did -a qcalc 55 $remove($did(2),$chr(44))
}
elseif ($did(2)) {
did -ac qcalc 1 Undefined
did -a qcalc 55 $remove($did(2),$chr(44))
}
}
elseif ($did(4).state) {
did -co qcalc 50 $did(50).sel $+($gettok($did(50).seltext,1,61),=,$did(2))
$iif($did(2) == $null,hdel,hadd) qcalc $+($qcr(modeGraph),$did(50).sel) $did(2)
did -c qcalc 50 $iif($did(50).sel == $did(50).lines,1,$calc($did(50).sel +1))
}
elseif ($did(5).state) {
var %a = $iif($did(2) !isnum,$calc( [ $parse($did(2)) ] ),$did(2))
if (%a != $null) {
if ((*-step=* iswm $did(51).seltext) && (%a <= 0)) { return }
elseif ((X-res=* iswm $did(51).seltext) && ((%a !isnum 1-10) && (%a != -1))) { return }
did -co qcalc 51 $did(51).sel $+($gettok($did(51).seltext,1,61),=,%a)
hadd qcalc discardCache 1
mw $+($qcr(modeGraph),$gettok($did(51).seltext,1,61)) $gettok($did(51).seltext,2-,61)
}
did -c qcalc 51 $iif($did(51).sel == $did(51).lines,1,$calc($did(51).sel +1))
}
elseif ($did(7).state) {
var %a = $qc($calc( [ $parse($did(2)) ] ))
if (%a != $null) {
did -co qcalc 53 $did(53).sel $+($gettok($did(53).seltext,1,61),=,$iif($did(53).sel == 4,$iif($abs(%a) == 0,1,$abs(%a)),%a))
mw $gettok($did(53).seltext,1,61) $gettok($did(53).seltext,2-,61)
did -c qcalc 53 $iif($did(53).sel == $did(53).lines,1,$calc($did(53).sel +1))
}
}
elseif (($did(8).state) && (!$timer(qcalcTable))) {
if (($did(2) == $null) && ($mouse.key)) {
did -c qcalc 50 $iif($mouse.key & 4,$iif($calc($did(50).sel -1) < 1,$did(50).lines,$calc($did(50).sel -1)),$iif($calc($did(50).sel +1) > $did(50).lines,1,$calc($did(50).sel +1)))
gdata 54
}
else {
var %a = $qc($calc( [ $parse($did(2)) ] ))
if ((%a != $null) && (!$didwm(54,$+($gettok($gettok($did(50).seltext,1,61),2,32),?,%a,?=*)))) {
did -a qcalc 54 $+($gettok($gettok($did(50).seltext,1,61),2,32),$chr(40),%a,$chr(41),=,$calc($eval($parse($replace($gettok($did(50).seltext,2-,61),x,%a)),2)))
filter -cioa qcalc 54 qcalc 54 sort *
}
var %b = $didwm(54,$+($gettok($gettok($did(50).seltext,1,61),2,32),?,%a,?=*))
did -c qcalc 54 $calc(%b $iif(%b < $did(54).sel,-,+) 3)
did -c qcalc 54 %b
}
}
if ($mouse.key != 4) { did -r qcalc 2 }
}
elseif ($did == 45) {
if ($dialog(qcalc-win)) { dialog -c qcalc-win }
if ($dialog(qcalc-c)) { dialog -c qcalc-c }
if ($dialog(qcalc-m)) { dialog -c qcalc-m }
if ($window(@Graphing)) { window -c @Graphing }
mw windowsQcalc $dialog(qcalc).x $dialog(qcalc).y
.remove $+(",$scriptdir,qcalc.bmp,")
if ($exists($+(",$scriptdir,qcalctmp.bmp"))) { .remove $+(",$scriptdir,qcalctmp.bmp,") }
hdel -w qcalc history*
var %a = 1
while (%a <= $did(1).lines) {
mw $+(history,%a) $+($did(1,%a),;,$did(55,%a))
inc %a
}
hsave -o qcalc $+(",$scriptdir,qcalc.dat,")
hfree qcalc
}
elseif (($did == 50) && ($mouse.key & 4)) { did -oc qcalc 50 $did(50).sel $puttok($did(50).seltext,$iif([-]* iswm $did(50).seltext,[+],[-]),1,32) }
elseif (($did == 56) && ($mouse.key & 2)) {
hdel qcalc $+(var.,$gettok($did(56).seltext,1,61))
did -d qcalc 56 $did(56).sel
did -f qcalc 2
}
elseif ($did isnum 10-43) { did -a qcalc 2 $replace($did($did),e^x,e^<,x,*,sqrt,sqrt<,pi,$pi,n!,!<,arc,a,sin,sin<,cos,cos<,tan,tan<,ln,ln<,log,log<,abs,abs<,<,$chr(40)) }
if ((($did isnum 3-44) || ($did == 0)) && (($did != 9) && ($did(9).state) && (!$qcr(adv2nd)))) {
did $iif($did(6).state,-e,-b) qcalc 10
did -a qcalc 11 Catalog
did -a qcalc 15 (
did -a qcalc 16 )
did -a qcalc 17 Sin
did -a qcalc 18 Cos
did -a qcalc 19 Tan
did -a qcalc 14 Clear
did -a qcalc 10 X Var
did -a qcalc 20 Store
did -a qcalc 32 ^
did -u qcalc 9
}
}
on *:dialog:qcalc:dclick:*: {
if ($did == 1) {
if ($mouse.key & 2) {
did -d qcalc 1,55 $did(1).sel
did -c qcalc 1 $did(1).lines
}
elseif ($mouse.key & 4) { did -a qcalc 2 $did(qcalc,55,$did(1).sel) }
else { did -a qcalc 2 $iif(= isin $did(1).seltext,$gettok($did(1).seltext,2-,61),$did(1).seltext) }
}
elseif ($did == 50) {
if ($mouse.key & 2) {
did -co qcalc 50 $did(50).sel $replace($gettok($did(50).seltext,1,61),-,+) $+ =
hdel qcalc $+($qcr(modegraph),$did(50).sel)
}
elseif ($mouse.key == 1) { did -o qcalc 2 1 $gettok($did($did).seltext,2,61) }
}
elseif ($did isnum 51-53) { did -o qcalc 2 1 $gettok($did($did).seltext,2,61) }
elseif ($did isnum 56-57) {
if ($mouse.key == 1) {
var %a = 3
while (%a < 9) {
if ($did(%a).state) {
did -h qcalc $did
did -v qcalc $gettok(1 50 51 50 53 54,$calc(%a -2),32)
%a = 8
}
inc %a
}
}
if ($did == 56) { did -a qcalc 2 $gettok($did(56).seltext,2,61) }
else { did -a qcalc 2 $did(57).seltext }
}
}
on *:dialog:qcalc-recall:init:0: { dialog -t qcalc-recall Recall Variable }
on *:dialog:qcalc-recall:sclick:3: {
if ($qcr($+(var.,$did(2)))) { did -a qcalc 2 $v1 }
}
on *:dialog:qcalc-store:init:0: { dialog -t qcalc-store Store Variable }
on *:dialog:qcalc-store:sclick:3: {
if (($did(2,1).len) && ($calc( [ $parse($did(qcalc,2)) ] )) && ($remove($gettok($did(2),1,32),[,],$chr(40),$chr(41),$chr(44),%) != $null)) {
mw $+(var.,$remove($gettok($did(2),1,32),[,],$chr(40),$chr(41),$chr(44),%)) $calc( [ $parse($did(qcalc,2)) ] )
if ($did(qcalc,56).visible) { gdata 56 }
did -r qcalc 2
}
}
on *:dialog:qcalc-win:init:0: {
did -a qcalc-win 2 $qcr(winWidth)
did -a qcalc-win 5 $qcr(winHeight)
}
on *:dialog:qcalc-win:edit:*: {
if ($did($did) !isnum) {
var %i = 1 , %n
while (%i <= $len($did($did))) {
if ($mid($did($did),%i,1) isnum) { %n = %n $+ $mid($did($did),%i,1) }
inc %i
}
did -o qcalc-win $did 1 %n
}
}
on *:dialog:qcalc-win:sclick:7: { win $iif($window(-1).w < $did(2),$v1,$iif($did(2) < 100,100,$did(2))) $iif($window(-1).h < $did(5),$v1,$iif($did(5) < 75,75,$did(5))) }
on *:dialog:qcalc-c:init:0: {
dialog -s qcalc-c $qcr(windowsCatalog) 130 180
didtok qcalc-c 1 32 + - * / % ^ ^-1 ^2 ^3 !( 10^ 1/ abs( acos( acosh( asin( asinh( atan( atanh( cos( cosh( e^( gcd( int( log( ln( phi rand( root( round( sign( sin( sinh( sqrt( sum( tan( tanh(
}
on *:dialog:qcalc-c:sclick:3: { mw windowsCatalog $dialog(qcalc-c).x $dialog(qcalc-c).y }
on *:dialog:qcalc-c:dclick:*: { did -a qcalc 2 $did(1,$did(qcalc-c,1).sel) }
on *:dialog:qcalc-m:init:0: {
dialog -s qcalc-m $qcr(windowsMode) 245 210
var %a = 1 , %b = 1
while ($did(qcalc,50,%a)) {
did -a qcalc-m 30 $+(y,%b)
did -a qcalc-m 56 $qcr($+(colors,%b))
inc %a $iif($qcr(modeGraph) == Parametric,2)
inc %b
}
mdid -c qcalc-m 1 1 General Settings,Graph Display,Graph Colors,Popups,Advanced Settings
mdid -c qcalc-m 11 $replace($qcr(modeGraph),Function,1,Parametric,2,Polar,3) Function,Parametric,Polar
mdid -c qcalc-m 13 $qcr(modeStyle) Connected,Points,Square $iif(($mouse.key & 4) || ($qcr(modeStyle) > 3),$+($chr(44),Smilies,$chr(44),Ball Numbers,$chr(44),Are we alone?))
mdid -c qcalc-m 15 $qcr(modeAngle) Degrees,Radians
mdid -c qcalc-m 17 $qcr(modeDigits) Fixed 0,Fixed 1,Fixed 2,Fixed 3,Fixed 4,Fixed 5,Fixed 6,Float,Float 1,Float 2,Float 3,Float 4,Float 5
mdid -c qcalc-m 19 $calc($qcr(modeHist)/10) 10,20,30,40,50,60,70,80,90,100
mdid -c qcalc-m 21 $qcr(modeAxes) On,Off
mdid -c qcalc-m 23 $qcr(modeGrid) On,Off
mdid -c qcalc-m 25 $qcr(modeCoord) Rectangular,Polar
mdid -c qcalc-m 27 $qcr(modeLabels) On,Off
mdid -c qcalc-m 29 $qcr(modeBg) Black,White
did -c qcalc-m 30 1
mdid -c qcalc-m 32 $gettok($qcr(colors1),1,32) White,Black,Navy,Green,Red,Maroon,Violet,Orange,Yellow,Lime,Teal,Cyan,Blue,Hot Pink,Gray,Silver,Custom
did $iif($qcr(colors1,1) == 17,-eo,-o) qcalc-m 34 1 $gettok($qcr(colors1,2),1,44)
did $iif($qcr(colors1,1) == 17,-eo,-o) qcalc-m 36 1 $gettok($qcr(colors1,2),2,44)
did $iif($qcr(colors1,1) == 17,-eo,-o) qcalc-m 38 1 $gettok($qcr(colors1,2),3,44)
qc-cp
if ($qcr(modePopups)) { did -c qcalc-m $replace($qcr(modePopups),status,40,channel,41,query,42,nicklist,43,menubar,44) }
if ($qcr(adv2nd)) { did -c qcalc-m 50 }
if ($qcr(advHistory)) { did -c qcalc-m 51 }
if ($qcr(advShowEq)) { did $iif($v1 == 2,-cu,-c) qcalc-m 52 }
if ($qcr(advDesktop)) { did -c qcalc-m 53 }
if ($qcr(advOntop)) { did -c qcalc-m 54 }
if ($qcr(advRenderer)) { did -c qcalc-m 55 }
}
on *:dialog:qcalc-m:edit:*: {
if (($did isnum 34-38) && ($did($did))) {
if (($did($did) isnum) && ($did($did) > 255)) { did -o qcalc-m $did 1 255 }
elseif ($did($did) !isnum 0-255) { did -o qcalc-m $did 1 $abs($int($did($did))) }
qc-cp
did -o qcalc-m 56 $did(30).sel $did(32).sel $replace($int($did(34)) $int($did(36)) $int($did(38)),$chr(32),$chr(44))
}
}
on *:dialog:qcalc-m:sclick:*: {
if (($did > 9) && (!$did(102).enabled)) { did -e qcalc-m 102 }
if (($did == 100) || ($did == 102)) { mw windowsMode $dialog(qcalc-m).x $dialog(qcalc-m).y }
if ($did == 2) { did -c qcalc-m 1 $iif($calc($did(1).sel -1) == 0,$did(1).lines,$calc($did(1).sel -1)) }
elseif ($did == 3) { did -c qcalc-m 1 $iif($did(1,$calc($did(1).sel +1)),$calc($did(1).sel +1),1) }
if ($did isnum 1-3) {
did -h qcalc-m $midg($did(5))
did -v qcalc-m $midg($did(1).sel)
did -a qcalc-m 4 $did(1)
did -ac qcalc-m 5 $did(1).sel
}
elseif ($did == 30) { did -c qcalc-m 32 $qcr($+(colors,$did(30).sel),1) }
if (($did == 32) || ($did == 30)) {
if ($did(32) == Custom) { did -e qcalc-m 34,36,38 }
else {
did -b qcalc-m 34,36,38
did -o qcalc-m 34 1 $gettok($c-rgb($did(32).sel),1,44)
did -o qcalc-m 36 1 $gettok($c-rgb($did(32).sel),2,44)
did -o qcalc-m 38 1 $gettok($c-rgb($did(32).sel),3,44)
}
qc-cp
}
if ($did == 32) { did -o qcalc-m 56 $did(30).sel $did(32).sel $replace($did(34) $did(36) $did(38),$chr(32),$chr(44)) }
elseif (($did == 100) || ($did == 102)) {
if ($did == 102) { qc-cp }
hdel qcalc modePopups
var %a = 40 , %c = 1 , %g = $qcr(modeGraph)
mw modeGraph $did(11).seltext ,modeStyle $did(13).sel ,modeAngle $did(15).sel ,modeDigits $did(17).sel ,modeHist $did(19) ,modeAxes $did(21).sel ,modeGrid $did(23).sel ,modeCoord $did(25).sel
mw modeLabels $did(27).sel ,modeBg $did(29).sel ,adv2nd $did(50).state ,advHistory $did(51).state ,advShowEq $did(52).state ,advDesktop $did(53).state ,advOntop $did(54).state ,advRenderer $did(55).state
if ($did == 100) { dialog $iif($did(52).state,-o,-n) qcalc }
if (%g != $qcr(modeGraph)) {
y=
hadd qcalc discardCache 1
}
if ($window(@Graphing)) { window $iif($did(52).state,-o,-u) @Graphing }
while (%a < 45) {
if ($did(%a).state) { var %p = $addtok(%p,$gettok($gettok($did(%a),1,32),1,47),44) }
inc %a
}
while ($did(56,%c)) {
hadd qcalc $+(colors,%c) $did(56,%c)
inc %c
}
if (%p) { hadd qcalc modePopups %p }
hsave -o qcalc $+(",$scriptdir,qcalc.dat,")
write -l6 $+(",$script,") menu $qcr(modePopups) $chr(123)
.reload -rs $+(",$script,")
}
}
on *:close:@Graphing: {
if ($window(@graphing).y > 0) { mw windowsGraph $window(@graphing).x $window(@graphing).y }
.timerqcalcG* off
}
on *:load: {
if ($version < 6.16) {
echo $colour(info) -at $iif(%::pre,%::pre,***) Quick Calc 3.51: Sorry you need to upgrade your copy of mIRC to use this addon. Please download mIRC 6.16 or above from http://www.mirc.com/get.html
.unload -rs $+(",$script,")
halt
}
var %a = $gettok($read($+(",$script,"),6),2,32)
echo $colour(info) -at $iif(%::pre,%::pre,***) Quick Calc 3.51 is now loaded, type /qcalc to run it $iif(%a,or go to the $replace($iif($numtok(%a,44) > 1,$puttok(%a,or $gettok(%a,-1,44),-1,44),%a),$chr(44),$+($chr(44),$chr(32))) popups.)
}
on *:keydown:@Graphing:*: {
if (!$keyrpt) {
if (($keychar isnum 1-10) && (!$qcr(toolsLocate))) {
did -oc qcalc 50 $keychar $puttok($did(qcalc,50,$keychar),$iif([-]* iswm $did(qcalc,50,$keychar),[+],[-]),1,32)
if ([?]*=?* iswm $did(qcalc,50,$keychar)) { graph }
}
elseif (($keychar isin 1234567890-.) && ($qcr(toolsLocate))) {
hadd -u20 qcalc toolsLocate2 $qcr(toolsLocate2) $+ $keychar
drawtext -rbc @Graphing $rgb(text) $rgb(face) Verdana 12 0 $calc($window(@Graphing).dh -14) $calc($window(@Graphing).dw /2) 14 $+($chr(160),xc:) $qcr(toolsLocate2)
}
elseif ($keychar == d) { mw toolsDistance 1 }
elseif ($keychar == p) { zoom $qcr(zoomPrev) }
elseif ($keychar == r) { graph }
elseif ($keychar == s) { zoom -10 10 1 -10 10 1 }
elseif ($keychar == w) { .timer -o 1 0 return $dialog(qcalc-win,qcalc-win) }
elseif ($keychar == z) {
if ($qcr(zoomBox,0) > 1) {
drawrect -rfi @Graphing 0 1 $qcr(zoomBox)
hdel -w qcalc zoomBox*
}
elseif ($qcr(zoomBox)) { hdel qcalc zoomBox }
else { mw zoomBox 1 }
}
elseif (($keyval == 13) && ($qcr(modeCoord) == 1)) {
if (!$qcr(toolsLocate)) {
hadd -u30 qcalc toolsLocate 1
drawtext -rbc @Graphing $rgb(text) $rgb(face) Verdana 12 0 $calc($window(@Graphing).dh -14) $calc($window(@Graphing).dw /2) 14 $+($chr(160),xc:) $str($chr(160),200)
}
else {
drawtext -rbc @Graphing $rgb(text) $rgb(face) Verdana 12 $calc($window(@Graphing).dw /2) $calc($window(@Graphing).dh -14) $calc($window(@Graphing).dw /2) 14 $+($chr(160),yc:) $calc($eval($replace($parse($gettok($did(qcalc,50).seltext,2-,61)),x,$qcr(toolsLocate2)),2)) $str($chr(160),200)
hdel -w qcalc toolsLocate*
}
}
}
if ($keyval == 38) { did -c qcalc 50 $iif($did(qcalc,50).sel == 1,$did(qcalc,50).lines,$calc($did(qcalc,50).sel -1)) }
elseif ($keyval == 40) { did -c qcalc 50 $iif($did(qcalc,50).sel == $did(qcalc,50).lines,1,$calc($did(qcalc,50).sel +1)) }
}
menu @graphing {
mouse {
if ($mouse.y <= $calc($window(@Graphing).dh -15)) {
if ($window(@Graphing).dw != $pic($scriptdirqcalctmp.bmp).width) { graph 2 }
if ($qcr(modeCoord) == 1) {
drawtext -rbc @Graphing $rgb(text) $rgb(face) Verdana 12 0 $calc($window(@Graphing).dh -14) $calc($window(@Graphing).dw /2) 14 $+($chr(160),xc:) $qm(x,$mouse.x) $str($chr(160),99)
drawtext -rbc @Graphing $rgb(text) $rgb(face) Verdana 12 $calc($window(@Graphing).dw /2) $calc($window(@Graphing).dh -14) $calc($window(@Graphing).dw /2) 14 $+($chr(160),yc:) $qm(y,$mouse.y) $str($chr(160),99)
}
elseif ($qcr(modeCoord) == 2) {
drawtext -rbc @Graphing $rgb(text) $rgb(face) Verdana 12 0 $calc($window(@Graphing).dh -14) $calc($window(@Graphing).dw /2) 14 $+($chr(160),rc:) $sqrt($calc(($qm(x,$mouse.x))^2 + ($qm(y,$mouse.y))^2)) $str($chr(160),99)
drawtext -rbc @Graphing $rgb(text) $rgb(face) Verdana 12 $calc($window(@Graphing).dw /2) $calc($window(@Graphing).dh -14) $calc($window(@Graphing).dw /2) 14 $+($chr(160),ac:) $calc(-1*$sign($qm(y,$mouse.y))*$atan2($qm(x,$mouse.x)/$qm(y,$mouse.y))+(($sign($qm(y,$mouse.y))*$pi)/2)) $str($chr(160),99)
}
if ($qcr(zoomBox,0) > 1) {
drawrect -rci @Graphing 0 1 $qcr(zoomBox) $qcr(zoomBox,1-2) $calc($mouse.x - $qcr(zoomBox,1)) $calc($mouse.y - $qcr(zoomBox,2))
mw zoomBox $qcr(zoomBox,1-2) $calc($mouse.x - $qcr(zoomBox,1)) $calc($mouse.y - $qcr(zoomBox,2))
}
elseif ($qcr(toolsDistance,0) > 1) {
drawline -ir @Graphing 0 1 $qcr(toolsDistance)
drawline -ir @Graphing 0 1 $qcr(toolsDistance,1-2) $mouse.x $mouse.y
mw toolsDistance $qcr(toolsDistance,1-2) $mouse.x $mouse.y
}
}
}
sclick {
if ($mouse.y <= $calc($window(@Graphing).dh -15)) {
if ($mouse.key & 2) { mw zoomBox 1 }
if ($qcr(zoomBox,0) == 1) { mw zoomBox $mouse.x $mouse.y 0 0 ,zoomBox2 $qcr(mouseX) $qcr(mouseY) }
elseif ($qcr(toolsDistance)) { mw toolsDistance $mouse.x $mouse.y $mouse.x $mouse.y }
}
}
drop {
if ($qcr(zoomBox)) {
zoom $sorttok($qcr(mouseX) $qcr(zoomBox2,1),32,n) $qcr($+($qcr(modeGraph),X-scale)) $sorttok($qcr(mouseY) $qcr(zoomBox2,2),32,n) $qcr($+($qcr(modeGraph),Y-scale))
hdel -w qcalc zoomBox*
}
elseif ($qcr(toolsDistance)) {
drawline -ir @Graphing 0 1 $qcr(toolsDistance)
did -a qcalc 2 $sqrt($calc(($qm(x,$qcr(toolsDistance,3))-$qm(x,$qcr(toolsDistance,1)))^2 + ($qm(y,$qcr(toolsDistance,4))-$qm(y,$qcr(toolsDistance,2)))^2))
hdel qcalc toolsDistance
}
}
leave {
if ($qcr(zoomBox,0) > 1) {
drawrect -rci @Graphing 0 1 $qcr(zoomBox)
hdel -w qcalc zoomBox*
}
elseif ($qcr(toolsDistance)) {
drawline -ir @Graphing 0 1 $qcr(toolsDistance)
hdel qcalc toolsDistance
}
}
$iif(!$timer(qcalcG1),&ReGraph):graph
$iif($timer(qcalcG1),&Stop Graphing): {
.timerqcalcG* off
hdel -w qcalc graphTmpG*
titlebar @Graphing aborted! ( $+ $calc(($ticks - $qcr(graphStart))/1000) secs)
}
-
&Graph
.$iif($qcr(modeGraph) == Function,$style(1)) Function: { mw modeGraph Function | y= | gdata 51 | graph 1 }
.$iif($qcr(modeGraph) == Parametric,$style(1)) Parametric: { mw modeGraph Parametric | y= | gdata 51 | graph 1 }
.$iif($qcr(modeGraph) == Polar,$style(1)) Polar: { mw modeGraph Polar | y= | gdata 51 | graph 1 }
&Y=
.$submenu($showy=($1))
-
&Tools
.$iif($qcr(toolsDistance),$style(1)) Get Distance:mw toolsDistance 1
-
&Zoom
.Zoom&In:zoom $calc($qcr($+($qcr(modeGraph),X-min))/2 + $qcr(mousex)) $calc($qcr($+($qcr(modeGraph)),X-max)/2 + $qcr(mousex)) $calc($qcr($+($qcr(modeGraph)),Y-min)/2 + $qcr(mousey)) $calc($qcr($+($qcr(modeGraph),Y-max))/2 + $qcr(mousey))
.Zoom&Out:zoom $calc(2* $qcr($+($qcr(modeGraph),X-min)) - $qcr(mousex)) $calc(2* $qcr($+($qcr(modeGraph),X-max)) - $qcr(mousex)) $calc(2* $qcr($+($qcr(modeGraph),Y-min)) - $qcr(mousey)) $calc(2* $qcr($+($qcr(modeGraph),Y-max)) - $qcr(mousey))
.$iif($qcr(zoomBox),$style(1)) Zoom&Box: {
if ($qcr(zoomBox,0)) { hdel qcalc zoomBox }
else { mw zoomBox 1 }
}
.-
.$iif($zc(-10,10,-10,10),$style(1)) Zoom&Std:zoom -10 10 1 -10 10 1
.$iif($zc(-11.9,11.9,-5.1,5.1),$style(1)) Zoom&Dec:zoom -11.9 11.9 1 -5.1 5.1 1
.$iif($iif($qcr(modeAngle) == 1,$zc(-892.5,892.5,-4,4),$zc(-15.577063574,15.577063574,-4,4)),$style(1)) Zoom&Trig:zoom $iif($qcr(modeAngle) == 1,-892.5 892.5 90 -4 4 .5,-15.577063574 15.577063574 1.5707963267949 -4 4 .5)
.$iif($zc(-119,119,-51,51),$style(1)) ZoomI&nt:zoom -119 119 10 -51 51 10
.-
.Zoom&Prev:zoom $qcr(zoomPrev)
.ZoomS&tor:mw zoom stor $qcr($+($qcr(modeGraph),X-min)) $qcr($+($qcr(modeGraph),X-max)) $qcr($+($qcr(modeGraph),Y-min)) $qcr($+($qcr(modeGraph),X-max)
.Zoom&Rcl:zoom $qcr(zoomStor)
&Window Size
.$iif(!$findtok(200x150 300x225 400x300 500x375 600x450 700x525,$+($qcr(winWidth),x,$qcr(winHeight)),32),$style(1)) &Custom:.timer -o 1 0 return $dialog(qcalc-win,qcalc-win)
.-
.$iif($+($qcr(winWidth),x,$qcr(winHeight)) == 200x150,$style(1)) 200x150:win 200 150
.$iif($+($qcr(winWidth),x,$qcr(winHeight)) == 300x225,$style(1)) 300x225:win 300 225
.$iif($+($qcr(winWidth),x,$qcr(winHeight)) == 400x300,$style(1)) 400x300:win 400 300
.$iif($+($qcr(winWidth),x,$qcr(winHeight)) == 500x375,$style(1)) 500x375:win 500 375
.$iif($+($qcr(winWidth),x,$qcr(winHeight)) == 600x450,$style(1)) 600x450:win 600 450
.$iif($+($qcr(winWidth),x,$qcr(winHeight)) == 700x525,$style(1)) 700x525:win 700 525
-
&Display Settings
.$iif($qcr(modeBg) == 1,$style(1)) &Black Background:mw modeBg $iif($qcr(modeBg) == 1,2,1) | graph 1
.-
.$iif($qcr(modeAxes) == 1,$style(1)) &X/Y Axes:mw modeAxes $iif($qcr(modeAxes) == 1,2,1) | graph 1
.$iif($qcr(modeGrid) == 1,$style(1)) &Show Grid:mw modeGrid $iif($qcr(modeGrid) == 1,2,1) | graph 1
.$iif($qcr(modeLabels) == 1,$style(1)) &Label Axes: {
mw modeLabels $iif($qcr(modeLabels) == 1,2,1)
if ($qcr(modeLabels) == 1) {
drawtext -rob @Graphing $rgb(255,255,255) 0 Verdana 12 5 $calc(($qcr(scaleY)*$abs($qcr($+($qcr(modeGraph),Y-max))))-7) X
drawtext -rob @Graphing $rgb(255,255,255) 0 Verdana 12 $calc((-1* ($qcr(scaleX)*$qcr($+($qcr(modeGraph),X-min))))-4) 1 Y
}
else { graph }
}
}
alias qcalc {
if ($version < 6.16) { echo $colour(info) -at $iif(%::pre,%::pre,***) Quick Calc 3.5: Sorry you need to upgrade your copy of mIRC to use this addon. Please download mIRC 6.16 or above from http://www.mirc.com/get.html }
elseif ($1 == unload) {
if ($dialog(qcalc)) { dialog -c qcalc }
unload -rs $+(",$script,")
}
elseif ($1 == help) {
if ($exists($+(",$scriptdir,qcalc.txt"))) { run $+(",$scriptdir,qcalc.txt") }
else { var %a = $input(Unable to locate 'qcalc.txt' please place this file in $scriptdir,oq,Error: File not found) }
}
else {
if (($1 == defaults) && ($dialog(qcalc-m))) { dialog -c qcalc-m }
if (!$hget(qcalc)) { hmake qcalc 100 }
if ((!$exists($+(",$scriptdir,qcalc.dat"))) || ($1 == defaults)) {
; Configuration file not found, rebuilding new one with default values.
hadd qcalc adv2nd 0
hadd qcalc advDesktop 0
hadd qcalc advHistory 1
hadd qcalc advOntop 0
hadd qcalc advRenderer 0
hadd qcalc advShowEq 0
hadd qcalc colors1 3 0,0,128
hadd qcalc colors2 5 255,0,0
hadd qcalc colors3 13 0,0,255
hadd qcalc colors4 11 0,128,128
hadd qcalc colors5 14 255,0,128
hadd qcalc colors6 4 0,128,0
hadd qcalc colors7 6 128,0,0
hadd qcalc colors8 7 128,0,128
hadd qcalc colors9 8 255,128,0
hadd qcalc colors10 10 0,255,0
hadd qcalc FunctionX-max 10
hadd qcalc FunctionX-min -10
hadd qcalc FunctionX-res -1
hadd qcalc FunctionX-scale 1
hadd qcalc FunctionY-max 10
hadd qcalc FunctionY-min -10
hadd qcalc FunctionY-scale 1
hadd qcalc graphScale 0.2
hadd qcalc graphStart 15502362
hadd qcalc modeAngle 2
hadd qcalc modeAxes 1
hadd qcalc modeBg 2
hadd qcalc modeCoord 1
hadd qcalc modeDigits 8
hadd qcalc modeGraph Function
hadd qcalc modeGrid 1
hadd qcalc modeHist 30
hadd qcalc modeLabels 2
hadd qcalc modePopups Status,Channel
hadd qcalc modeStyle 1
hadd qcalc mouseX 8.36
hadd qcalc mouseY 10
hadd qcalc ParametricT-max 4
hadd qcalc ParametricT-min 0
hadd qcalc ParametricT-step .13
hadd qcalc ParametricX-max 25
hadd qcalc ParametricX-min -2
hadd qcalc ParametricX-scale 1
hadd qcalc ParametricY-max 10
hadd qcalc ParametricY-min -2
hadd qcalc ParametricY-scale 1
hadd qcalc PolarAngle-max 6.283185
hadd qcalc PolarAngle-min 0
hadd qcalc PolarAngle-step 0.1309
hadd qcalc PolarX-max 10
hadd qcalc PolarX-min -10
hadd qcalc PolarX-scale 1
hadd qcalc PolarY-max 10
hadd qcalc PolarY-min -10
hadd qcalc PolarY-scale 1
hadd qcalc scaleX 25
hadd qcalc scaleY 18.75
hadd qcalc tableMax 30
hadd qcalc tableMin -30
hadd qcalc tableScale 1
hadd qcalc tableStart 0
hadd qcalc tableMaxloop 500
hadd qcalc windowsCatalog -1 -1
hadd qcalc windowsGraph -1 -1
hadd qcalc windowsMode -1 -1
hadd qcalc windowsQcalc -1 -1
hadd qcalc winHeight 375
hadd qcalc winWidth 500
hadd qcalc zoomPrev -119 119 10 -51 51 10
hsave -o qcalc $+(",$scriptdir,qcalc.dat,")
if (($1 == defaults) && ($dialog(qcalc))) { y= }
}
elseif (!$dialog(qcalc)) { hload qcalc $+(",$scriptdir,qcalc.dat,") }
if (!$exists($+(",$scriptdir,qcalc.bmp"))) {
; Build color selection bitmap for Mode dialog.
window -phf +d @qcalc-color 1 1 85 67
drawrect -rf @qcalc-color $rgb( [ $gettok($hget(qcalc,colors1),2,32) ] ) 1 0 0 85 68
drawsave @qcalc-color $+(",$scriptdir,qcalc.bmp,")
window -c @qcalc-color
}
if (!$exists($+(",$scriptdir,qcalc.ico"))) {
; Normal qcalc.ico file not found in scriptdir, so extract mirc's default icon and save it to qcalc.ico
window -phf +d @qcalc-icon 1 1 32 32
drawpic @qcalc-icon 0 0 $+(",$mircexe,")
drawsave -b8 @qcalc-icon $+(",$scriptdir,qcalc.ico")
window -c @qcalc-icon
}
if ($dialog(qcalc)) { dialog -v qcalc }
else { dialog $+(-m,$iif($qcr(advDesktop),d),$iif($qcr(advOntop),o)) qcalc qcalc }
if ($1 == mode) {
if ($dialog(qcalc-m)) { dialog -v qcalc-m }
else { .timer -o 1 0 dialog $+(-m,$iif($qcr(advDesktop),d),$iif($qcr(advOntop),o)) qcalc-m qcalc-m }
}
}
}
alias -l graph {
mw graphStart $ticks
var %a = 1 , %c = 0, %t = 0 , %x = $qcr($+($qcr(modeGraph),X-min)) + $qcr($+($qcr(modeGraph),X-scale)) , %y = $qcr($+($qcr(modeGraph),Y-max)) - $qcr($+($qcr(modeGraph),Y-scale))
if ($1) { .timerqcalcG* off }
if ((($1) || ($qcr(discardCache))) && ($exists($+(",$scriptdir,qcalctmp.bmp")))) { .remove $+(",$scriptdir,qcalctmp.bmp,") }
if ($window(@Graphing)) {
if ($window(@Graphing).y > 0) { mw windowsGraph $window(@Graphing).x $window(@Graphing).y }
if ($1 == 2) { window -c @Graphing }
}
window $+(-pfk,$iif($qcr(advDesktop),dha,a),$iif($qcr(advOntop),o)) +elt @Graphing $qcr(windowsgraph) $qcr(winWidth) $calc($qcr(winHeight)+15) @Graphing
; tokenize graph mode variables 1 = start, 2 = end, 3 = step, 4 = function inc (2 for parametric)
if ($qcr(modeGraph) == Polar) { tokenize 32 $qcr(PolarAngle-min) $qcr(PolarAngle-max) $iif($calc($window(@Graphing).dw /11000) > $qcr(PolarAngle-step),$qcr(PolarAngle-step),$calc($qcr(PolarAngle-step)-($window(@Graphing).dw /11000))) }
elseif ($qcr(modeGraph) == Parametric) { tokenize 32 $qcr(ParametricT-min) $qcr(ParametricT-max) $iif($calc($window(@Graphing).dw /11000) > $qcr(ParametricT-step),$qcr(ParametricT-step),$calc($qcr(ParametricT-step)-($window(@Graphing).dw /11000))) 2 }
else { tokenize 32 $qcr(FunctionX-min) $qcr(FunctionX-max)) $calc(($abs($qcr(FunctionX-min))+$abs($qcr(FunctionX-max)))/$window(@Graphing).dw *$iif($qcr(FunctionX-res) !isnum 1-10,$calc($window(@Graphing).dw /100),$qcr(FunctionX-res))) }
; if loops are going to exceed 2000 reps, use timer based graphing
if ($calc(($2 - $1)/$3) > 2000) { var %t = 1 }
mw graphScale $3 ,scaleX $calc($window(@Graphing).dw /($qcr($+($qcr(modeGraph),X-max))-$qcr($+($qcr(modeGraph),X-min)))) ,scaleY $calc($calc($window(@Graphing).dh -15)/($qcr($+($qcr(modeGraph),Y-max))-$qcr($+($qcr(modeGraph),Y-min))))
if ($exists($+(",$scriptdir,qcalctmp.bmp"))) { drawpic @Graphing 0 0 $+(",$scriptdir,qcalctmp.bmp,") }
else {
drawrect -rf @Graphing 16777215 1 0 0 $window(@Graphing).dw $window(@Graphing).dh
if ($qcr(modeGrid) == 1) {
if (($qcr(scaleX) >= 1) && ($qcr($+($qcr(modeGraph),X-scale)) > 0)) {
while (%x < $qcr($+($qcr(modeGraph),X-max))) { drawline -r @Graphing 15000804 1 $scale(%x,$qcr($+($qcr(modeGraph),Y-max)),t) $scale(%x,$calc($qcr($+($qcr(modeGraph),Y-min))-5),t)
inc %x $qcr($+($qcr(modeGraph),X-scale))
}
}
if (($qcr(scaleY) >= 1) && ($qcr($+($qcr(modeGraph),Y-scale)) > 0)) {
while (%y > $calc($qcr($+($qcr(modeGraph),Y-min))-5)) { drawline -r @Graphing 15000804 1 $scale($qcr($+($qcr(modeGraph),X-min)),%y,t) $scale($qcr($+($qcr(modeGraph),X-max)),%y,t)
dec %y $qcr($+($qcr(modeGraph),Y-scale))
}
}
}
if ($qcr(modeAxes) == 1) {
drawline -r @Graphing 0 1 $calc(-1* ($qcr(scaleX)*$qcr($+($qcr(modeGraph),X-min)))) 0 $calc(-1* ($qcr(scaleX)*$qcr($+($qcr(modeGraph),X-min)))) $calc($window(@Graphing).dh -15)
drawline -r @Graphing 0 1 0 $calc($qcr(scaleY)*$abs($qcr($+($qcr(modeGraph),Y-max)))) $window(@Graphing).dw $calc($qcr(scaleY)*$abs($qcr($+($qcr(modeGraph),Y-max))))
}
if ($qcr(modeBg) == 1) { drawrect -rif @Graphing 0 1 0 0 $window(@Graphing).dw $calc($window(@Graphing).dh -15) }
drawrect -rf @Graphing $rgb(face) 1 0 $calc($window(@Graphing).dh -15) $window(@Graphing).dw 15
drawline -r @Graphing $rgb(frame) 1 0 $calc($window(@Graphing).dh -15) $window(@Graphing).dw $calc($window(@Graphing).dh -15)
hdel qcalc discardCache
drawsave @Graphing $+(",$scriptdir,qcalctmp.bmp,")
}
; timer based graph rendering
if (($qcr(advRenderer)) || (%t)) {
hdel -w qcalc graphTmpG*
while (%a < $did(qcalc,50).lines) {
titlebar @Graphing in progress...
if ([+]*=?* iswm $did(qcalc,50,%a)) {
if (!$timer($+(qcalcG,%a))) { .timerqcalcG $+ %a -oh $int($calc(($abs($1)+$abs($2))/$3 +2)) 1 gh $int($calc(($abs($1)+$abs($2))/$3 +2)) $qcr(modeGraph) %a $qcr(modeStyle) $rgb( [ $qcr($+(colors,%a),2) ] ) $3 $1 $2 $gettok($did(qcalc,50,%a),2,61) $iif($4,$chr(44) $gettok($did(qcalc,50,$calc(%a +1)),2,61)) }
}
inc %a $4
}
}
; traditional graph rendering
else {
while (%a <= $did(qcalc,50).lines) {
titlebar @Graphing $gettok($did(qcalc,50,%a),2-,32)
if ([+]*=?* iswm $did(qcalc,50,%a)) {
var %b = $1 , %g = $rgb( [ $qcr($+(colors,%a),2) ] ) , %d = 0 , %e = $parse($replacecs($gettok($did(qcalc,50,%a),2,61),T,x)) , %f = $parse($replacecs($gettok($did(qcalc,50,$calc(%a +1)),2,61),T,x)) , %r , %s = $qcr(modeStyle)
while (%b <= $2) {
if ($4 == 2) { var %c = $scale($calc($eval($replace(%e,x,%b),2)),$calc($eval($replace(%f,x,%b),2))) }
else { var %c = $scale(%b,$calc($eval($replace(%e,x,%b),2))) }
if ((%s == 1) && (%d)) { drawline -r @Graphing %g 1 %d %c }
elseif (%s == 2) { drawdot -r @Graphing %g 1 %c }
elseif (%s == 3) { drawrect -r @Graphing %g 1 %c 4 4 }
elseif (%s == 4) { drawtext -r @Graphing %g Wingdings 16 %c $chr($calc(73 + $r(1,3))) }
elseif (%s == 5) { drawtext -r @Graphing %g Wingdings 16 %c $chr($calc(139 + %a)) }
elseif (%s == 6) { drawtext -r @Graphing %g Webdings 24 %c … }
var %d = %c
inc %b $3
}
}
inc %a $4
}
titlebar @Graphing completed ( $+ $calc(($ticks - $qcr(graphStart))/1000) secs $+ )
}
if ($qcr(modeLabels) == 1) {
drawtext -rob @Graphing $rgb(255,255,255) 0 Verdana 12 5 $calc(($qcr(scaleY)*$abs($qcr($+($qcr(modeGraph),Y-max))))-7) X
drawtext -rob @Graphing $rgb(255,255,255) 0 Verdana 12 $calc((-1* ($qcr(scaleX)*$qcr($+($qcr(modeGraph),X-min))))-4) 1 Y
}
}
alias -l gh {
var %a = $calc(($1 - $calc($timer($+(qcalcG,$3)).reps)-1) * $6 + $7) , %b
if ($2 == Parametric) { %b = $scale($calc($eval($replace($parse($replacecs($gettok($9-,1,44),T,x)),x,%a),2)),$calc($eval($replace($parse($replacecs($gettok($9-,2-,44),T,x)),x,%a),2))) }
else { %b = $scale(%a,$calc($eval($replace($parse($replacecs($9-,T,x)),x,%a),2))) }
if (($4 == 1) && ($qcr($+(graphTmpG,$3)))) { drawline -r @Graphing $5 1 $v1 %b }
elseif ($4 == 2) { drawdot -r @Graphing $5 1 %b }
elseif ($4 == 3) { drawrect -r @Graphing $5 1 %b 3 3 }
elseif ($4 == 4) { drawtext -r @Graphing $5 Wingdings 16 %b $chr($calc(73 + $r(1,3))) }
elseif ($4 == 5) { drawtext -r @Graphing $5 Wingdings 16 %b $chr($calc(139 + $3)) }
elseif ($4 == 6) { drawtext -r @Graphing $5 Webdings 25 %b … }
hadd qcalc $+(graphTmpG,$3) %b
if (%a > $8) {
titlebar @Graphing completed ( $+ $calc(($ticks - $qcr(graphStart))/1000) secs $+ )
.timer $+ $+(qcalcG,$3) off
hdel qcalc $+(graphTmpG,$3)
}
}
alias -l sort {
if ($gettok($gettok($2,2,40),1,41) > $gettok($gettok($1,2,40),1,41)) { return -1 }
else { return 1 }
}
alias -l y= {
did -r qcalc 50
var %a = 1 , %b = 1
while (%a <= 10) {
if ($qcr(modeGraph) == Function) { did -a qcalc 50 [+] $+(y,%a,=,$qcr($+(Function,%a))) }
elseif ($qcr(modeGraph) == Parametric) {
did -a qcalc 50 [+] $+(xt,%a,=,$qcr($+(Parametric,%b)))
did -a qcalc 50 [+] $+(yt,%a,=,$qcr($+(Parametric,$calc(%b +1))))
inc %b 2
}
elseif ($qcr(modeGraph) == Polar) { did -a qcalc 50 [+] $+(r,%a,=,$qcr($+(Polar,%a))) }
inc %a
}
did -c qcalc 50 1
}
alias -l showy= {
if ($1 == begin) { set %qcalc.popup 1 }
elseif ($1 == end) { unset %qcalc.popup }
elseif ($didwm(qcalc,50,[?]*=?*,%qcalc.popup)) {
var %a = $v1
set %qcalc.popup $calc(%a +1)
return $iif([+]* iswm $did(qcalc,50,%a),$style(1)) $gettok($did(qcalc,50,%a),2-,32) :did -o qcalc 50 %a $puttok($did(qcalc,50,%a),$iif([-]* iswm $did(qcalc,50,%a),[+],[-]),1,32) $chr(124) graph
}
}
alias -l scale {
if (($3) || ($qcr(modeGraph) != polar)) { return $calc(($1 - $qcr($+($qcr(modeGraph),X-min))) * $qcr(scaleX)) $calc(($2 - $qcr($+($qcr(modeGraph),Y-max))) * $qcr(scaleY) *-1) }
else { return $calc((($2 * $cos($1)) - $qcr($+($qcr(modeGraph),X-min))) * $qcr(scaleX)) $calc((($2 * $sin($1)) - $qcr($+($qcr(modeGraph),Y-max))) * $qcr(scaleY) *-1) }
}
alias -l mdid {
if (c isin $1) { didtok $2-3 44 $5- }
else { didtok $2-3 44 $4- }
did -c $2-4
}
alias -l qm { hadd qcalc $+(mouse,$1) $iif($qm2($1,$2) == $null,0,$qm2($1,$2)) | return $qm2($1,$2) }
alias -l qm2 { if ($1 == x) { return $calc($2 / $qcr(scaleX) + $qcr($+($qcr(modeGraph),X-min))) } | else { return $calc(-1*($2 / $qcr(scaleY) - $qcr($+($qcr(modeGraph),Y-max)))) } }
alias -l qcr { return $gettok($hget(qcalc,$1),$iif($2,$2,1-),32) }
alias -l midg { return $replace($gettok(10 11 12 13 14 15 16 17 18 19.20 21 22 23 24 25 26 27 28 29.30 31 32 33 34 35 36 37 38 39.40 41 42 43 44.50 51 52 53 54 55,$1,46),$chr(32),$chr(44)) }
alias -l mw { var %a = 1 | while ($gettok($1-,%a,44)) { hadd qcalc $v1 | inc %a } }
alias -l zoom { mw zoomPrev $qcr($+($qcr(modeGraph),X-min)) $qcr($+($qcr(modeGraph),X-max)) $qcr($+($qcr(modeGraph),X-scale)) $qcr($+($qcr(modeGraph),Y-min)) $qcr($+($qcr(modeGraph),Y-max)) $qcr($+($qcr(modeGraph),Y-scale)) , $+($qcr(modeGraph),X-min) $1 , $+($qcr(modeGraph),X-max) $2 , $+($qcr(modeGraph),X-scale) $3 , $+($qcr(modeGraph),Y-min) $4 , $+($qcr(modeGraph),Y-max) $5 , $+($qcr(modeGraph),Y-scale) $6 | gdata 51 | graph 1 }
alias -l zc { if (($1 == $qcr($+($qcr(modeGraph),X-min))) && ($2 == $qcr($+($qcr(modeGraph),X-max))) && ($3 == $qcr($+($qcr(modeGraph),Y-min))) && ($4 == $qcr($+($qcr(modeGraph),Y-max)))) { return 1 } }
alias -l win { mw winWidth $$1 ,winHeight $$2 | gdata 51 | graph 1 }
alias -l parse { var %a = $iif($right($parse2($1-),1) isin */,$left($parse2($1-),-1),$parse2($1-)) , %b = (* *) | return $replace($iif($left(%a,1) isin */,$right(%a,-1),%a),$gettok(%b,1,32),$chr(40),$gettok(%b,2,32),$chr(41)) }
alias -l parse2 { return $str($chr(40),$calc($count($1-,$chr(41)) - $count($1-,$chr(40)))) $+ $replace($1-,$chr(44),$chr(32),°,*.01745329252,phi,*1.6180339887,gcd,~gcd,sum,~sum,!,~n!,e^,~e,round,~round,rand,~rnd,root,~root,sign,~sign,sqrt,~sqrt2,log,~clog,ln,~log2,cos,~cos2,sin,~sin2,tan,~tan2,a~sin2,~asin2,a~cos2,~acos2,a~tan2,~atan2,abs,~abs2,int,~int,(),(0),[,*[,],]*,x,*x,~,* $,+*,+,-*,-,**,*,/*,/,*-,* -,*/,/,*^,^,^*,^,* *,$+(*,$chr(32)),$chr(41),$+($chr(41),$chr(32)),$chr(41) ^,$+($chr(41),^),[,$chr(40),],$chr(41)) $+ $str($chr(41),$calc($count($1-,$chr(40)) - $count($1-,$chr(41)))) }
alias -l gdata {
if ($1 == 51) {
if ($qcr(modeGraph) == Polar) {
did -acr qcalc 51 $+(Angle-min=,$qcr(PolarAngle-min))
did -a qcalc 51 $+(Angle-max=,$qcr(PolarAngle-max))
did -a qcalc 51 $+(Angle-step=,$qcr(PolarAngle-step))
}
elseif ($qcr(modeGraph) == Parametric) {
did -acr qcalc 51 $+(T-min=,$qcr(ParametricT-min))
did -a qcalc 51 $+(T-max=,$qcr(ParametricT-max))
did -a qcalc 51 $+(T-step=,$qcr(ParametricT-step))
}
did $iif($qcr(modeGraph) == Function,-acr,-a) qcalc 51 $+(X-min=,$qcr($+($qcr(modeGraph),X-min)))
did -a qcalc 51 $+(X-max=,$qcr($+($qcr(modeGraph),X-max)))
did -a qcalc 51 $+(X-scale=,$qcr($+($qcr(modeGraph),X-scale)))
did -a qcalc 51 $+(Y-min=,$qcr($+($qcr(modeGraph),Y-min)))
did -a qcalc 51 $+(Y-max=,$qcr($+($qcr(modeGraph),Y-max)))
did -a qcalc 51 $+(Y-scale=,$qcr($+($qcr(modeGraph),Y-scale)))
if ($qcr(modeGraph) == Function) { did -a qcalc 51 $+(X-res=,$qcr(FunctionX-Res)) }
}
elseif ($1 == 53) {
did -rac qcalc 53 $+(tableMin=,$qcr(tableMin))
did -a qcalc 53 $+(tableMax=,$qcr(tableMax))
did -a qcalc 53 $+(tableStart=,$qcr(tableStart))
did -a qcalc 53 $+(tableScale=,$qcr(tableScale))
did -a qcalc 53 $+(tableMaxloop=,$qcr(tableMaxloop))
}
elseif ($1 == 54) {
.timerqcalcTable off
; Add new tableMaxloop setting if it's not found (for those that upgraded on top of Quick Calc 3.5)
if ($qcr(tableMaxloop) == $null) { hadd qcalc tableMaxloop 500 }
var %a = $qcr(tableMin) , %b = 0 , %c = $qcr(tableMaxloop)
did -r qcalc 54
while ((%a <= $qcr(tableMax)) && (%b < %c)) {
var %r = $qc($calc($eval($replace($parse($replacecs($gettok($did(50).seltext,2-,61),T,x)),x,%a),2)))
did -a qcalc 54 $+($gettok($gettok($did(50).seltext,1,61),2,32),$chr(40),%a,$chr(41),=,%r)
inc %b
inc %a $qcr(tableScale)
}
if (%b >= %c) { .timerqcalcTable -om $calc(($qcr(tableMax)-$qcr(tableMin))/$qcr(tableScale)- %b + $qcr(tableScale)) 2 table $calc(($qcr(tableMax)-$qcr(tableMin))/$qcr(tableScale)- %b + $qcr(tableScale)) $calc(%a - $qcr(tableScale)) $qcr(tableScale) }
did -c qcalc 54 $calc($didwm(qcalc,54,$+(*,$chr(40),$qcr(tableStart),$chr(41),*))+3)
did -c qcalc 54 $didwm(qcalc,54,$+(*,$chr(40),$qcr(tableStart),$chr(41),*))
}
elseif ($1 == 56) {
var %a = 1
did -r qcalc 56
while ($hfind(qcalc,var.*,%a,w)) { did -a qcalc 56 $+($gettok($hfind(qcalc,var.*,%a,w),2-,46),=,$qcr($hfind(qcalc,var.*,%a,w))) | inc %a }
did -c qcalc 56 1
}
}
alias -l table {
var %a = $calc($2 + (($1 - $timer(qcalcTable).reps)* $3))
did -a qcalc 54 $+($gettok($gettok($did(qcalc,50).seltext,1,61),2,32),$chr(40),%a,$chr(41),=,$qc($calc($eval($replace($parse($replacecs($gettok($did(qcalc,50).seltext,2-,61),T,x)),x,%a),2))))
if ($timer(qcalcTable).reps == 0) { did -c qcalc 54 $calc($didwm(qcalc,54,$+(*,$chr(40),$qcr(tableStart),$chr(41),*))+3) | did -c qcalc 54 $didwm(qcalc,54,$+(*,$chr(40),$qcr(tableStart),$chr(41),*)) }
}
alias -l qc-cp {
if (!$did(qcalc-m,34,1).len) { did -o qcalc-m 34 1 $gettok($gettok($did(qcalc-m,56,$did(30).sel),2-,32),1,44) }
if (!$did(qcalc-m,36,1).len) { did -o qcalc-m 36 1 $gettok($gettok($did(qcalc-m,56,$did(30).sel),2-,32),2,44) }
if (!$did(qcalc-m,38,1).len) { did -o qcalc-m 38 1 $gettok($gettok($did(qcalc-m,56,$did(30).sel),2-,32),3,44) }
window -phf +d @qcalc-color 1 1 85 67
drawrect -rf @qcalc-color $rgb($did(qcalc-m,34),$did(qcalc-m,36),$did(qcalc-m,38)) 1 0 0 85 68
drawsave @qcalc-color $+(",$scriptdir,qcalc.bmp,")
window -c @qcalc-color
did -g qcalc-m 39 $+(",$scriptdir,qcalc.bmp,")
}
alias -l c-rgb {
if ($1 == 1) { return 255,255,255 }
elseif ($1 == 2) { return 0,0,0 }
elseif ($1 == 3) { return 0,0,128 }
elseif ($1 == 4) { return 0,128,0 }
elseif ($1 == 5) { return 255,0,0 }
elseif ($1 == 6) { return 128,0,0 }
elseif ($1 == 7) { return 128,0,128 }
elseif ($1 == 8) { return 255,128,0 }
elseif ($1 == 9) { return 255,255,0 }
elseif ($1 == 10) { return 0,255,0 }
elseif ($1 == 11) { return 0,128,128 }
elseif ($1 == 12) { return 0,255,255 }
elseif ($1 == 13) { return 0,0,255 }
elseif ($1 == 14) { return 255,0,128 }
elseif ($1 == 15) { return 128,128,128 }
elseif ($1 == 16) { return 192,192,192 }
}
alias -l qc {
if ($qcr(modeDigits) < 8) { return $round($1,$calc($v1 -1)) }
elseif ($qcr(modeDigits) == 8) { return $1 }
elseif ($len($gettok($1,2,46)) > $calc(10 - $qcr(modeDigits))) { return $round($1,$calc(-8+$qcr(modeDigits))) }
else { return $1 }
}
alias -l sumfact {
if (($1 == *) && (!$calc($2))) { tokenize 32 * 1 }
var %a = $abs($calc($2)) , %b = $calc(%a -1)
while (%b > 0) { var %a = $+(%a,$1,%b) | dec %b }
return $calc((%a)* $sign($2))
}
alias -l gcd {
tokenize 32 $remove($1-,*,+,-,/,%)
while ($2) { tokenize 32 $1 $calc($1 % $2) }
return $1
}
alias -l clog { if ($calc($1-) > 0) { return $calc($log($calc($1-))/$log(10)) } }
alias -l e { return $iif(!$1,2.71828182846,$calc(2.71828182846^($1-))) }
alias -l n! { return $sumfact(*,$1-) }
alias -l sum { return $sumfact(+,$1-) }
alias -l sign { return $iif($calc($1-) < 0,-1,1) }
alias -l rnd { return $r($iif($2 isnum,$1,1),$iif($2 isnum,$2,$1))) }
alias -l abs2 { return $abs($calc($1-)) }
alias -l log2 { return $log($calc($1-)) }
alias -l sqrt2 { return $sqrt($calc($1-)) }
alias -l sin2 { return $sin($d($1-)) }
alias -l cos2 { return $cos($d($1-)) }
alias -l tan2 { return $tan($d($1-)) }
alias -l asin2 { return $asin($calc(($1-)* $d2)) }
alias -l acos2 { return $acos($calc(($1-)* $d2)) }
alias -l atan2 { return $atan($calc(($1-)* $d2)) }
alias -l sin2h { return $calc((2.71828182846^($1-)-2.71828182846^-($1-))/2) }
alias -l cos2h { return $calc((2.71828182846^($1-)+2.71828182846^-($1-))/2) }
alias -l tan2h { return $calc($sin2h($1-)/$cos2h($1-)) }
alias -l asin2h { return $log($calc($1- +($1- +1)^.5)) }
alias -l acos2h { return $log($calc($1- +($1- -1)^.5)) }
alias -l atan2h { return $calc($log($calc((1+ $1-)/(1- $1-)))/2) }
alias -l d { return $iif($qcr(modeAngle) == 1,$calc(($1-)*.01745329),$calc($1-)) }
alias -l d2 { return $iif($qcr(modeAngle) == 1,57.29578,1) }