11 #ifndef DISABLE_HTMLHELP_SUPPORT
16 /* Messages reserved for the main dialog */
17 #define WM_CLOSE_STATS (WM_APP+1)
18 #define WM_HANDLE_CLIPBOARD (WM_APP+2)
19 #define WM_INSERT_STAT (WM_APP+3)
20 #define WM_LOAD_STAT (WM_APP+4)
21 #define WM_START_CONV (WM_APP+5)
22 #define WM_HANDLE_FROM (WM_APP+6)
23 #define WM_HANDLE_TO (WM_APP+7)
25 #ifdef ENABLE_MULTI_PRECISION
28 #ifndef MPFR_DEFAULT_RND
29 #define MPFR_DEFAULT_RND mpfr_get_default_rounding_mode ()
32 #define LOCAL_EXP_SIZE 100000000L
35 #define LOCAL_EXP_SIZE 10000L
42 #define IDC_STATIC ((DWORD)-1)
45 #define CALC_VERSION TEXT("1.10")
47 #define MAX_CALC_SIZE 256
49 /*#define USE_KEYBOARD_HOOK*/
51 #define SIZEOF(_ar) (sizeof(_ar)/sizeof(_ar[1]))
55 typedef struct _postfix_item_t {
58 #ifdef ENABLE_MULTI_PRECISION
65 unsigned short int code;
66 unsigned short int elem;
69 struct _postfix_item_t *next;
72 void flush_postfix(void);
73 void infix2postfix(char *in_str);
74 postfix_item_t *exec_postfix(void);
99 #ifdef ENABLE_MULTI_PRECISION
109 calc_number_t number
;
110 unsigned int operation
;
114 void run_operator(calc_node_t
*result
, calc_node_t
*a
,
115 calc_node_t
*b
, unsigned int operation
);
116 int exec_infix2postfix(calc_number_t
*, unsigned int);
117 void exec_closeparent(calc_number_t
*);
118 int eval_parent_count(void);
119 void flush_postfix(void);
120 void exec_change_infix(void);
121 void start_rpn_engine(void);
122 void stop_rpn_engine(void);
137 CALC_LAYOUT_SCIENTIFIC
=0,
138 CALC_LAYOUT_STANDARD
,
139 CALC_LAYOUT_CONVERSION
,
144 #ifdef USE_KEYBOARD_HOOK
149 TCHAR buffer
[MAX_CALC_SIZE
];
150 TCHAR source
[MAX_CALC_SIZE
];
169 sequence_t Clipboard
;
170 sequence_t Convert
[2];
171 unsigned int last_operator
;
172 unsigned int prev_operator
;
175 unsigned int sDecimal_len
;
176 unsigned int sThousand_len
;
184 #define CALC_E 2.7182818284590452354
186 #define CALC_PI_2 1.57079632679489661923
187 #define CALC_PI 3.14159265358979323846
188 #define CALC_3_PI_2 4.71238898038468985769
189 #define CALC_2_PI 6.283185307179586476925
191 #define MODIFIER_INV 0x01
192 #define MODIFIER_HYP 0x02
194 void apply_int_mask(calc_number_t
*a
);
195 #ifdef ENABLE_MULTI_PRECISION
196 void validate_rad2angle(calc_number_t
*c
);
197 void validate_angle2rad(calc_number_t
*c
);
199 __int64
logic_dbl2int(calc_number_t
*a
);
200 double logic_int2dbl(calc_number_t
*a
);
201 double validate_rad2angle(double a
);
202 double validate_angle2rad(calc_number_t
*c
);
204 void rpn_sin(calc_number_t
*c
);
205 void rpn_cos(calc_number_t
*c
);
206 void rpn_tan(calc_number_t
*c
);
207 void rpn_asin(calc_number_t
*c
);
208 void rpn_acos(calc_number_t
*c
);
209 void rpn_atan(calc_number_t
*c
);
210 void rpn_sinh(calc_number_t
*c
);
211 void rpn_cosh(calc_number_t
*c
);
212 void rpn_tanh(calc_number_t
*c
);
213 void rpn_asinh(calc_number_t
*c
);
214 void rpn_acosh(calc_number_t
*c
);
215 void rpn_atanh(calc_number_t
*c
);
216 BOOL
rpn_validate_result(calc_number_t
*c
);
217 void rpn_int(calc_number_t
*c
);
218 void rpn_frac(calc_number_t
*c
);
219 void rpn_reci(calc_number_t
*c
);
220 void rpn_fact(calc_number_t
*c
);
221 void rpn_not(calc_number_t
*c
);
222 void rpn_pi(calc_number_t
*c
);
223 void rpn_2pi(calc_number_t
*c
);
224 void rpn_sign(calc_number_t
*c
);
225 void rpn_exp2(calc_number_t
*c
);
226 void rpn_exp3(calc_number_t
*c
);
227 void rpn_sqrt(calc_number_t
*c
);
228 void rpn_cbrt(calc_number_t
*c
);
229 void rpn_exp(calc_number_t
*c
);
230 void rpn_exp10(calc_number_t
*c
);
231 void rpn_ln(calc_number_t
*c
);
232 void rpn_log(calc_number_t
*c
);
233 void rpn_ave(calc_number_t
*c
);
234 void rpn_sum(calc_number_t
*c
);
235 void rpn_s(calc_number_t
*c
);
236 void rpn_s_m1(calc_number_t
*c
);
237 void rpn_dms2dec(calc_number_t
*c
);
238 void rpn_dec2dms(calc_number_t
*c
);
239 void rpn_zero(calc_number_t
*c
);
240 void rpn_copy(calc_number_t
*dst
, calc_number_t
*src
);
241 int rpn_is_zero(calc_number_t
*c
);
242 void rpn_alloc(calc_number_t
*c
);
243 void rpn_free(calc_number_t
*c
);
247 void prepare_rpn_result_2(calc_number_t
*rpn
, TCHAR
*buffer
, int size
, int base
);
248 void convert_text2number_2(calc_number_t
*a
);
249 void convert_real_integer(unsigned int base
);
253 INT_PTR CALLBACK
AboutDlgProc(HWND hWnd
, UINT msg
, WPARAM wp
, LPARAM lp
);
257 void ConvExecute(HWND hWnd
);
258 void ConvAdjust(HWND hWnd
, int n_cat
);
259 void ConvInit(HWND hWnd
);