4 #define WIN32_LEAN_AND_MEAN
15 #ifndef DISABLE_HTMLHELP_SUPPORT
23 /* Messages reserved for the main dialog */
24 #define WM_CLOSE_STATS (WM_APP+1)
25 #define WM_HANDLE_CLIPBOARD (WM_APP+2)
26 #define WM_INSERT_STAT (WM_APP+3)
27 #define WM_LOAD_STAT (WM_APP+4)
28 #define WM_START_CONV (WM_APP+5)
29 #define WM_HANDLE_FROM (WM_APP+6)
30 #define WM_HANDLE_TO (WM_APP+7)
32 /* GNU MULTI-PRECISION LIBRARY support */
33 #ifdef ENABLE_MULTI_PRECISION
36 #ifndef MPFR_DEFAULT_RND
37 #define MPFR_DEFAULT_RND mpfr_get_default_rounding_mode ()
40 #define LOCAL_EXP_SIZE 100000000L
43 #define LOCAL_EXP_SIZE 10000L
47 #define CALC_VERSION _T("1.12")
49 #define MAX_CALC_SIZE 256
51 /* HTMLHELP SUPPORT */
52 typedef HWND (WINAPI
* type_HtmlHelpA
)(HWND
, LPCSTR
, UINT
, DWORD
);
53 typedef HWND (WINAPI
* type_HtmlHelpW
)(HWND
, LPCWSTR
, UINT
, DWORD
);
55 extern type_HtmlHelpA calc_HtmlHelpA
;
56 extern type_HtmlHelpW calc_HtmlHelpW
;
59 #define calc_HtmlHelp calc_HtmlHelpA
61 #define calc_HtmlHelp calc_HtmlHelpW
64 void HtmlHelp_Start(HINSTANCE hInstance
);
65 void HtmlHelp_Stop(void);
68 #if (_WIN32_WINNT >= 0x0600)
76 void Theme_Start(HINSTANCE hInstance
);
77 void Theme_Stop(void);
79 typedef HTHEME (WINAPI
* type_OpenThemeData
)(HWND
,const WCHAR
*);
80 typedef HRESULT (WINAPI
* type_CloseThemeData
)(HTHEME
);
81 typedef HRESULT (WINAPI
* type_DrawThemeBackground
)(HTHEME
,HDC
,int,int,const RECT
*,const RECT
*);
82 typedef BOOL (WINAPI
* type_IsAppThemed
)(void);
83 typedef BOOL (WINAPI
* type_IsThemeActive
)(void);
84 typedef BOOL (WINAPI
* type_IsThemeBackgroundPartiallyTransparent
)(HTHEME
, int, int);
85 typedef HRESULT (WINAPI
* type_DrawThemeParentBackground
)(HWND
, HDC
, RECT
*);
87 extern type_OpenThemeData calc_OpenThemeData
;
88 extern type_CloseThemeData calc_CloseThemeData
;
89 extern type_DrawThemeBackground calc_DrawThemeBackground
;
90 extern type_IsAppThemed calc_IsAppThemed
;
91 extern type_IsThemeActive calc_IsThemeActive
;
92 extern type_IsThemeBackgroundPartiallyTransparent calc_IsThemeBackgroundPartiallyTransparent
;
93 extern type_DrawThemeParentBackground calc_DrawThemeParentBackground
;
95 /*#define USE_KEYBOARD_HOOK*/
97 #define SIZEOF(_ar) (sizeof(_ar)/sizeof(_ar[1]))
103 RPN_OPERATOR_PERCENT
,
123 #ifdef ENABLE_MULTI_PRECISION
133 calc_number_t number
;
134 unsigned int operation
;
138 void run_operator(calc_node_t
*result
, calc_node_t
*a
,
139 calc_node_t
*b
, unsigned int operation
);
140 int exec_infix2postfix(calc_number_t
*, unsigned int);
141 void exec_closeparent(calc_number_t
*);
142 int eval_parent_count(void);
143 void flush_postfix(void);
144 void exec_change_infix(void);
145 void start_rpn_engine(void);
146 void stop_rpn_engine(void);
161 CALC_LAYOUT_SCIENTIFIC
=0,
162 CALC_LAYOUT_STANDARD
,
163 CALC_LAYOUT_CONVERSION
,
168 #ifdef USE_KEYBOARD_HOOK
175 TCHAR buffer
[MAX_CALC_SIZE
];
176 TCHAR source
[MAX_CALC_SIZE
];
195 sequence_t Clipboard
;
196 sequence_t Convert
[2];
197 unsigned int last_operator
;
198 unsigned int prev_operator
;
201 unsigned int sDecimal_len
;
202 unsigned int sThousand_len
;
210 #define CALC_E 2.718281828459045235360
211 #define CALC_PI_2 1.570796326794896619231
212 #define CALC_PI 3.141592653589793238462
213 #define CALC_3_PI_2 4.712388980384689857694
214 #define CALC_2_PI 6.283185307179586476925
216 #define MODIFIER_INV 0x01
217 #define MODIFIER_HYP 0x02
218 #define NO_CHAIN 0x04
220 void apply_int_mask(calc_number_t
*a
);
221 #ifndef ENABLE_MULTI_PRECISION
222 __int64
logic_dbl2int(calc_number_t
*a
);
223 double logic_int2dbl(calc_number_t
*a
);
225 void rpn_sin(calc_number_t
*c
);
226 void rpn_cos(calc_number_t
*c
);
227 void rpn_tan(calc_number_t
*c
);
228 void rpn_asin(calc_number_t
*c
);
229 void rpn_acos(calc_number_t
*c
);
230 void rpn_atan(calc_number_t
*c
);
231 void rpn_sinh(calc_number_t
*c
);
232 void rpn_cosh(calc_number_t
*c
);
233 void rpn_tanh(calc_number_t
*c
);
234 void rpn_asinh(calc_number_t
*c
);
235 void rpn_acosh(calc_number_t
*c
);
236 void rpn_atanh(calc_number_t
*c
);
237 BOOL
rpn_validate_result(calc_number_t
*c
);
238 void rpn_int(calc_number_t
*c
);
239 void rpn_frac(calc_number_t
*c
);
240 void rpn_reci(calc_number_t
*c
);
241 void rpn_fact(calc_number_t
*c
);
242 void rpn_not(calc_number_t
*c
);
243 void rpn_pi(calc_number_t
*c
);
244 void rpn_2pi(calc_number_t
*c
);
245 void rpn_sign(calc_number_t
*c
);
246 void rpn_exp2(calc_number_t
*c
);
247 void rpn_exp3(calc_number_t
*c
);
248 void rpn_sqrt(calc_number_t
*c
);
249 void rpn_cbrt(calc_number_t
*c
);
250 void rpn_exp(calc_number_t
*c
);
251 void rpn_exp10(calc_number_t
*c
);
252 void rpn_ln(calc_number_t
*c
);
253 void rpn_log(calc_number_t
*c
);
254 void rpn_ave(calc_number_t
*c
);
255 void rpn_ave2(calc_number_t
*c
);
256 void rpn_sum(calc_number_t
*c
);
257 void rpn_sum2(calc_number_t
*c
);
258 void rpn_s(calc_number_t
*c
);
259 void rpn_s_m1(calc_number_t
*c
);
260 void rpn_dms2dec(calc_number_t
*c
);
261 void rpn_dec2dms(calc_number_t
*c
);
262 void rpn_zero(calc_number_t
*c
);
263 void rpn_copy(calc_number_t
*dst
, calc_number_t
*src
);
264 int rpn_is_zero(calc_number_t
*c
);
265 void rpn_alloc(calc_number_t
*c
);
266 void rpn_free(calc_number_t
*c
);
270 void prepare_rpn_result_2(calc_number_t
*rpn
, TCHAR
*buffer
, int size
, int base
);
271 void convert_text2number_2(calc_number_t
*a
);
272 void convert_real_integer(unsigned int base
);
276 INT_PTR CALLBACK
AboutDlgProc(HWND hWnd
, UINT msg
, WPARAM wp
, LPARAM lp
);
280 void ConvExecute(HWND hWnd
);
281 void ConvAdjust(HWND hWnd
, int n_cat
);
282 void ConvInit(HWND hWnd
);
284 #endif /* __CALC_H__ */