📄 scicalc.fld
字号:
# data file for the Fltk User Interface Designer (fluid)version 2.00 header_name {.h} code_name {.cxx} gridx 1 gridy 1 snap 1decl {\#include "StaticText.h"} {public} decl {\#include <stdio.h>} {} decl {\#include <string.h>} {selected} decl {\#include "math.h"} {} Function {gammaln(double xx)} {open private return_type double} { code {int j;double x,y,tmp,ser;static double cof[6] = {76.18009172947146, -86.50532032941677, 24.01409824083091, -1.231739572450155, 0.1208650973866179e-2, -0.5395239384953e-5}; y = x = xx; tmp = x + 5.5; tmp -= (x+0.5)*log(tmp); ser = 1.000000000190015; for (j=0;j<6;j++) ser += cof[j]/++y; return -tmp+log(2.5066282746310005*ser/x);} {}} Function {truncf(double x)} {private return_type double} { code {if (x < 0.0) x = -floor(-x); else x = floor(x); return x;} {}} class SciCalc {open} { decl {enum {MaxNumBrkts=10};} {} decl {enum Operator {PLUS,MINUS,MULT,DIV,POW,INVPOW,EVAL};} {} decl {enum mode {NONE=0,DOT=-1,NORM=-2,EXP=-3};} {} declblock {/* members */} {after {/********/} } { decl {double value[4*(MaxNumBrkts+1)]; /* The values on the stack */} {} decl {int priority[6]; /* the priorities of each operator */} {} decl {int oper[3*(MaxNumBrkts+1)]; /* the operators between them */} {} decl {int top; /* the top of the stack */} {} decl {int startbrkt[(MaxNumBrkts+1)]; /* the positions of the left brackets */} {} decl {int currentbrkt; /* bracketing we are in */} {} decl {double mem; /* The memory value */} {} decl {int ready; /* Whether last number is ready. if "ready" is set, then typing another number overwrites the current number. */} {} decl {int dot; /* Whether the dot has been typed */} {} decl {double diver; /* The divider when behind the dot */} {} decl {int behind; /* Number of digits behind dot */} {} decl {int inv; /* Whether inverse key is depressed */} {} decl {int emode; /* Whether we are entering the exponent */} {} decl {int exponent; /* the exponent value whilst entering exponent */} {} decl {double mantissa; /* the mantissa value whilst entering exponent */} {} decl {int base; /* the base we are working in (2,8,10 or 16) */} {} decl {int drgmode; /* whether we are in deg, rad or grad mode */} {} } Function {SciCalc()} {open } { Fl_Window win { label flCalc open private xywh {573 273 181 262} box UP_BOX visible } { Fl_Box leddisplay { callback {o->value("0 ");} private xywh {5 3 172 24} align 24 labelfont 1 labelsize 16 labelcolor 59 color 207 box DOWN_BOX class StaticText } Fl_Box box_DEGRAD { callback {o->value(" ");} private xywh {24 27 35 15} align 16 labelsize 9 labelcolor 0 box ENGRAVED_BOX class StaticText } Fl_Box box_bracket { private xywh {59 27 65 15} align 16 labelsize 9 labelcolor 0 box ENGRAVED_BOX class StaticText } Fl_Box box_M { callback {o->value("M");} private xywh {124 27 35 15} align 16 labelsize 9 labelcolor 0 box ENGRAVED_BOX class StaticText } Fl_Group {} {open private xywh {46 44 93 22} color 46 box ENGRAVED_FRAME } { Fl_Button radio_2 { label 2 callback {change_base(2);} private xywh {49 48 20 15} type Radio labelsize 10 labelcolor 1 color 49 } Fl_Button radio_8 { label 8 callback {change_base(8);} private xywh {70 48 21 15} type Radio labelsize 10 labelcolor 1 color 49 } Fl_Button radio_10 { label 10 callback {change_base(10);} private xywh {92 48 21 15} type Radio labelsize 10 labelcolor 1 color 49 value 1 } Fl_Button radio_16 { label 16 callback {change_base(16);} private xywh {114 48 21 15} type Radio labelsize 10 labelcolor 1 color 49 } } Fl_Group {} {open private xywh {3 163 107 94} color 43 box ENGRAVED_BOX } { Fl_Button but_7 { label 7 callback {handle_number(7);} private xywh {6 167 32 20} labelfont 1 labelsize 16 box UP_BOX shortcut 0x37 } Fl_Button but_8 { label 8 callback {handle_number(8);} private xywh {41 167 32 20} labelfont 1 labelsize 16 box UP_BOX shortcut 0x38 } Fl_Button but_9 { label 9 callback {handle_number(9);} private xywh {75 167 32 20} labelfont 1 labelsize 16 box UP_BOX shortcut 0x39 } Fl_Button but_4 { label 4 callback {handle_number(4);} private xywh {6 189 32 20} labelfont 1 labelsize 16 box UP_BOX shortcut 0x34 } Fl_Button but_5 { label 5 callback {handle_number(5);} private xywh {41 189 32 20} labelfont 1 labelsize 16 box UP_BOX shortcut 0x35 } Fl_Button but_6 { label 6 callback {handle_number(6);} private xywh {75 189 32 20} labelfont 1 labelsize 16 box UP_BOX shortcut 0x36 } Fl_Button but_1 { label 1 callback {handle_number(1);} private xywh {6 211 32 20} labelfont 1 labelsize 16 box UP_BOX shortcut 0x31 } Fl_Button but_2 { label 2 callback {handle_number(2);} private xywh {41 211 32 20} labelfont 1 labelsize 16 box UP_BOX shortcut 0x32 } Fl_Button but_3 { label 3 callback {handle_number(3);} private xywh {75 211 32 20} labelfont 1 labelsize 16 box UP_BOX shortcut 0x33 } Fl_Button but_0 { label 0 callback {handle_number(0);} private xywh {6 233 32 20} labelfont 1 labelsize 16 box UP_BOX shortcut 0x30 } Fl_Button but_dot { label {.} callback {handle_number(DOT);} private xywh {41 233 32 20} labelfont 1 labelsize 16 box UP_BOX shortcut 0x2e } Fl_Button but_sign { label {+/-} callback {if (! emode){ value[top] = -value[top]; set_display(value[top],NORM);}else { exponent = -exponent; value[top] = mantissa*pow(10.0, (double)exponent); set_display(mantissa,EXP);}} xywh {75 233 32 20} labelfont 1 labelsize 16 box UP_BOX } } Fl_Button but_C { label C callback {init_value(top); set_display(0.0,NORM);} private xywh {112 167 31 20} labelfont 1 labelsize 16 box UP_BOX } Fl_Button but_AC { label AC callback {init_value(0);set_display(0.0,NORM);currentbrkt = 0;box_bracket->value("");box_bracket->redraw();} private xywh {146 167 30 20} labelfont 1 labelsize 16 box UP_BOX } Fl_Button but_X { label x callback {handle_operator(MULT);} private xywh {112 189 31 20} labelfont 1 labelsize 16 box UP_BOX shortcut 0x2a } Fl_Button but_div { label {/} callback {handle_operator(DIV);} private xywh {146 189 30 20} labelfont 1 labelsize 16 box UP_BOX shortcut 0x2f } Fl_Button but_plus { label {+} callback {handle_operator(PLUS);} private xywh {112 211 31 20} labelfont 1 labelsize 16 box UP_BOX shortcut 0x2b } Fl_Button but_minus { label {-} callback {handle_operator(MINUS);} private xywh {146 211 30 20} labelfont 1 labelsize 16 box UP_BOX shortcut 0x2d } Fl_Button but_pi { label {e/p} callback {exponent_pi();} private xywh {112 233 31 20} labelfont 12 labelsize 17 box UP_BOX } Fl_Button but_eval { label {=} callback {handle_operator(EVAL);} private xywh {146 233 30 20} labelfont 1 labelsize 16 box UP_BOX shortcut 0x3d } Fl_Button but_sqrt { label sqrt callback {if (base > 10) handle_number(10.0); else if (! inv) { value[top] = sqrt(value[top]); set_display(value[top],NORM); ready = 1; } else { value[top] = pow(value[top], 2.0); set_display(value[top],NORM); ready = 1; }} private xywh {6 70 32 21} labelfont 0 labelsize 11 labelcolor 4 } Fl_Button but_pow { label {x^y} callback {if (base > 10) handle_number(11.0); else handle_operator(check_inv->value()?INVPOW:POW);} private xywh {41 70 32 21} labelfont 0 labelsize 11 labelcolor 4 } Fl_Button but_sin { label sin callback {if (base > 10) handle_number(12.0); else if (! inv) { value[top] = sin(to_drg(value[top])); set_display(value[top],NORM); ready = 1; } else { value[top] = from_drg(asin(value[top])); set_display(value[top],NORM); ready = 1; }} private xywh {76 70 31 21} labelfont 0 labelsize 11 labelcolor 4 } Fl_Button but_cos { label cos callback {if (base > 10) handle_number(13.0);else if (! inv) { value[top] = cos(to_drg(value[top])); set_display(value[top],NORM); ready = 1; } else { value[top] = from_drg(acos(value[top])); set_display(value[top],NORM); ready = 1; }} private xywh {110 70 31 21} labelfont 0 labelsize 11 labelcolor 4 } Fl_Button but_tan { label tan callback {if (base > 10) handle_number(14.0); else if (! inv) { value[top] = tan(to_drg(value[top])); set_display(value[top],NORM); ready = 1; } else { value[top] = from_drg(atan(value[top])); set_display(value[top],NORM); ready = 1; }} private xywh {144 70 30 21} labelfont 0 labelsize 11 labelcolor 4 } Fl_Button but_log { label log callback {if (base > 10) handle_number(15.0);else if (! inv) { value[top] = log10(value[top]); set_display(value[top],NORM); ready = 1; } else { value[top] = pow(10.0, value[top]); set_display(value[top],NORM); ready = 1; }} private xywh {6 93 32 21} labelfont 0 labelsize 11 labelcolor 4 } Fl_Button but_ln { label ln callback {if (! inv) { value[top] = log(value[top]); set_display(value[top],NORM); ready = 1; } else { value[top] = exp(value[top]); set_display(value[top],NORM); ready = 1; }} private xywh {41 93 32 21} labelfont 0 labelsize 11 labelcolor 4 } Fl_Button but_int { label int callback {if (! inv) { value[top] = truncf(value[top]); set_display(value[top],NORM); ready = 1; } else { value[top] = value[top] - truncf(value[top]); set_display(value[top],NORM); ready = 1; }} private xywh {76 93 31 21} labelfont 0 labelsize 11 labelcolor 4 } Fl_Button but_dr { label {d->r} callback {if (! inv) { value[top] = M_PI*value[top]/180.0; set_display(value[top],NORM); ready = 1; } else { value[top] = 180.0*value[top]/M_PI; set_display(value[top],NORM); ready = 1; }} private xywh {110 93 31 21} labelfont 0 labelsize 10 labelcolor 4 } Fl_Button but_drg { label {d-r-g} callback {drgmode++; drgmode %= 3; set_drgdisp();} private xywh {144 93 30 21} labelfont 0 labelsize 9 labelcolor 0 } Fl_Button but_leftbr { label {[} callback {add_left_bracket();} private xywh {6 116 32 21} labelfont 0 labelsize 11 labelcolor 0 shortcut 0x28 } Fl_Button but_rightbr { label {]} callback {add_right_bracket();} private xywh {41 116 32 21} labelfont 0 labelsize 11 labelcolor 0 shortcut 0x29 } Fl_Button but_exch { label exch callback {exchange();} private xywh {76 116 31 21} labelfont 0 labelsize 11 labelcolor 0 } Fl_Button but_invx { label {1/x} callback {value[top] = 1.0/value[top]; set_display(value[top],NORM); ready = 1;} private xywh {110 116 31 21} labelfont 0 labelsize 11 labelcolor 0 } Fl_Button but_fact { label {x!} callback {factorial();} private xywh {144 116 30 21} labelfont 0 labelsize 11 labelcolor 0 } Fl_Button but_Mplus { label {M+} callback {if (! inv) mem += value[top]; else mem -= value[top]; set_display(value[top],NORM); ready = 1; set_memdisp();} private xywh {6 139 32 21} labelfont 0 labelsize 12 labelcolor 4 color 93 } Fl_Button but_Mmult { label {M*} callback {if (! inv) mem *= value[top]; else mem /= value[top]; set_display(value[top],NORM); ready = 1; set_memdisp();} private xywh {41 139 32 21} labelfont 0 labelsize 12 labelcolor 4 color 93 } Fl_Button but_Mclear { label MC callback {if (! inv) { mem = 0.0; set_display(value[top],NORM); ready = 1; set_memdisp(); } else memexch();} private xywh {76 139 31 21} labelfont 0 labelsize 12 labelcolor 4 color 93 } Fl_Button but_Mst { label Mst callback {mem = value[top]; set_display(value[top],NORM); ready = 1; set_memdisp();} private xywh {110 139 31 21} labelfont 0 labelsize 12 labelcolor 0 color 93 } Fl_Button but_Mrc { label Mrc callback {value[top] = mem; set_display(value[top],NORM); ready = 1;} private xywh {144 139 30 21} labelfont 0 labelsize 12 labelcolor 0 color 93 } Fl_Button check_inv { label inv callback {if (inv) { inv = 0; setnormlabels(); } else { inv = 1; setinvlabels(); }} private xywh {6 44 32 21} type Toggle labelfont 0 labelsize 11 labelcolor 4 } Fl_Button but_quit { label Exit callback {win->hide();delete win;} private xywh {145 44 29 21} labeltype ENGRAVED_LABEL labelfont 0 labelsize 12 labelcolor 33 color 15 } } code {init_value(0); drgmode = 1; base = 10; currentbrkt = 0; startbrkt[0] = 0; set_memdisp(); set_brktdisp(); radio_10->value(1); set_drgdisp(); set_display(0.0,NONE);} {} } Function {~SciCalc()} {} {} Function {run(int px=-1,int py=-1)} {open } { code {win->show();Fl::run();} {}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -