You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(36) |
Sep
(44) |
Oct
(25) |
Nov
(2) |
Dec
(5) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(1) |
Feb
(1) |
Mar
|
Apr
|
May
(9) |
Jun
|
Jul
(4) |
Aug
(8) |
Sep
(16) |
Oct
|
Nov
(2) |
Dec
(28) |
2008 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
(11) |
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
|
Dec
|
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(33) |
Jul
(5) |
Aug
(7) |
Sep
(9) |
Oct
(31) |
Nov
(25) |
Dec
(21) |
2011 |
Jan
(2) |
Feb
(12) |
Mar
|
Apr
(7) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Mapi B. <ma...@us...> - 2011-04-14 19:25:03
|
Update of /cvsroot/easycalc/PPCport/system - UI In directory vz-cvs-4.sog:/tmp/cvs-serv3505 Modified Files: EasyCalc.cpp EasyCalc.h Skin.cpp Skin.h Log Message: 1.25g-1 Index: EasyCalc.cpp =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalc.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** EasyCalc.cpp 28 Feb 2011 22:13:55 -0000 1.12 --- EasyCalc.cpp 14 Apr 2011 19:25:01 -0000 1.13 *************** *** 75,79 **** #define MAX_LOADSTRING 100 ! #define EASYCALC_APPVERSION _T("1.25g") #define WM_APP_ENDVMENU (WM_APP+1) --- 75,79 ---- #define MAX_LOADSTRING 100 ! #define EASYCALC_APPVERSION _T("1.25g-1") #define WM_APP_ENDVMENU (WM_APP+1) Index: Skin.h =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/Skin.h,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** Skin.h 28 Feb 2011 22:13:55 -0000 1.12 --- Skin.h 14 Apr 2011 19:25:01 -0000 1.13 *************** *** 248,252 **** void print_result(HDC hdc); void paint_result(HDC hdc); ! HBITMAP allocResult(LONG cx, LONG cy); void deleteResult(void); void erase_result(HDC hdc); --- 248,252 ---- void print_result(HDC hdc); void paint_result(HDC hdc); ! HBITMAP allocResult(HDC hdc, LONG cx, LONG cy); void deleteResult(void); void erase_result(HDC hdc); Index: EasyCalc.h =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalc.h,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** EasyCalc.h 28 Feb 2011 22:13:55 -0000 1.10 --- EasyCalc.h 14 Apr 2011 19:25:01 -0000 1.11 *************** *** 83,88 **** /* Magic number and version number for the state file. - * State file versions correspond to application versions as follows: - * Version 1: 1.25 first release */ #define EASYCALC_MAGIC 0x4543414C --- 83,86 ---- Index: Skin.cpp =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/Skin.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** Skin.cpp 28 Feb 2011 22:13:55 -0000 1.12 --- Skin.cpp 14 Apr 2011 19:25:01 -0000 1.13 *************** *** 1474,1481 **** * OS specific: remove result BMP. * ********************************************************************************/ ! HBITMAP Skin::allocResult (LONG cx, LONG cy) { HBITMAP bm; ! bm = CreateCompatibleBitmap(resultDC, cx, cy); if (bm != NULL) { oldResultObj = SelectObject(resultDC, bm); --- 1474,1482 ---- * OS specific: remove result BMP. * ********************************************************************************/ ! HBITMAP Skin::allocResult (HDC hdc, LONG cx, LONG cy) { HBITMAP bm; ! // bm = CreateCompatibleBitmap(resultDC, cx, cy); ! bm = CreateCompatibleBitmap(hdc, cx, cy); if (bm != NULL) { oldResultObj = SelectObject(resultDC, bm); *************** *** 1564,1568 **** // GetTextExtentPoint32(hdc, g_dispResult, g_result_len, &result_size); GetTextExtentPoint32(resultDC, g_dispResult, g_result_len, &result_size); ! resultBmp = allocResult(result_size.cx, result_size.cy); if (resultBmp == NULL) { SelectObject(resultDC, oldFont); // Set back default object --- 1565,1569 ---- // GetTextExtentPoint32(hdc, g_dispResult, g_result_len, &result_size); GetTextExtentPoint32(resultDC, g_dispResult, g_result_len, &result_size); ! resultBmp = allocResult(hdc, result_size.cx, result_size.cy); if (resultBmp == NULL) { SelectObject(resultDC, oldFont); // Set back default object *************** *** 1573,1576 **** --- 1574,1579 ---- // only set them when BitBlt-ing !! RECT rcBmp = {0, 0, result_size.cx, result_size.cy}; + COLORREF oldFg = SetTextColor(resultDC, display_fg); + COLORREF oldBg = SetBkColor(resultDC, display_bg); int oldBgM = SetBkMode(resultDC, OPAQUE); DrawText(resultDC, g_dispResult, -1, &rcBmp, *************** *** 1595,1608 **** scroll |= ANNVAL_SCR_RIGHT; } ! // Set colors now, because BitBlt-inga monochrome bitmap COLORREF oldFg = SetTextColor(hdc, display_fg); COLORREF oldBg = SetBkColor(hdc, display_bg); BitBlt(hdc, display_loc.x, display_loc.y, display_w, BIGFONT_SIZE * magnification, resultDC, result_size.cx - display_w - g_scroll_result, 0, SRCCOPY); } else { ! // Set colors now, because BitBlt-inga monochrome bitmap COLORREF oldFg = SetTextColor(hdc, display_fg); COLORREF oldBg = SetBkColor(hdc, display_bg); BitBlt(hdc, display_loc.x + display_w - result_size.cx, display_loc.y, result_size.cx, BIGFONT_SIZE * magnification, --- 1598,1613 ---- scroll |= ANNVAL_SCR_RIGHT; } ! // Set colors now, because BitBlt-ing a monochrome bitmap COLORREF oldFg = SetTextColor(hdc, display_fg); COLORREF oldBg = SetBkColor(hdc, display_bg); + int oldBgM = SetBkMode(hdc, OPAQUE); BitBlt(hdc, display_loc.x, display_loc.y, display_w, BIGFONT_SIZE * magnification, resultDC, result_size.cx - display_w - g_scroll_result, 0, SRCCOPY); } else { ! // Set colors now, because BitBlt-ing a monochrome bitmap COLORREF oldFg = SetTextColor(hdc, display_fg); COLORREF oldBg = SetBkColor(hdc, display_bg); + int oldBgM = SetBkMode(hdc, OPAQUE); BitBlt(hdc, display_loc.x + display_w - result_size.cx, display_loc.y, result_size.cx, BIGFONT_SIZE * magnification, *************** *** 1673,1677 **** resultDC = CreateCompatibleDC(hdc); } ! // Calculate approximate size with big font only, this will give an overestimate if (hFontBig_display == NULL) { LOGFONT lf; --- 1678,1682 ---- resultDC = CreateCompatibleDC(hdc); } ! // Calculate overestimated size with big font only if (hFontBig_display == NULL) { LOGFONT lf; *************** *** 1690,1699 **** GetTextExtentPoint32(resultDC, g_dispResult, g_result_len, &result_size); // SelectObject(hdc, oldFont); // Set back default object ! resultBmp = allocResult(result_size.cx, result_size.cy); if (resultBmp == NULL) { SelectObject(resultDC, oldFont); // Set back default object return; } ! // Clear bitmap RECT rcBmp = {0, 0, result_size.cx, result_size.cy}; COLORREF oldBg = SetBkColor(resultDC, display_bg); --- 1695,1705 ---- GetTextExtentPoint32(resultDC, g_dispResult, g_result_len, &result_size); // SelectObject(hdc, oldFont); // Set back default object ! resultBmp = allocResult(hdc, result_size.cx, result_size.cy); if (resultBmp == NULL) { SelectObject(resultDC, oldFont); // Set back default object return; } ! // Clear bitmap, we'll have to write in transparent mode since small ! // fonts can't set background on the whole height. RECT rcBmp = {0, 0, result_size.cx, result_size.cy}; COLORREF oldBg = SetBkColor(resultDC, display_bg); *************** *** 1707,1714 **** // only set them when BitBlt-ing !! int oldBgM = SetBkMode(resultDC, TRANSPARENT); paint_resultpow_rec(resultDC, false, work_dispResult); // Start with normal text. SelectObject(resultDC, oldFont); // Set back default object // if (result_size_recompute) { // Was left at true to provoke recomputation of result_size.cx ! HBITMAP bm = CreateCompatibleBitmap(resultDC, result_size.cx, result_size.cy); if (bm == NULL) { return; --- 1713,1722 ---- // only set them when BitBlt-ing !! int oldBgM = SetBkMode(resultDC, TRANSPARENT); + COLORREF oldFg = SetTextColor(resultDC, display_fg); paint_resultpow_rec(resultDC, false, work_dispResult); // Start with normal text. SelectObject(resultDC, oldFont); // Set back default object // if (result_size_recompute) { // Was left at true to provoke recomputation of result_size.cx ! // HBITMAP bm = CreateCompatibleBitmap(resultDC, result_size.cx, result_size.cy); ! HBITMAP bm = CreateCompatibleBitmap(hdc, result_size.cx, result_size.cy); if (bm == NULL) { return; *************** *** 1736,1749 **** scroll |= ANNVAL_SCR_RIGHT; } ! // Set colors now, because BitBlt-inga monochrome bitmap COLORREF oldFg = SetTextColor(hdc, display_fg); COLORREF oldBg = SetBkColor(hdc, display_bg); BitBlt(hdc, display_loc.x, display_loc.y, display_w, BIGFONT_SIZE * magnification, resultDC, result_size.cx - display_w - g_scroll_result, 0, SRCCOPY); } else { ! // Set colors now, because BitBlt-inga monochrome bitmap COLORREF oldFg = SetTextColor(hdc, display_fg); COLORREF oldBg = SetBkColor(hdc, display_bg); BitBlt(hdc, display_loc.x + display_w - result_size.cx, display_loc.y, result_size.cx, BIGFONT_SIZE * magnification, --- 1744,1759 ---- scroll |= ANNVAL_SCR_RIGHT; } ! // Set colors now, because BitBlt-ing a monochrome bitmap COLORREF oldFg = SetTextColor(hdc, display_fg); COLORREF oldBg = SetBkColor(hdc, display_bg); + int oldBgM = SetBkMode(hdc, OPAQUE); BitBlt(hdc, display_loc.x, display_loc.y, display_w, BIGFONT_SIZE * magnification, resultDC, result_size.cx - display_w - g_scroll_result, 0, SRCCOPY); } else { ! // Set colors now, because BitBlt-ing a monochrome bitmap COLORREF oldFg = SetTextColor(hdc, display_fg); COLORREF oldBg = SetBkColor(hdc, display_bg); + int oldBgM = SetBkMode(hdc, OPAQUE); BitBlt(hdc, display_loc.x + display_w - result_size.cx, display_loc.y, result_size.cx, BIGFONT_SIZE * magnification, |
From: Mapi B. <ma...@us...> - 2011-04-14 19:24:12
|
Update of /cvsroot/easycalc/PPCport/langs/merge In directory vz-cvs-4.sog:/tmp/cvs-serv3397 Modified Files: lang.rcp Log Message: 1.25g-1 Index: lang.rcp =================================================================== RCS file: /cvsroot/easycalc/PPCport/langs/merge/lang.rcp,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** lang.rcp 28 Feb 2011 22:11:32 -0000 1.11 --- lang.rcp 14 Apr 2011 19:24:10 -0000 1.12 *************** *** 1369,1373 **** "$$BINARY" = "Binaire" "$$OCTAL" = "Octal" ! "$$HEXADEC" = "Hexadéc." "$$NORMAL" = "Normal" --- 1369,1373 ---- "$$BINARY" = "Binaire" "$$OCTAL" = "Octal" ! "$$HEXADEC" = "Hexadécimal" "$$NORMAL" = "Normal" *************** *** 1378,1386 **** "$$PRECISION" = "Précision" "$$FORCE INTEGER" = "En nombres entiers" ! "$$REDUCE PRECISION" = "Reduit la précision" ! "$$STRIP ZEROS" = "Supprime les 0" "$$MATCH BRACKETS" = "Équilibrer ()" ! "$$SHOW UNITS" = "Affiche les unités" ! "$$INSERT HELP" = "Insère aide" /**************************************************/ "$$OS NUM PREFS" = "OS Num Prefs" --- 1378,1386 ---- "$$PRECISION" = "Précision" "$$FORCE INTEGER" = "En nombres entiers" ! "$$REDUCE PRECISION" = "Réduire la précision" ! "$$STRIP ZEROS" = "Supprimer les 0" "$$MATCH BRACKETS" = "Équilibrer ()" ! "$$SHOW UNITS" = "Afficher les unités" ! "$$INSERT HELP" = "Insèrer aide" /**************************************************/ "$$OS NUM PREFS" = "OS Num Prefs" |
From: Mapi B. <ma...@us...> - 2011-04-14 19:23:42
|
Update of /cvsroot/easycalc/PPCport/langs In directory vz-cvs-4.sog:/tmp/cvs-serv3311 Modified Files: fr.rcp Log Message: 1.25g-1 Index: fr.rcp =================================================================== RCS file: /cvsroot/easycalc/PPCport/langs/fr.rcp,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** fr.rcp 28 Feb 2011 22:11:11 -0000 1.9 --- fr.rcp 14 Apr 2011 19:23:40 -0000 1.10 *************** *** 26,30 **** "$$BINARY" = "Binaire" "$$OCTAL" = "Octal" ! "$$HEXADEC" = "Hexadéc." "$$NORMAL" = "Normal" --- 26,30 ---- "$$BINARY" = "Binaire" "$$OCTAL" = "Octal" ! "$$HEXADEC" = "Hexadécimal" "$$NORMAL" = "Normal" *************** *** 35,43 **** "$$PRECISION" = "Précision" "$$FORCE INTEGER" = "En nombres entiers" ! "$$REDUCE PRECISION" = "Reduit la précision" ! "$$STRIP ZEROS" = "Supprime les 0" "$$MATCH BRACKETS" = "Équilibrer ()" ! "$$SHOW UNITS" = "Affiche les unités" ! "$$INSERT HELP" = "Insère aide" /**************************************************/ "$$OS NUM PREFS" = "OS Num Prefs" --- 35,43 ---- "$$PRECISION" = "Précision" "$$FORCE INTEGER" = "En nombres entiers" ! "$$REDUCE PRECISION" = "Réduire la précision" ! "$$STRIP ZEROS" = "Supprimer les 0" "$$MATCH BRACKETS" = "Équilibrer ()" ! "$$SHOW UNITS" = "Afficher les unités" ! "$$INSERT HELP" = "Insèrer aide" /**************************************************/ "$$OS NUM PREFS" = "OS Num Prefs" |
From: Mapi B. <ma...@us...> - 2011-04-14 19:23:17
|
Update of /cvsroot/easycalc/PPCport/docs/images In directory vz-cvs-4.sog:/tmp/cvs-serv3212 Modified Files: GraphSpeed.png Log Message: 1.25g-1 Index: GraphSpeed.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/GraphSpeed.png,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 Binary files /tmp/cvsVh8uYT and /tmp/cvshrawY4 differ |
From: Mapi B. <ma...@us...> - 2011-04-14 19:22:51
|
Update of /cvsroot/easycalc/PPCport/docs In directory vz-cvs-4.sog:/tmp/cvs-serv3129 Modified Files: manual.html Log Message: 1.25g-1 Index: manual.html =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/manual.html,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** manual.html 28 Feb 2011 22:08:34 -0000 1.2 --- manual.html 14 Apr 2011 19:22:48 -0000 1.3 *************** *** 534,538 **** <p>There is a graph zone and a smaller track view zone which highlights where is the graph view zone if it's in there. ! <IMG width="242" height="293" alt="Graph speed" src="images/GraphSpeed.png"> <br /> --- 534,538 ---- <p>There is a graph zone and a smaller track view zone which highlights where is the graph view zone if it's in there. ! <IMG width="241" height="293" alt="Graph speed" src="images/GraphSpeed.png"> <br /> |
From: Mapi B. <ma...@us...> - 2011-04-14 19:22:26
|
Update of /cvsroot/easycalc/PPCport/core In directory vz-cvs-4.sog:/tmp/cvs-serv3093 Modified Files: grsetup.cpp Log Message: 1.25g-1 Index: grsetup.cpp =================================================================== RCS file: /cvsroot/easycalc/PPCport/core/grsetup.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** grsetup.cpp 28 Feb 2011 22:07:18 -0000 1.1 --- grsetup.cpp 14 Apr 2011 19:22:24 -0000 1.2 *************** *** 60,64 **** * * DESCRIPTION: Setup the array with names and positions of ! * existing user selected functions * * PARAMETERS: descr[MAX_GRFUNCS] - array that will contain --- 60,64 ---- * * DESCRIPTION: Setup the array with names and positions of ! * existing and activated user selected functions. * * PARAMETERS: descr[MAX_GRFUNCS] - array that will contain *************** *** 70,90 **** ***********************************************************************/ int grsetup_fn_descr_arr (TCHAR **descr, int *nums) { ! int i, count; ! for (i=0,count=0 ; i<MAX_GRFUNCS ; i++) { ! if ((graphPrefs.functype == graph_param) ! && (StrLen(grsetup_get_fname(i*2))) ! && (StrLen(grsetup_get_fname(i*2+1)))) { ! descr[count] = (TCHAR *) grsetup_fn_descr(i*2); ! nums[count] = i; ! count++; ! } else if ((graphPrefs.functype != graph_param) ! && (StrLen(grsetup_get_fname(i)))) { ! descr[count] = (TCHAR *) grsetup_fn_descr(i); ! nums[count] = i; ! count++; ! } ! } ! return (count); } --- 70,92 ---- ***********************************************************************/ int grsetup_fn_descr_arr (TCHAR **descr, int *nums) { ! int i, count; ! for (i=0,count=0 ; i<MAX_GRFUNCS ; i++) { ! // Mapi: only select those which are enabled on display ! if (graphPrefs.grEnable[graphPrefs.functype][i]) ! if ((graphPrefs.functype == graph_param) ! && (StrLen(grsetup_get_fname(i*2))) ! && (StrLen(grsetup_get_fname(i*2+1)))) { ! descr[count] = (TCHAR *) grsetup_fn_descr(i*2); ! nums[count] = i; ! count++; ! } else if ((graphPrefs.functype != graph_param) ! && (StrLen(grsetup_get_fname(i)))) { ! descr[count] = (TCHAR *) grsetup_fn_descr(i); ! nums[count] = i; ! count++; ! } ! } ! return (count); } |
From: Mapi B. <ma...@us...> - 2011-04-14 19:22:02
|
Update of /cvsroot/easycalc/PPCport In directory vz-cvs-4.sog:/tmp/cvs-serv1996 Modified Files: EasyCalc.vcproj.CLIENT5.Admin.user ReadMe.txt Log Message: 1.25g-1 Index: ReadMe.txt =================================================================== RCS file: /cvsroot/easycalc/PPCport/ReadMe.txt,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** ReadMe.txt 28 Feb 2011 22:18:25 -0000 1.12 --- ReadMe.txt 14 Apr 2011 19:22:00 -0000 1.13 *************** *** 5,9 **** Installation & run instructions: -------------------------------- ! - Pick the WM5 or WM6 zip file as appropriate for your PDA or Touch Phone. - From the zip file: copy on a PC, unzip, and copy contents to a directory --- 5,9 ---- Installation & run instructions: -------------------------------- ! - Pick the PPC2003, WM5 or WM6 zip file as appropriate for your PDA or Touch Phone. - From the zip file: copy on a PC, unzip, and copy contents to a directory *************** *** 36,39 **** --- 36,45 ---- Releases: --------- + * 1.25g-1 PPC: + - Corrected legacy code behavior when selecting curve for tracking or intersection, + show only in list graph curves which have been enabled for display. + - Corrected a black line bug in the result area of the calculator, showing in what + seems to be rare cases - but at least in the case of one HTC (cf. bug tracker #3256954). + * 1.25g PPC: - Graphes at last, but not least ...! (lots of features in there, that *************** *** 339,342 **** --- 345,351 ---- = 1 horizontal. + - Corrected legacy code behavior when selecting curve for tracking or intersection, + show only in list graph curves which have been enabled for display. + Still missing in 1.25g: Index: EasyCalc.vcproj.CLIENT5.Admin.user =================================================================== RCS file: /cvsroot/easycalc/PPCport/EasyCalc.vcproj.CLIENT5.Admin.user,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** EasyCalc.vcproj.CLIENT5.Admin.user 28 Feb 2011 22:04:23 -0000 1.7 --- EasyCalc.vcproj.CLIENT5.Admin.user 14 Apr 2011 19:22:00 -0000 1.8 *************** *** 209,213 **** /> <DeploymentTool ! DeploymentDevice="81551346-886F-43a2-B707-A91FAE1B33A7" /> <DebuggerTool --- 209,213 ---- /> <DeploymentTool ! DeploymentDevice="e4fc2bc5-3ac4-452c-a893-ad4f273c3a7c" /> <DebuggerTool |
From: Mapi B. <ma...@us...> - 2011-02-28 22:18:27
|
Update of /cvsroot/easycalc/PPCport In directory vz-cvs-4.sog:/tmp/cvs-serv9614 Modified Files: ReadMe.txt Log Message: 1.25g Index: ReadMe.txt =================================================================== RCS file: /cvsroot/easycalc/PPCport/ReadMe.txt,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** ReadMe.txt 28 Feb 2011 22:04:23 -0000 1.11 --- ReadMe.txt 28 Feb 2011 22:18:25 -0000 1.12 *************** *** 73,77 **** whether using keyboard, SIP or buttons. - Limited history to 100 entries, as the history popup can be long to appear ! when history is lengthy. If somebody needs mode, let me know. - Pocket PC specific documentation (in english), which can be accessed through the Help menu. --- 73,77 ---- whether using keyboard, SIP or buttons. - Limited history to 100 entries, as the history popup can be long to appear ! when history is lengthy. If somebody needs more, let me know. - Pocket PC specific documentation (in english), which can be accessed through the Help menu. |
Update of /cvsroot/easycalc/PPCport/system - UI In directory vz-cvs-4.sog:/tmp/cvs-serv7431 Modified Files: EasyCalc.cpp EasyCalc.gif EasyCalc.h EasyCalc.layout EasyCalc2.gif EasyCalc2.layout EasyCalc3.gif EasyCalc3.layout EasyCalcppc.aps EasyCalcppc.rc resourceppc.h shell_loadimage.cpp shell_loadimage.h Skin.cpp Skin.h StateManager.cpp StateManager.h Added Files: bitmap1.bmp bitmap2.bmp EasyCalcG.gif EasyCalcG.layout SkinList.cpp SkinList.h Log Message: 1.25g Index: EasyCalc.h =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalc.h,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** EasyCalc.h 24 Dec 2009 16:40:25 -0000 1.9 --- EasyCalc.h 28 Feb 2011 22:13:55 -0000 1.10 *************** *** 58,87 **** #define LL(x) x - /* MSVC++ 6.0 lacks a few math functions that Free42 needs. - * I've defined workarounds in mathfudge.c. NOTE: my versions - * of isnan(), finite(), and isinf() are a bit lame -- I *think* - * they handle infinities properly, but definitely not NaNs - * (although NaNs shouldn't be much of a problem because the Free42 - * code mostly tries to avoid them, rather than detect them after - * the fact). - */ - //#ifdef __cplusplus - // extern "C" { - //#endif - int isnan(double x); - int finite(double x); - int isinf(double x); - void sincos(double x, double *sinx, double *cosx); - double asinh(double x); - double acosh(double x); - double atanh(double x); - double expm1(double x); - double log1p(double x); - #ifdef _WIN32_WCE - double hypot(double x, double y); - #endif - //#ifdef __cplusplus - // } - //#endif #else --- 58,61 ---- *************** *** 106,110 **** // Version of the state file #define STATE_VERSION_ORIG 1 ! #define STATE_VERSION 4 /* Magic number and version number for the state file. --- 80,84 ---- // Version of the state file #define STATE_VERSION_ORIG 1 ! #define STATE_VERSION 5 /* Magic number and version number for the state file. *************** *** 132,135 **** --- 106,116 ---- #define altGraphBadVal 15 #define altMemoImportError 16 + #define altBadGifFile 17 + #define altMemAllocError 18 + #define altCalcNeedTrackPt 19 + #define altCalcNeedCurveSel 20 + #define altCalcNeedSelect 21 + #define altComputeResult 22 + #define altGrcFuncErr 23 #define FrmAlert FrmPopupForm #define FrmAlertMain(a) FrmPopupForm(a, NULL) *************** *** 152,158 **** --- 133,141 ---- extern LibLang *libLang; extern int g_systUserLangId; // Detected language of the system user + extern HWND g_hWnd; // current main window handle extern HWND g_hwndE; // Handle to the edit control input area. extern void *g_cedit2_obj; // Input area subclassing object. extern StateManager *stateMgr; + extern int ann_state[NB_ANNUN]; // Annunciators state #endif *************** *** 162,167 **** void read_state (void); void save_state (void); void shell_beeper(int frequency, int duration); ! void shell_annunciators(int skin, int shf, int angle_mode, int int_mode, int run); void shell_scroll_annunciators(int scroll); void shell_powerdown(); --- 145,151 ---- void read_state (void); void save_state (void); + void shell_graphAction (int key); void shell_beeper(int frequency, int duration); ! void shell_annunciators(int skin, int shf, int angle_mode, int int_mode, int pen_mode, int run); void shell_scroll_annunciators(int scroll); void shell_powerdown(); *************** *** 189,192 **** --- 173,178 ---- void FinShowValue(int rowNb, TCHAR *value); + void GraphConfSetRow (int rowNb, TCHAR *celltext); + void wait_draw(void); void wait_erase(void); Index: EasyCalc.cpp =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalc.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** EasyCalc.cpp 24 Dec 2009 17:15:16 -0000 1.11 --- EasyCalc.cpp 28 Feb 2011 22:13:55 -0000 1.12 *************** *** 36,43 **** #include "StateManager.h" #include "system - UI/Skin.h" #include "compat/Lang.h" #include "core/core_main.h" #include "core/core_display.h" ! #include "defuns.h" #include "core/Main.h" #include "core/varmgr.h" --- 36,44 ---- #include "StateManager.h" [...3640 lines suppressed...] + + /******************************************************************************** * FUNCTION: WndGetVarString (HWND, UINT, WPARAM, LPARAM) * * Message handler for the IDD_VARSTRINGENTRY dialog. * *************** *** 6201,6205 **** } } else if (notify_src == IDCANCEL) { - unsigned int notify_msg = wParam >> 16; if (notify_msg == BN_CLICKED) { EndDialog(hDlg, 0); --- 8004,8007 ---- *************** *** 6207,6211 **** } } else if (notify_src == IDOK) { - unsigned int notify_msg = wParam >> 16; if (notify_msg == BN_CLICKED) { // When input is made, retrieve it --- 8009,8012 ---- Index: Skin.h =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/Skin.h,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** Skin.h 24 Dec 2009 16:40:25 -0000 1.11 --- Skin.h 28 Feb 2011 22:13:55 -0000 1.12 *************** *** 26,29 **** --- 26,30 ---- #include "defuns.h" + #define GR_WHITE 0x00FFFFFF typedef struct { *************** *** 51,54 **** --- 52,60 ---- #define IMGTYPE_TRUECOLOR 4 + #define INPUTFONT_SIZE 14 + #define BIGFONT_SIZE 18 + #define SMALLFONT_SIZE 12 + #define VERYSMALLFONT_SIZE 11 + #define KEYMAP_MAX_MACRO_LENGTH 31 typedef struct { *************** *** 69,73 **** typedef struct { ! SkinRect disp_rect; SkinPoint src; SkinPoint sel; --- 75,80 ---- typedef struct { ! bool exists; ! SkinRect disp_rect; SkinPoint src; SkinPoint sel; *************** *** 75,78 **** --- 82,91 ---- typedef enum { + track_set, + track_move, + track_off + } TtrackAction; + + typedef enum { COPYRESULT=0, VARSAVEAS, *************** *** 88,96 **** TODEGREE2, TOGRAD ! }resSelection; #define SELECTION_COUNT 13 #define RESULTAREA_SIZE 128 #define INPUTAREA_SIZE 2048 class Skin { protected: --- 101,122 ---- TODEGREE2, TOGRAD ! } resSelection; #define SELECTION_COUNT 13 + typedef enum { + grphStart=0, + grphInitComplete, + grphZoneStarted, + grphZoneComplete, + grphViewStart, + grphViewStarted, + grphEnd + } t_graphState; + #define RESULTAREA_SIZE 128 #define INPUTAREA_SIZE 2048 + + #define MAX_GRFUNCS 6 // Max number of functions which can be graphed on screen + class Skin { protected: *************** *** 100,109 **** SkinPoint display_loc; // Description of the display in the skin ! int display_w, display_h; SkinPoint display_scale; COLORREF display_bg, display_fg; HFONT hFontBig_display; HFONT hFontSmall_display; HFONT hFont_input; SkinKey *keylist; // Array of keys in the skin int nkeys; // Number of keys in the skin --- 126,162 ---- SkinPoint display_loc; // Description of the display in the skin ! int display_w, display_h, display_basey, zonebmp_basey; ! SkinPoint view_loc; // Description of the wide view in the graph skin ! int view_w, view_h, view_basey, viewbmp_basey; SkinPoint display_scale; + SkinPoint view_scale; + RECT viewRect; // Describes view area + RECT zoneOnView, tempZoneOnView; + RECT zv_intersect, tempzv_intersect; + bool intersect, tempIntersect; COLORREF display_bg, display_fg; + COLORREF graphColors[MAX_GRFUNCS+3]; // 6 line colors + axis, grids and background + HPEN graphPens[MAX_GRFUNCS+3]; // 6 line colors + axis, grids and background + HDC resultDC; + HDC displayDC; + HDC zoneDC; // For keeping graph bitmap in memory + HDC viewDC; // For keeping wide view bitmap in memory + HGDIOBJ oldResultObj, oldZoneObj, oldViewObj; + HBITMAP resultBmp; + HBITMAP zoneBmp; + HBITMAP viewBmp; + t_graphState graphState; // Tells where we are during graph drawing + double viewX, viewY, span, wonz_xr, wonz_yr; + double selx0, sely0, calcx, calcy, calcr; + int selArea, prevx, prevy, prevsx, prevsy, selsx0, selsy0, selprevsx, selprevsy; + RECT cross_rcx, cross_rcy, sel_rc; + HRGN zone_rgn, zgph_rgn, zcomplement_rgn; + HRGN view_rgn, vgph_rgn, vcomplement_rgn; HFONT hFontBig_display; HFONT hFontSmall_display; + HFONT hFontVerySmall_display; HFONT hFont_input; + // HANDLE graph_thread; // Handle to the graph drawing thread + HPEN hPenSelZone; SkinKey *keylist; // Array of keys in the skin int nkeys; // Number of keys in the skin *************** *** 119,124 **** int skin_type; - int skin_width, - skin_height; int skin_ncolors; const SkinColor *skin_colors; --- 172,175 ---- *************** *** 130,134 **** HBITMAP skin_dib; unsigned char *disp_bitmap; // Source bitmap to clear display parts - HBITMAP result_hbitmap; // Handle to bitmap for clearing result int disp_bytesperline; bool display_enabled; // Enable or disable screen repaints. --- 181,184 ---- *************** *** 150,159 **** public: ! int magnification; Skin(); // Constructor ~Skin(); // Destructor ! int load(TCHAR *skinname, const TCHAR *basedir, int width, int height); int getchar(void); void rewind(void); --- 200,219 ---- public: ! bool graph; // Tells if this is a graphic display skin ! bool recalc, recalc_zone, recalc_view; // Signal to recompute graph or only parts of it on next repaint ! bool graphComplete, zoneComplete, viewComplete, continueOnView; ! int skin_width, ! skin_height; ! int magnification; ! HBRUSH editBgBrush; ! int curve_nb; // Curve being tracked ! bool is_cross, is_selecting; // Type of selection on curve ! double param0, param; // Start and end of selection on input parameter. ! // If only a cross, value is in param, and param0 == NaN Skin(); // Constructor ~Skin(); // Destructor ! int load(TCHAR *skinname, const TCHAR *basedir, int width, int height, HDC hdc); int getchar(void); void rewind(void); *************** *** 161,165 **** int width, int height); void put_pixels(unsigned const char *data); ! void finish_image(void); void repaint(HDC hdc, HDC memdc); --- 221,225 ---- int width, int height); void put_pixels(unsigned const char *data); ! void finish_image(HDC hdc); void repaint(HDC hdc, HDC memdc); *************** *** 170,176 **** unsigned char *keymap_lookup(int keycode, bool ctrl, bool alt, bool shift, bool cshift, bool *exact); void repaint_key(HDC hdc, HDC memdc, int key, int state); ! void display_blitter(HDC hdc, const char *bits, int bytesperline, int x, int y, ! int width, int height); ! void repaint_result(HDC hdc, HDC memdc); COLORREF getDisplayFgColor(void); COLORREF getDisplayBgColor(void); --- 230,235 ---- unsigned char *keymap_lookup(int keycode, bool ctrl, bool alt, bool shift, bool cshift, bool *exact); void repaint_key(HDC hdc, HDC memdc, int key, int state); ! bool tapOnResult(HDC hdc, int x, int y, TtrackAction action); ! void repaint_result(HDC hdc); COLORREF getDisplayFgColor(void); COLORREF getDisplayBgColor(void); *************** *** 189,192 **** --- 248,254 ---- void print_result(HDC hdc); void paint_result(HDC hdc); + HBITMAP allocResult(LONG cx, LONG cy); + void deleteResult(void); + void erase_result(HDC hdc); void print_resultpow(void *hWnd_p, TCHAR *res_text); void print_resultpow(HDC hdc); *************** *** 205,208 **** --- 267,306 ---- void varDefList(TCHAR *name, TCHAR *deftext, int itemNum, void *hWnd); void display_set_enabled(bool enable); + + void dragGraph(HDC hdc, int area, int dx, int dy); + void showOnGraph(HDC hdc, double param); + void tapOnGraph(HDC hdc, int area, int x, int y, TtrackAction action); + void repaint_grphVal(HDC hdc, int annun); + + void refreshWonzRatio(HDC hdc); + void scaleGraph(HDC hdc, int area, double scale_in); + void centerView(HDC hdc); + void refreshView(HDC hdc); + void refreshViewAndTrigRecalc(HDC hdc); + void moveGraph(HDC hdc, int area, double x, double y); + void normZone(HDC hdc); + void selPen(int i); + void drawline(int x1, int y1, int x2, int y2); + void finishline(int color); + void trigRecalcGraph(void); + void trigRecalcZone(void); + void trigRecalcView(void); + void resetGraphSel(void); + void resetZone(void); + void resetView(void); + void switchSelGraph(HDC hdc); + int initGraph(void); + int initView(void); + void clearZoneGraph(void); + void drawZoneGraph(void); + void clearViewGraph(void); + DWORD drawgraph_async(void); + // DWORD drawgraph_thread(void); + int draw_graph(HDC hdc); + void stop_graph(void); + void draw_tempZoneOnView(HDC hdc); + void set_tempZoneOnView(int sx, int sy); + void draw_zoneOnView(HDC hdc); + void calc_zoneOnView(void); }; Index: StateManager.cpp =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/StateManager.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** StateManager.cpp 24 Dec 2009 16:40:25 -0000 1.7 --- StateManager.cpp 28 Feb 2011 22:13:55 -0000 1.8 *************** *** 5,8 **** --- 5,9 ---- #include "core/mlib/fp.h" #include "core/mlib/history.h" + #include "core/mlib/mathem.h" #include "EasyCalc.h" *************** *** 13,16 **** --- 14,18 ---- _tcscpy(state.skinName[1], _T("EasyCalc2")); _tcscpy(state.skinName[2], _T("EasyCalc3")); + _tcscpy(state.skinName[3], _T("EasyCalcG")); state.cur_skin_nb = 0; _tcscpy(state.langName, _T("en")); // Language = english by default *************** *** 19,22 **** --- 21,25 ---- state.listPrefs.list[1][0] = _T('\0'); state.listPrefs.list[2][0] = _T('\0'); + state.listPrefs.list[3][0] = _T('\0'); state.matrixName[0] = _T('\0'); *************** *** 42,46 **** state.calcPrefs.selPosStart=calcPrefs.selPosEnd = 0; state.calcPrefs.solverWorksheet = -1; - state.calcPrefs.finBegin = false; state.calcPrefs.matchParenth = false; --- 45,48 ---- *************** *** 54,64 **** state.calcPrefs.dispPrefs.mode = disp_normal; state.calcPrefs.dispPrefs.cvtUnits = true; state.calcPrefs.insertHelp = true; state.calcPrefs.acceptOSPref = false; state.calcPrefs.dispScien = false; ! // Publish calcPrefs and dispPrefs for old core modules calcPrefs = state.calcPrefs; dispPrefs = state.calcPrefs.dispPrefs; /* db_recompile needs dispPrefs */ db_recompile_all(); } --- 56,108 ---- state.calcPrefs.dispPrefs.mode = disp_normal; state.calcPrefs.dispPrefs.cvtUnits = true; + state.calcPrefs.dispPrefs.penMode = pen_centerwide; state.calcPrefs.insertHelp = true; state.calcPrefs.acceptOSPref = false; state.calcPrefs.dispScien = false; ! state.graphPrefs.xmin = -7.0; ! state.graphPrefs.xmax = 7.0; ! state.graphPrefs.ymin = -7.0; ! state.graphPrefs.ymax = 7.0; ! state.graphPrefs.xscale = 1.0; ! state.graphPrefs.yscale = 1.0; ! state.graphPrefs.fimin = 0.0; ! state.graphPrefs.fimax = M_PIl * 2.0; ! state.graphPrefs.fistep = M_PIl * 0.02; ! state.graphPrefs.tmin = 0.0; ! state.graphPrefs.tmax = 10.0; ! state.graphPrefs.tstep = 0.1; ! state.graphPrefs.functype = graph_func; ! for (int i=0 ; i<MAX_GRFUNCS ; i++) { ! graphPrefs.funcFunc[i][0]='\0'; ! graphPrefs.funcPol[i][0]='\0'; ! graphPrefs.funcPar[i][0][0]='\0'; ! graphPrefs.funcPar[i][1][0]='\0'; ! } ! state.graphPrefs.logx = false; ! state.graphPrefs.logy = false; ! state.graphPrefs.speed = 1; ! for (int i=0; i<9; i++){ ! /* Note: grEnable[8] enables axis labels, ! * colors[8] is the background color ! */ ! // Re-note: this structure is never used for now in the Windows version, ! // since there is no palette to change colors specified in the .layout file ! // and no way to enable/disable axis or grid on the GUI. ! for (int ft=graph_func ; ft<nb_func_types ; ft++) ! state.graphPrefs.grEnable[ft][i] = true; ! // if (colorDisplay) ! state.graphPrefs.colors[i] = WinRGBToIndex(graphRGBColors+i); ! // if (grayDisplay) ! // graphPrefs.colors[i] = funcolors[i]; ! } ! for (int i=0 ; i<6 ; i++) { ! state.graphPrefs.grType[i] = 1; // Use lines ! } ! ! // Publish calcPrefs, dispPrefs and graphPrefs for old core modules calcPrefs = state.calcPrefs; dispPrefs = state.calcPrefs.dispPrefs; /* db_recompile needs dispPrefs */ + graphPrefs = state.graphPrefs; db_recompile_all(); } *************** *** 102,105 **** --- 146,150 ---- void StateManager::save(TCHAR *fn, void *hWnd_p) { state.calcPrefs = calcPrefs; + state.graphPrefs = graphPrefs; stateFilename = fn; *************** *** 135,138 **** --- 180,239 ---- _tcscpy(state.skinName[1], _T("EasyCalc2")); _tcscpy(state.skinName[2], _T("EasyCalc3")); + case 3: // Version 4 to 5 + // Insert the new skin name space + memmove(state.langName, state.skinName+3, + sizeof(state) - (((size_t) &(state.langName)) + - ((size_t) &state) + ) + ); + _tcscpy(state.skinName[3], _T("EasyCalcG")); + // Insert the new graph pen mode space + memmove(&(state.calcPrefs.insertHelp), + &(state.calcPrefs.dispPrefs.penMode), + sizeof(state) - (((size_t) &(state.calcPrefs.insertHelp)) + - ((size_t) &state) + ) + ); + // Set the new graph preferences to defaults + state.calcPrefs.dispPrefs.penMode = pen_centerwide; + state.graphPrefs.xmin = -7.0; + state.graphPrefs.xmax = 7.0; + state.graphPrefs.ymin = -7.0; + state.graphPrefs.ymax = 7.0; + state.graphPrefs.xscale = 1.0; + state.graphPrefs.yscale = 1.0; + state.graphPrefs.fimin = 0.0; + state.graphPrefs.fimax = M_PIl * 2.0; + state.graphPrefs.fistep = M_PIl * 0.02; + state.graphPrefs.tmin = 0.0; + state.graphPrefs.tmax = 10.0; + state.graphPrefs.tstep = 0.1; + state.graphPrefs.functype = graph_func; + for (int i=0 ; i<MAX_GRFUNCS ; i++) { + graphPrefs.funcFunc[i][0]='\0'; + graphPrefs.funcPol[i][0]='\0'; + graphPrefs.funcPar[i][0][0]='\0'; + graphPrefs.funcPar[i][1][0]='\0'; + } + state.graphPrefs.logx = false; + state.graphPrefs.logy = false; + state.graphPrefs.saved_reducePrecision = state.calcPrefs.reducePrecision; + state.graphPrefs.speed = 1; + for (int i=0 ; i<9 ; i++){ + /* Note: grEnable[8] enables axis labels, + * colors[8] is the background color + */ + for (int ft=graph_func ; ft<nb_func_types ; ft++) + state.graphPrefs.grEnable[ft][i] = true; + // if (colorDisplay) + state.graphPrefs.colors[i] = WinRGBToIndex(graphRGBColors+i); + // if (grayDisplay) + // graphPrefs.colors[i] = funcolors[i]; + } + for (int i=0 ; i<6 ; i++) { + state.graphPrefs.grType[i] = 1; // Use lines + } + default: // No migration + ; } *************** *** 142,149 **** initCalcPrefs(); } else { ! // Publish calcPrefs and dispPrefs for old core modules // as done by initCalcPrefs(). calcPrefs = state.calcPrefs; dispPrefs = state.calcPrefs.dispPrefs; } } --- 243,251 ---- initCalcPrefs(); } else { ! // Publish calcPrefs, dispPrefs and graphPrefs for old core modules // as done by initCalcPrefs(). calcPrefs = state.calcPrefs; dispPrefs = state.calcPrefs.dispPrefs; + graphPrefs = state.graphPrefs; } } Index: StateManager.h =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/StateManager.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** StateManager.h 24 Dec 2009 16:40:25 -0000 1.7 --- StateManager.h 28 Feb 2011 22:13:55 -0000 1.8 *************** *** 7,10 **** --- 7,11 ---- #include "core/prefs.h" #include "core/lstedit.h" + #include "core/grprefs.h" // Filename, including path, max size. *************** *** 12,16 **** // Number of skins that one can load and access ! #define NB_SKINS 3 typedef struct { --- 13,17 ---- // Number of skins that one can load and access ! #define NB_SKINS 4 typedef struct { *************** *** 22,26 **** tlistPrefs listPrefs; TCHAR matrixName[MAX_FUNCNAME+1]; ! // Always add new fields at end, for kepping version migration simple } t_state; --- 23,28 ---- tlistPrefs listPrefs; TCHAR matrixName[MAX_FUNCNAME+1]; ! TgrPrefs graphPrefs; ! // Always add new fields at end, for keeping version migration simple } t_state; Index: EasyCalc.gif =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalc.gif,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 Binary files /tmp/cvsRs2uXq and /tmp/cvsVzJzXm differ Index: shell_loadimage.cpp =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/shell_loadimage.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** shell_loadimage.cpp 15 Dec 2009 21:39:18 -0000 1.2 --- shell_loadimage.cpp 28 Feb 2011 22:13:55 -0000 1.3 *************** *** 57,61 **** ! int shell_loadimage(Skin *pskin) { SkinPixmap *pm = &pixmap; SkinColor *lcmap = NULL; --- 57,61 ---- ! int shell_loadimage(Skin *pskin, HDC hdc) { SkinPixmap *pm = &pixmap; SkinColor *lcmap = NULL; *************** *** 129,133 **** pm->cmap = (SkinColor *) mmalloc(256 * sizeof(SkinColor)); ! // TODO - handle memory allocation failure if (has_global_cmap) { for (i=0 ; i<ncolors ; i++) { --- 129,135 ---- pm->cmap = (SkinColor *) mmalloc(256 * sizeof(SkinColor)); ! if (pm->cmap == NULL) { //Memory allocation failure ! return (-1); ! } if (has_global_cmap) { for (i=0 ; i<ncolors ; i++) { *************** *** 193,197 **** size = pm->bytesperline * pm->height; pm->pixels = (unsigned char *) mmalloc(size); ! // TODO - handle memory allocation failure memset(pm->pixels, pm->depth == 1 ? background * 255 : background, size); --- 195,202 ---- size = pm->bytesperline * pm->height; pm->pixels = (unsigned char *) mmalloc(size); ! if (pm->pixels == NULL) { //Memory allocation failure ! mfree(pm->cmap); ! return (-2); ! } memset(pm->pixels, pm->depth == 1 ? background * 255 : background, size); *************** *** 548,552 **** ptr += pm->bytesperline; } ! skin->finish_image(); } --- 553,560 ---- ptr += pm->bytesperline; } ! skin->finish_image(hdc); ! // Build immediately the screen bitmap to free memory. ! } else { // Error allocating space to build scaled bitmap ! res = -3; } Index: EasyCalc3.gif =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalc3.gif,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsSMq2np and /tmp/cvsh4Xiql differ --- NEW FILE: SkinList.h --- /***************************************************************************** * EasyCalc -- a scientific calculator * Copyright (C) 2008 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License, version 2, * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *****************************************************************************/ /* SkinList.h : SkinList object for registering Skin usage of the calculator. *****************************************************************************/ #ifndef SKINLIST_H #define SKINLIST_H 1 // Object to contain a skin number and usage class SkinUsage { public: int skin_nb; int usage; SkinUsage *prev, *next; SkinUsage(int nb); // Constructor ~SkinUsage(); // Destructor }; // SkinList object class SkinList { protected: SkinUsage *list; SkinUsage *cur_skin; int nb_skins; public: SkinList(); // Constructor ~SkinList(); // Destructor void clear(void); void add(int nb); void add_use(int nb); int least_used(void); }; #endif Index: EasyCalc2.gif =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalc2.gif,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsclZX1p and /tmp/cvsJsSm5l differ Index: EasyCalcppc.aps =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalcppc.aps,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 Binary files /tmp/cvsWiTFWs and /tmp/cvspSVb1o differ --- NEW FILE: SkinList.cpp --- /***************************************************************************** * EasyCalc -- a scientific calculator * Copyright (C) 2008 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License, version 2, * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *****************************************************************************/ /* SkinList.cpp : Methods for the SkinList object. *****************************************************************************/ #include "stdafx.h" #include "SkinList.h" /*------------------------------------------------------------------------------- - SkinUsage constructor and destructor. - -------------------------------------------------------------------------------*/ SkinUsage::SkinUsage(int nb) { skin_nb = nb; usage = 0; prev = next = NULL; } SkinUsage::~SkinUsage() { // if (next != NULL) // delete next; } /*------------------------------------------------------------------------------- - SkinList constructor and destructor. - -------------------------------------------------------------------------------*/ SkinList::SkinList() { list = cur_skin = NULL; nb_skins = 0; } SkinList::~SkinList() { clear(); } /*------------------------------------------------------------------------------- - Methods. - -------------------------------------------------------------------------------*/ /******************************************************************************** * Clear list. * ********************************************************************************/ void SkinList::clear (void) { SkinUsage *temp; while (list != NULL) { temp = list; list = list->next; delete temp; } cur_skin = NULL; nb_skins = 0; } /******************************************************************************** * Add new skin. * ********************************************************************************/ void SkinList::add (int nb) { // Verify it doesn't exist already. If so reset the object and reuse it SkinUsage *temp = list; while (temp != NULL) { if (temp->skin_nb == nb) break; temp = temp->next; } if (temp != NULL) { // Remove it from list if (temp->prev == NULL) list = temp->next; else { temp->prev->next = temp->next; if (temp->next != NULL) temp->next->prev = temp->prev; temp->prev = NULL; } // Reset usage count temp->usage = 0; } else { temp = new SkinUsage(nb); } // Add at head temp->next = list; if (list != NULL) list->prev = temp; list = temp; } /******************************************************************************** * Register usage. * ********************************************************************************/ void SkinList::add_use (int nb) { // Find it SkinUsage *temp = list; while (temp != NULL) { if (temp->skin_nb == nb) break; temp = temp->next; } if (temp != NULL) { // Register usage, and keep list sorted in increasing usage order cur_skin = temp; // Remember last used temp->usage++; // Find new position SkinUsage *temp2 = temp; while ((temp2->next != NULL) && (temp2->next->usage < temp->usage)) { temp2 = temp2->next; } if (temp2 != temp) { // Move ... if (temp->prev == NULL) { list = temp->next; temp->next->prev = NULL; } else { temp->prev->next = temp->next; temp->next->prev = temp->prev; } temp->next = temp2->next; if (temp->next != NULL) temp->next->prev = temp; temp2->next = temp; temp->prev = temp2; } } } /******************************************************************************** * Get least used, different from last used (if possible). * ********************************************************************************/ int SkinList::least_used (void) { int nb = -1; // Get first, or second if exists and first is last used. if ((list == cur_skin) && (list->next != NULL)) { nb = list->next->skin_nb; } else { nb = list->skin_nb; } return (nb); } Index: EasyCalcppc.rc =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalcppc.rc,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** EasyCalcppc.rc 24 Dec 2009 16:40:25 -0000 1.9 --- EasyCalcppc.rc 28 Feb 2011 22:13:55 -0000 1.10 *************** *** 132,138 **** LTEXT "Skin 2",IDC_SKIN2,84,39,39,10 LTEXT "Skin 3",IDC_SKIN3,84,58,39,10 ! COMBOBOX IDC_SKINVAL,72,73,21,40,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP ! LTEXT "Current skin",IDC_SKIN,10,76,58,8 ! CONTROL "SIP1",IDC_SIP,"SIPPREF",NOT WS_VISIBLE,121,71,14,14 END --- 132,140 ---- LTEXT "Skin 2",IDC_SKIN2,84,39,39,10 LTEXT "Skin 3",IDC_SKIN3,84,58,39,10 ! COMBOBOX IDC_SKINVAL,72,94,21,51,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP ! LTEXT "Current skin",IDC_SKIN,9,96,58,8 ! CONTROL "SIP1",IDC_SIP,"SIPPREF",NOT WS_VISIBLE,121,95,14,14 ! COMBOBOX IDC_COMBO_SKING,9,75,70,80,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP ! LTEXT "Skin G",IDC_SKING,84,77,39,10 END *************** *** 180,185 **** BEGIN ICON IDI_EASYCALC,IDC_STATIC_1,12,12,21,20,SS_REALSIZEIMAGE ! LTEXT "EasyCalc Version 1.25a PPC",IDC_STATIC_2,12,36,100,8,SS_NOPREFIX ! LTEXT "Copyright (C) 2009",IDC_STATIC_3,12,48,66,8 END --- 182,187 ---- BEGIN ICON IDI_EASYCALC,IDC_STATIC_1,12,12,21,20,SS_REALSIZEIMAGE ! LTEXT "EasyCalc Version 1.25a PPC",IDC_STATIC_2,12,36,100,21,SS_NOPREFIX ! LTEXT "Copyright (C) 2010",IDC_STATIC_3,12,60,66,8 END *************** *** 191,196 **** BEGIN ICON IDI_EASYCALC,IDC_STATIC_1,9,12,20,20,SS_REALSIZEIMAGE ! LTEXT "EasyCalc Version 1.25a PPC",IDC_STATIC_2,49,12,76,8,SS_NOPREFIX ! LTEXT "Copyright (C) 2009",IDC_STATIC_3,49,24,66,8 END --- 193,198 ---- BEGIN ICON IDI_EASYCALC,IDC_STATIC_1,9,12,20,20,SS_REALSIZEIMAGE ! LTEXT "EasyCalc Version 1.25a PPC",IDC_STATIC_2,49,12,76,21,SS_NOPREFIX ! LTEXT "Copyright (C) 2010",IDC_STATIC_3,49,36,66,8 END *************** *** 307,311 **** CONTROL "Begin period",IDC_BEGINP,"Button",BS_AUTORADIOBUTTON | BS_MULTILINE | WS_GROUP,53,106,50,16 CONTROL "End period",IDC_ENDP,"Button",BS_AUTORADIOBUTTON | BS_MULTILINE,109,106,50,16 - CONTROL "SIP1",IDC_SIP,"SIPPREF",NOT WS_VISIBLE,33,108,14,14 EDITTEXT IDC_VARCOMMENT,0,2,159,14,ES_AUTOHSCROLL | ES_READONLY LTEXT "Total payment",IDC_VARNAME3,0,77,87,12 --- 309,312 ---- *************** *** 313,332 **** LTEXT "Total cost",IDC_VARNAME4,0,92,87,12 EDITTEXT IDC_EDIT4,89,90,70,14,ES_AUTOHSCROLL | ES_READONLY END ! IDD_FINANCIALS1 DIALOG 0, 0, 160, 124 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU ! CAPTION "Financial calculator" FONT 8, "MS Shell Dlg" BEGIN ! DEFPUSHBUTTON "OK",IDOK,0,108,30,14 ! CONTROL "",IDC_VARLIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOCOLUMNHEADER | WS_BORDER | WS_TABSTOP,0,17,159,56 ! CONTROL "Begin period",IDC_BEGINP,"Button",BS_AUTORADIOBUTTON | BS_MULTILINE | WS_GROUP,53,106,50,16 ! CONTROL "End period",IDC_ENDP,"Button",BS_AUTORADIOBUTTON | BS_MULTILINE,109,106,50,16 ! CONTROL "SIP1",IDC_SIP,"SIPPREF",NOT WS_VISIBLE,33,108,14,14 ! EDITTEXT IDC_VARCOMMENT,0,2,159,14,ES_AUTOHSCROLL | ES_READONLY ! EDITTEXT IDC_EDIT3,89,75,70,14,ES_AUTOHSCROLL | ES_READONLY ! EDITTEXT IDC_EDIT4,89,90,70,14,ES_AUTOHSCROLL | ES_READONLY ! CONTROL "",IDC_TREE1,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | WS_BORDER | WS_HSCROLL | WS_TABSTOP,22,73,60,50 END --- 314,440 ---- LTEXT "Total cost",IDC_VARNAME4,0,92,87,12 EDITTEXT IDC_EDIT4,89,90,70,14,ES_AUTOHSCROLL | ES_READONLY + CONTROL "SIP1",IDC_SIP,"SIPPREF",NOT WS_VISIBLE,33,108,14,14 END ! IDD_GRAPH_PREFS DIALOG 0, 0, 160, 148 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU ! CAPTION "Graph preferences" FONT 8, "MS Shell Dlg" BEGIN ! DEFPUSHBUTTON "OK",IDOK,1,133,32,14 ! PUSHBUTTON "Cancel",IDCANCEL,118,133,41,14 ! LTEXT "xmin:",IDC_XMIN,3,3,25,12 ! EDITTEXT IDC_EDITXMIN,33,1,62,14,ES_AUTOHSCROLL ! LTEXT "xmax:",IDC_XMAX,3,19,25,12 ! EDITTEXT IDC_EDITXMAX,33,17,62,14,ES_AUTOHSCROLL ! LTEXT "ymin:",IDC_YMIN,3,35,25,12 ! EDITTEXT IDC_EDITYMIN,33,33,62,14,ES_AUTOHSCROLL ! LTEXT "ymax:",IDC_YMAX,3,51,25,12 ! EDITTEXT IDC_EDITYMAX,33,49,62,14,ES_AUTOHSCROLL ! LTEXT "th-min:",IDC_THMIN,3,67,25,12 ! EDITTEXT IDC_EDITTHMIN,33,65,62,14,ES_AUTOHSCROLL ! LTEXT "th-max:",IDC_THMAX,3,83,25,12 ! EDITTEXT IDC_EDITTHMAX,33,81,62,14,ES_AUTOHSCROLL ! LTEXT "th-step:",IDC_THSTEP,3,99,25,12 ! EDITTEXT IDC_EDITTHSTEP,33,97,62,14,ES_AUTOHSCROLL ! CONTROL "Log X",IDC_CHECKLOGX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,110,1,33,10 ! CONTROL "Log Y",IDC_CHECKLOGY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,110,33,33,10 ! CONTROL "Function",IDC_RADIOFCT,"Button",BS_AUTORADIOBUTTON | WS_GROUP,99,58,58,10 ! CONTROL "Polar",IDC_RADIOPOLAR,"Button",BS_AUTORADIOBUTTON,99,73,58,10 ! CONTROL "Parametric",IDC_RADIOPARAM,"Button",BS_AUTORADIOBUTTON,99,88,58,10 ! GROUPBOX "",IDC_STATICGRMODE,96,50,63,51 ! PUSHBUTTON "Default",IDC_BUTTONDEFAULT,1,115,50,14 ! PUSHBUTTON "Trigo defaults",IDC_BUTTONTRIGODEF,66,115,50,14 ! CONTROL "SIP1",IDC_SIP,"SIPPREF",NOT WS_VISIBLE | WS_TABSTOP,47,133,14,14 ! END ! ! IDD_GRAPH_CONFIG DIALOG 0, 0, 160, 118 ! STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU ! CAPTION "Graph config" ! FONT 8, "MS Shell Dlg" ! BEGIN ! DEFPUSHBUTTON "OK",IDOK,1,103,32,14 ! CONTROL 156,IDC_COLORY1,"Static",SS_BITMAP | SS_NOTIFY | WS_BORDER,4,3,9,9 ! CONTROL 156,IDC_COLORY2,"Static",SS_BITMAP | SS_NOTIFY | WS_BORDER,4,19,9,9 ! CONTROL 156,IDC_COLORY3,"Static",SS_BITMAP | SS_NOTIFY | WS_BORDER,4,35,9,9 ! CONTROL 156,IDC_COLORY4,"Static",SS_BITMAP | SS_NOTIFY | WS_BORDER,4,51,9,9 ! CONTROL 156,IDC_COLORY5,"Static",SS_BITMAP | SS_NOTIFY | WS_BORDER,4,67,9,9 ! CONTROL 156,IDC_COLORY6,"Static",SS_BITMAP | SS_NOTIFY | WS_BORDER,4,83,9,9 ! CONTROL "",IDC_CHECKY1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,3,10,10 ! CONTROL "",IDC_CHECKY2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,19,10,10 ! CONTROL "",IDC_CHECKY3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,35,10,10 ! CONTROL "",IDC_CHECKY4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,51,10,10 ! CONTROL "",IDC_CHECKY5,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,67,10,10 ! CONTROL "",IDC_CHECKY6,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,83,10,10 ! PUSHBUTTON "Y1",IDC_BUTTONY1,30,2,13,13 ! PUSHBUTTON "Y2",IDC_BUTTONY2,30,18,13,13 ! PUSHBUTTON "Y3",IDC_BUTTONY3,30,34,13,13 ! PUSHBUTTON "Y4",IDC_BUTTONY4,30,50,13,13 ! PUSHBUTTON "Y5",IDC_BUTTONY5,30,66,13,13 ! PUSHBUTTON "Y6",IDC_BUTTONY6,30,82,13,13 ! EDITTEXT IDC_EDITY1,47,2,80,14,ES_AUTOHSCROLL | ES_READONLY ! EDITTEXT IDC_EDITY2,47,18,80,14,ES_AUTOHSCROLL | ES_READONLY ! EDITTEXT IDC_EDITY3,47,34,80,14,ES_AUTOHSCROLL | ES_READONLY ! EDITTEXT IDC_EDITY4,47,50,80,14,ES_AUTOHSCROLL | ES_READONLY ! EDITTEXT IDC_EDITY5,47,66,80,14,ES_AUTOHSCROLL | ES_READONLY ! EDITTEXT IDC_EDITY6,47,82,80,14,ES_AUTOHSCROLL | ES_READONLY ! CONTROL 157,IDC_LINEY1,"Static",SS_BITMAP | SS_NOTIFY,133,6,16,7 ! CONTROL 157,IDC_LINEY2,"Static",SS_BITMAP | SS_NOTIFY,133,22,16,7 ! CONTROL 157,IDC_LINEY3,"Static",SS_BITMAP | SS_NOTIFY,133,38,16,7 ! CONTROL 157,IDC_LINEY4,"Static",SS_BITMAP | SS_NOTIFY,133,54,16,7 ! CONTROL 157,IDC_LINEY5,"Static",SS_BITMAP | SS_NOTIFY,133,70,16,7 ! CONTROL 157,IDC_LINEY6,"Static",SS_BITMAP | SS_NOTIFY,133,85,16,7 ! CONTROL "SIP1",IDC_SIP,"SIPPREF",NOT WS_VISIBLE | WS_TABSTOP,51,103,14,14 ! END ! ! IDD_GRAPH_CONFIGXY DIALOG 0, 0, 254, 125 ! STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_HSCROLL | WS_SYSMENU ! CAPTION "Graph config" ! FONT 8, "MS Shell Dlg" ! BEGIN ! DEFPUSHBUTTON "OK",IDOK,110,100,32,14 ! CONTROL 156,IDC_COLORY1,"Static",SS_BITMAP | SS_NOTIFY | WS_BORDER,4,3,9,9 ! CONTROL 156,IDC_COLORY2,"Static",SS_BITMAP | SS_NOTIFY | WS_BORDER,4,19,9,9 ! CONTROL 156,IDC_COLORY3,"Static",SS_BITMAP | SS_NOTIFY | WS_BORDER,4,35,9,9 ! CONTROL 156,IDC_COLORY4,"Static",SS_BITMAP | SS_NOTIFY | WS_BORDER,4,51,9,9 ! CONTROL 156,IDC_COLORY5,"Static",SS_BITMAP | SS_NOTIFY | WS_BORDER,4,67,9,9 ! CONTROL 156,IDC_COLORY6,"Static",SS_BITMAP | SS_NOTIFY | WS_BORDER,4,83,9,9 ! CONTROL "",IDC_CHECKY1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,3,10,10 ! CONTROL "",IDC_CHECKY2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,19,10,10 ! CONTROL "",IDC_CHECKY3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,35,10,10 ! CONTROL "",IDC_CHECKY4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,51,10,10 ! CONTROL "",IDC_CHECKY5,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,67,10,10 ! CONTROL "",IDC_CHECKY6,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,83,10,10 ! PUSHBUTTON "Y1",IDC_BUTTONY1,30,2,13,13 ! PUSHBUTTON "Y2",IDC_BUTTONY2,30,18,13,13 ! PUSHBUTTON "Y3",IDC_BUTTONY3,30,34,13,13 ! PUSHBUTTON "Y4",IDC_BUTTONY4,30,50,13,13 ! PUSHBUTTON "Y5",IDC_BUTTONY5,30,66,13,13 ! PUSHBUTTON "Y6",IDC_BUTTONY6,30,82,13,13 ! EDITTEXT IDC_EDITY1,46,2,80,14,ES_AUTOHSCROLL | ES_READONLY ! EDITTEXT IDC_EDITY2,46,18,80,14,ES_AUTOHSCROLL | ES_READONLY ! EDITTEXT IDC_EDITY3,46,34,80,14,ES_AUTOHSCROLL | ES_READONLY ! EDITTEXT IDC_EDITY4,46,50,80,14,ES_AUTOHSCROLL | ES_READONLY ! EDITTEXT IDC_EDITY5,46,66,80,14,ES_AUTOHSCROLL | ES_READONLY ! EDITTEXT IDC_EDITY6,46,82,80,14,ES_AUTOHSCROLL | ES_READONLY ! PUSHBUTTON "X1",IDC_BUTTONX1,128,2,13,13 ! PUSHBUTTON "X2",IDC_BUTTONX2,128,19,13,13 ! PUSHBUTTON "X3",IDC_BUTTONX3,128,35,13,13 ! PUSHBUTTON "X4",IDC_BUTTONX4,128,50,13,13 ! PUSHBUTTON "X5",IDC_BUTTONX5,128,66,13,13 ! PUSHBUTTON "X6",IDC_BUTTONX6,128,82,13,13 ! EDITTEXT IDC_EDITX1,143,2,80,14,ES_AUTOHSCROLL | ES_READONLY ! EDITTEXT IDC_EDITX2,143,18,80,14,ES_AUTOHSCROLL | ES_READONLY ! EDITTEXT IDC_EDITX3,143,34,80,14,ES_AUTOHSCROLL | ES_READONLY ! EDITTEXT IDC_EDITX4,143,50,80,14,ES_AUTOHSCROLL | ES_READONLY ! EDITTEXT IDC_EDITX5,143,66,80,14,ES_AUTOHSCROLL | ES_READONLY ! EDITTEXT IDC_EDITX6,143,82,80,14,ES_AUTOHSCROLL | ES_READONLY ! CONTROL 157,IDC_LINEY1,"Static",SS_BITMAP | SS_NOTIFY,229,6,16,7 ! CONTROL 157,IDC_LINEY2,"Static",SS_BITMAP | SS_NOTIFY,229,22,16,7 ! CONTROL 157,IDC_LINEY3,"Static",SS_BITMAP | SS_NOTIFY,229,38,16,7 ! CONTROL 157,IDC_LINEY4,"Static",SS_BITMAP | SS_NOTIFY,229,54,16,7 ! CONTROL 157,IDC_LINEY5,"Static",SS_BITMAP | SS_NOTIFY,229,70,16,7 ! CONTROL 157,IDC_LINEY6,"Static",SS_BITMAP | SS_NOTIFY,229,85,16,7 ! CONTROL "SIP1",IDC_SIP,"SIPPREF",NOT WS_VISIBLE | WS_TABSTOP,154,100,14,14 END *************** *** 374,382 **** END - IDD_LARGE_MENU, DIALOG - BEGIN - BOTTOMMARGIN, 121 - END - IDD_OPT_GENERAL, DIALOG BEGIN --- 482,485 ---- *************** *** 397,405 **** END - IDD_SLIM_MENU, DIALOG - BEGIN - BOTTOMMARGIN, 117 - END - IDD_ABOUTBOX, DIALOG BEGIN --- 500,503 ---- *************** *** 473,480 **** END ! IDD_FINANCIALS1, DIALOG BEGIN RIGHTMARGIN, 159 ! TOPMARGIN, 2 END END --- 571,593 ---- END ! IDD_GRAPH_PREFS, DIALOG BEGIN RIGHTMARGIN, 159 ! TOPMARGIN, 1 ! BOTTOMMARGIN, 147 ! END ! ! IDD_GRAPH_CONFIG, DIALOG ! BEGIN ! RIGHTMARGIN, 159 ! TOPMARGIN, 1 ! BOTTOMMARGIN, 117 ! END ! ! IDD_GRAPH_CONFIGXY, DIALOG ! BEGIN ! RIGHTMARGIN, 253 ! TOPMARGIN, 1 ! BOTTOMMARGIN, 114 END END *************** *** 618,621 **** --- 731,754 ---- + ///////////////////////////////////////////////////////////////////////////// + // French (France) resources + + #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA) + #ifdef _WIN32 + LANGUAGE LANG_FRENCH, SUBLANG_FRENCH + #pragma code_page(1252) + #endif //_WIN32 + + ///////////////////////////////////////////////////////////////////////////// + // + // Bitmap + // + + IDB_BITMAP1 BITMAP "bitmap1.bmp" + IDB_BITMAP2 BITMAP "bitmap2.bmp" + #endif // French (France) resources + ///////////////////////////////////////////////////////////////////////////// + + #ifndef APSTUDIO_INVOKED --- NEW FILE: EasyCalcG.layout --- # EasyCalc standard graph skin (PocketPC) # Some annunciators used here can only exist with xxxxG skins (G for Graph). # Normal calc keys cannot be used in this layout, there are additional keys # for graph functions. # Skin rectangle coordinates x1,y1,x2,y2 Skin: 0,0,240,268 # Description of the graph display area: x1,y1 xscale yscale bg_color fg_color # With xscale = 0, screen width is 216 dots (only value used for now). # Do not touch yscale either for now. Display: 35,6 1 1 a3b39d 0b2327 WideView: 1,212 1 1 a3b39d 0b2327 # Description of available graph colors (background comes from Display: above # and Axis is initially set to foreground from Display: as well). Graph: 1 ff0000 Graph: 2 00ff00 Graph: 3 0000ff Graph: 4 808000 Graph: 5 008080 Graph: 6 800080 Graph: 7 0b2327 # Axis Graph: 8 808080 # Grid # Active elements: num x1,y1,l,h (on screen) x1_off,y1_off x1_on,y1_on (in the gif) Annunciator: 2 35,0,16,13 20,268 20,281 # Degree indicator Annunciator: 3 54,0,16,13 35,268 35,281 # Radian indicator Annunciator: 4 73,0,21,13 50,268 50,281 # Gradian indicator Annunciator: 11 205,0,6,13 0,268 0,281 # Skin 1 indicator Annunciator: 12 212,0,6,13 5,268 5,281 # Skin 2 indicator Annunciator: 13 219,0,6,13 10,268 10,281 # Skin 3 indicator Annunciator: 14 226,0,6,13 15,268 15,281 # Graph indicator Annunciator: 20 93,211,29,19 124,268 124,287 # Select zone indicator Annunciator: 21 126,211,29,19 153,268 153,287 # Move graph indicator Annunciator: 22 159,211,29,19 211,268 211,287 # Track point indicator Annunciator: 23 126,232,29,19 182,268 182,287 # Center wide view indicator Annunciator: 24 1,2,30,11 2,2 -1,-1 # Zone Y max (no selection) Annunciator: 25 1,198,30,11 2,198 -1,-1 # Zone Y min (no selection) Annunciator: 26 59,211,30,11 62,212 -1,-1 # Zone X min (no selection) Annunciator: 27 209,211,30,11 211,212 -1,-1 # Zone X max (no selection) Annunciator: 28 112,255,22,11 113,255 -1,-1 # Wide view / zone ratio X (no selection) Annunciator: 29 138,255,22,11 139,255 -1,-1 # Wide view / zone ratio Y (no selection) Annunciator: 30 168,241,30,11 173,241 -1,-1 # Sel param start (no selection) Annunciator: 31 209,241,30,11 211,241 -1,-1 # Sel param end (no selection) Annunciator: 32 209,227,30,11 211,227 -1,-1 # Pointed/calculated Y (no selection) Annunciator: 33 209,255,30,11 211,255 -1,-1 # Pointed/calculated X (no selection) Annunciator: 34 168,255,30,11 173,255 -1,-1 # Pointed/calculated r (no selection) Annunciator: 35 192,215,11,11 192,215 -1,-1 # For curve Yn (no selection) # Keys on the calculator gif: # num[, shifted_num] x1_sel,y1_sel,l_sel,h_sel (selection zone) x1_off,y1_off,l,h x1_on,y1_on # with num and shifted_num as follows: # -5 -> Center zone on origin, "0" # -6 -> center wide view on origin, "0" # -7 -> Graph preferences, "prefs" # -8 -> Graph config, "conf" # -9 -> Graph calculations, "calc" # -10 -> Zone set X =, "-> X" # -11 -> Zone zoom in, "+" # -12 -> Zone zoom out, "-" # -13 -> Wide view zoom in, "+" # -14 -> Wide view zoom out, "-" # -15 -> Normed zone coordinates (= square in wide view) # # 1st row # prefs key: -7 0,15,31,21 5,19,22,12 5,18 # 2nd row # conf Key: -8 0,37,31,21 5,41,22,12 5,40 # 3rd row # calc Key: -9 0,59,31,21 5,63,22,12 5,62 # 4th row # + zone Key: -11 0,87,31,21 5,91,22,12 5,90 # 5th row # - zone Key: -12 0,109,31,21 5,113,22,12 5,112 # 6th row # Normed square zone Key: -15 0,131,31,21 5,135,22,12 5,134 # 7th row # 0 zone Key: -5 0,153,31,21 5,157,22,12 5,156 # 8th row # -> X Key: -10 0,175,31,21 5,179,22,12 5,178 # 9th row # + wide view 0 wide view Key: -13 60,226,31,21 65,230,22,12 65,229 Key: -6 92,231,29,19 97,235,22,12 97,234 # 10th row # - wide view Key: -14 60,247,31,21 65,251,22,12 65,250 --- NEW FILE: bitmap2.bmp --- (This appears to be a binary file; contents omitted.) Index: shell_loadimage.h =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/shell_loadimage.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** shell_loadimage.h 22 Jun 2009 22:13:35 -0000 1.1 --- shell_loadimage.h 28 Feb 2011 22:13:55 -0000 1.2 *************** *** 25,29 **** * These functions should be declared in shell_skin.h. */ ! int shell_loadimage(Skin *skin); #endif --- 25,29 ---- * These functions should be declared in shell_skin.h. */ ! int shell_loadimage(Skin *skin, HDC hdc); #endif Index: Skin.cpp =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/Skin.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** Skin.cpp 24 Dec 2009 16:40:25 -0000 1.11 --- Skin.cpp 28 Feb 2011 22:13:55 -0000 1.12 *************** *** 16,20 **** * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *****************************************************************************/ ! /* skin.cpp : Methods for the skin object of the calculator. *****************************************************************************/ --- 16,20 ---- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *****************************************************************************/ ! /* Skin.cpp : Methods for the Skin object of the calculator. *****************************************************************************/ [...2947 lines suppressed...] + } + + /******************************************************************************** + * Calculate zone inside view coordinates. * + ********************************************************************************/ + void Skin::calc_zoneOnView (void) { + // Calculate screen coordinates of the zone rectangle inside view + graph_get_zoneOnView(&(zoneOnView.top), &(zoneOnView.left), + &(zoneOnView.bottom), &(zoneOnView.right)); + zoneOnView.top = view_basey - zoneOnView.top; + zoneOnView.left += view_loc.x; + zoneOnView.bottom = view_basey - zoneOnView.bottom; + zoneOnView.right += view_loc.x; + + // Calculate intersection with view rectangle + intersect = (IntersectRect(&zv_intersect, &zoneOnView, &viewRect) != 0); + // Adapt for use by InvertRect .. (one more Windows API oddity !) + zv_intersect.bottom++; + zv_intersect.right++; + } Index: EasyCalc2.layout =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalc2.layout,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** EasyCalc2.layout 24 Dec 2009 16:41:09 -0000 1.1 --- EasyCalc2.layout 28 Feb 2011 22:13:55 -0000 1.2 *************** *** 3,7 **** # Skin rectangle coordinates x1,y1,x2,y2 Skin: 0,0,240,268 ! # Description of the display area: x1,y1 xscale yscale fg_color bg_color # With xscale = 0, screen width is 216 dots (only value used for now). # Do not touch yscale either for now. --- 3,7 ---- # Skin rectangle coordinates x1,y1,x2,y2 Skin: 0,0,240,268 ! # Description of the display area: x1,y1 xscale yscale bg_color fg_color # With xscale = 0, screen width is 216 dots (only value used for now). # Do not touch yscale either for now. *************** *** 9,36 **** # Active elements: num x1,y1,l,h (on screen) x1_off,y1_off x1_on,y1_on (in the gif) ! Annunciator: 1 8,6,22,7 50,268 -1,-1 # Shift indicator (no selection) ! Annunciator: 2 34,6,16,7 20,268 20,275 # Degree indicator ! Annunciator: 3 53,6,16,7 35,268 35,275 # Radian indicator ! Annunciator: 4 72,6,21,7 30,268 30,275 # Gradian indicator ! Annunciator: 5 97,6,16,7 71,268 71,275 # Decimal indicator ! Annunciator: 6 116,6,15,7 86,268 86,275 # Octal indicator ! Annunciator: 7 134,6,13,7 100,268 100,275 # Binary indicator ! Annunciator: 8 150,6,16,7 112,268 112,275 # Hexadecimal indicator ! Annunciator: 9 4,16,6,7 155,268 155,275 # Result scroll left indicator ! Annunciator: 10 227,16,6,7 160,268 160,275 # Result scroll right indicator ! Annunciator: 11 205,6,6,7 0,268 0,275 # Skin 1 indicator ! Annunciator: 12 212,6,6,7 5,268 5,275 # Skin 2 indicator ! Annunciator: 13 219,6,6,7 10,268 10,275 # Skin 3 indicator ! Annunciator: 14 226,6,6,7 15,268 15,275 # Graph indicator ! Annunciator: 15 170,6,7,7 139,268 139,275 # Var list indicator ! Annunciator: 16 178,6,6,7 145,268 145,275 # User fct list indicator ! Annunciator: 17 185,6,6,7 150,268 150,275 # Calc fct list indicator ! Annunciator: 18 226,26,7,7 127,268 127,275 # Result Menu indicator ! Annunciator: 19 226,34,7,7 133,268 133,275 # History Menu indicator # Keys on the calculator gif: # num[, shifted_num] x1_sel,y1_sel,l_sel,h_sel (selection zone) x1_off,y1_off,l,h x1_on,y1_on # with num and shifted_num as follows: ! # -5 -> shift // Note: practice is to put -4,-4 to ensure the same shift key can toggle on/off the shift state # -4 -> dot // decimal dot # -3 -> EXE // run evaluation --- 9,36 ---- # Active elements: num x1,y1,l,h (on screen) x1_off,y1_off x1_on,y1_on (in the gif) ! Annunciator: 1 8,6,22,7 70,274 -1,-1 # Shift indicator (no selection) ! Annunciator: 2 34,0,16,13 20,268 20,281 # Degree indicator ! Annunciator: 3 53,0,16,13 35,268 35,281 # Radian indicator ! Annunciator: 4 72,0,21,13 50,268 50,281 # Gradian indicator ! Annunciator: 5 97,0,16,13 91,268 91,281 # Decimal indicator ! Annunciator: 6 116,0,15,13 106,268 106,281 # Octal indicator ! Annunciator: 7 134,0,13,13 120,268 120,281 # Binary indicator ! Annunciator: 8 150,0,16,13 132,268 132,281 # Hexadecimal indicator ! Annunciator: 9 0,16,10,7 178,274 178,287 # Result scroll left indicator ! Annunciator: 10 227,16,12,7 187,274 187,287 # Result scroll right indicator ! Annunciator: 11 205,0,6,13 0,268 0,281 # Skin 1 indicator ! Annunciator: 12 212,0,6,13 5,268 5,281 # Skin 2 indicator ! Annunciator: 13 219,0,6,13 10,268 10,281 # Skin 3 indicator ! Annunciator: 14 226,0,6,13 15,268 15,281 # Graph indicator ! Annunciator: 15 170,0,7,13 147,268 147,281 # Var list indicator ! Annunciator: 16 178,0,6,13 153,268 153,281 # User fct list indicator ! Annunciator: 17 185,0,6,13 158,268 158,281 # Calc fct list indicator ! Annunciator: 18 226,26,13,7 164,268 164,281 # Result Menu indicator ! Annunciator: 19 226,34,13,7 164,274 164,287 # History Menu indicator # Keys on the calculator gif: # num[, shifted_num] x1_sel,y1_sel,l_sel,h_sel (selection zone) x1_off,y1_off,l,h x1_on,y1_on # with num and shifted_num as follows: ! # -16 -> shift // Note: practice is to put -16,-16 to ensure the same shift key can toggle on/off the shift state # -4 -> dot // decimal dot # -3 -> EXE // run evaluation *************** *** 228,232 **** # shift isprime CLR # shift % n! angle & bckspc ! key: -5,-5 6,70,32,22 11,75,22,12 11,74 key: 151,123 45,70,32,22 50,75,22,12 50,74 key: 61 84,70,32,22 89,75,22,12 89,74 --- 228,232 ---- # shift isprime CLR # shift % n! angle & bckspc ! key: -16,-16 6,70,32,22 11,75,22,12 11,74 key: 151,123 45,70,32,22 50,75,22,12 50,74 key: 61 84,70,32,22 89,75,22,12 89,74 Index: EasyCalc.layout =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalc.layout,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** EasyCalc.layout 24 Dec 2009 16:40:25 -0000 1.10 --- EasyCalc.layout 28 Feb 2011 22:13:55 -0000 1.11 *************** *** 3,7 **** # Skin rectangle coordinates x1,y1,x2,y2 Skin: 0,0,240,268 ! # Description of the display area: x1,y1 xscale yscale fg_color bg_color # With xscale = 0, screen width is 216 dots (only value used for now). # Do not touch yscale either for now. --- 3,7 ---- # Skin rectangle coordinates x1,y1,x2,y2 Skin: 0,0,240,268 ! # Description of the display area: x1,y1 xscale yscale bg_color fg_color # With xscale = 0, screen width is 216 dots (only value used for now). # Do not touch yscale either for now. *************** *** 9,36 **** # Active elements: num x1,y1,l,h (on screen) x1_off,y1_off x1_on,y1_on (in the gif) ! Annunciator: 1 8,6,22,7 50,268 -1,-1 # Shift indicator (no selection) ! Annunciator: 2 34,6,16,7 20,268 20,275 # Degree indicator ! Annunciator: 3 53,6,16,7 35,268 35,275 # Radian indicator ! Annunciator: 4 72,6,21,7 30,268 30,275 # Gradian indicator ! Annunciator: 5 97,6,16,7 71,268 71,275 # Decimal indicator ! Annunc... [truncated message content] |
From: Mapi B. <ma...@us...> - 2011-02-28 22:11:35
|
Update of /cvsroot/easycalc/PPCport/langs/merge In directory vz-cvs-4.sog:/tmp/cvs-serv5596 Modified Files: lang.rcp Log Message: 1.25g Index: lang.rcp =================================================================== RCS file: /cvsroot/easycalc/PPCport/langs/merge/lang.rcp,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** lang.rcp 24 Dec 2009 16:39:47 -0000 1.10 --- lang.rcp 28 Feb 2011 22:11:32 -0000 1.11 *************** *** 176,180 **** "$$MNRADIAN" = "->Radiány" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->c()+isin()" /************************************************** --- 176,180 ---- "$$MNRADIAN" = "->Radiány" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->cos()+isin()" /************************************************** *************** *** 186,195 **** "$$COMPUTING" = "Výpoèet" "$$COMPCONFIRM" = "Výpoèet mù¾e chvíli trvat. Po stisknutí tlaèítka OK zaène výpoèet." ! "$$COMPRESULT" = "^1 funkce je: ^2" "$$LEFTBOUND" = "Vyberte levou èást intervalu a stisknìte tlaèítko 'C'." "$$RIGHTBOUND" = "Vyberte pravout èást intervalu a stisknìte tlaèítko 'C'." "$$POINTONGRAPH" = "Vyberte místo na grafu a stisknìte tlaèítko 'C'." "$$GRZERO" = "nula" ! "$$GRVALUE" = "hodnota" "$$GRMIN" = "minimum" "$$GRMAX" = "maximum" --- 186,195 ---- "$$COMPUTING" = "Výpoèet" "$$COMPCONFIRM" = "Výpoèet mù¾e chvíli trvat. Po stisknutí tlaèítka OK zaène výpoèet." ! "$$COMPRESULT" = "^1 funkce je: graphres = ^2" "$$LEFTBOUND" = "Vyberte levou èást intervalu a stisknìte tlaèítko 'C'." "$$RIGHTBOUND" = "Vyberte pravout èást intervalu a stisknìte tlaèítko 'C'." "$$POINTONGRAPH" = "Vyberte místo na grafu a stisknìte tlaèítko 'C'." "$$GRZERO" = "nula" ! "$$GRVALUE" = "f = hodnota" "$$GRMIN" = "minimum" "$$GRMAX" = "maximum" *************** *** 612,616 **** "$$MNRADIAN" = "->Rad" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->c()+isin()" /************************************************** --- 612,616 ---- "$$MNRADIAN" = "->Rad" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->cos()+isin()" /************************************************** *************** *** 622,631 **** "$$COMPUTING" = "Start" "$$COMPCONFIRM" = "Die Berechnung kann etwas dauern, bitte OK drücken" ! "$$COMPRESULT" = "Das Ergebnis ist: ^2" "$$LEFTBOUND" = "Bitte linken Rand auswählen und 'C' drücken." "$$RIGHTBOUND" = "Bitte rechten Rand auswählen und 'C' drücken." "$$POINTONGRAPH" = "Bitte Kurvenpunkt wählen und 'C' drücken." "$$GRZERO" = "Nullstelle" ! "$$GRVALUE" = "Wert" "$$GRMIN" = "Minimum" "$$GRMAX" = "Maximum" --- 622,631 ---- "$$COMPUTING" = "Start" "$$COMPCONFIRM" = "Die Berechnung kann etwas dauern, bitte OK drücken" ! "$$COMPRESULT" = "Das Ergebnis ist: graphres = ^2" "$$LEFTBOUND" = "Bitte linken Rand auswählen und 'C' drücken." "$$RIGHTBOUND" = "Bitte rechten Rand auswählen und 'C' drücken." "$$POINTONGRAPH" = "Bitte Kurvenpunkt wählen und 'C' drücken." "$$GRZERO" = "Nullstelle" ! "$$GRVALUE" = "f = Wert" "$$GRMIN" = "Minimum" "$$GRMAX" = "Maximum" *************** *** 1039,1046 **** "$$ANS PROBLEM" = "Can't get value of ANS variable." "$$BAD VALUES" = "Bad values." ! "$$NO STATE FILE" = "No or wrong version state file. Reinitializing with defaults." "$$NO LAYOUT FILE" = "Missing ^1.layout file." "$$ERROR LOADING GIF"= "Missing skin ^1.gif file." "$$ERROR SAVING STATE"= "Could not save state to file, state will be lost for next session." "$$NUMBER GUESSER" = "Number Guesser" --- 1039,1048 ---- "$$ANS PROBLEM" = "Can't get value of ANS variable." "$$BAD VALUES" = "Bad values." ! "$$NO STATE FILE" = "No or wrong version state file (normal on first run or after a clean install). Reinitializing with defaults." "$$NO LAYOUT FILE" = "Missing ^1.layout file." "$$ERROR LOADING GIF"= "Missing skin ^1.gif file." + "$$BAD GIF" = "Bad skin ^1.gif file." "$$ERROR SAVING STATE"= "Could not save state to file, state will be lost for next session." + "$$MEMALLOC FAIL" = "Error allocating memory for skin ^2 (^1.gif) = ^3." "$$NUMBER GUESSER" = "Number Guesser" *************** *** 1057,1060 **** --- 1059,1066 ---- "$$EQUATIONS ONLY" = "Equations" + "$$CALC NEED TRACK MODE" = "Calc key is actibe only in curve track mode." + "$$CALC NEED CURVE" = "Select a curve to track by pressing again the curve track mode key." + "$$CALC NEED SELECT" = "Please select a point or a range on graph." + /************************************************** * MISC STRINGS (17) * *************** *** 1082,1086 **** "$$MNGRAD" = "->Grad" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->c()+isin()" "$$RESULT" = "Result" "$$RESULT MSG" = "Result: ^1" --- 1088,1092 ---- "$$MNGRAD" = "->Grad" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->cos()+isin()" "$$RESULT" = "Result" "$$RESULT MSG" = "Result: ^1" *************** *** 1094,1103 **** "$$COMPUTING" = "Computing" "$$COMPCONFIRM" = "The computing may take a while, press OK to start" ! "$$COMPRESULT" = "The ^1 of a function is: ^2" "$$LEFTBOUND" = "Please select the LEFT bound of the interval and press the 'C' button" "$$RIGHTBOUND" = "Please select the RIGHT bound of the interval and press the 'C' button" "$$POINTONGRAPH" = "Please select the point on graph and press the 'C' button" "$$GRZERO" = "zero" ! "$$GRVALUE" = "value" "$$GRMIN" = "minimum" "$$GRMAX" = "maximum" --- 1100,1109 ---- "$$COMPUTING" = "Computing" "$$COMPCONFIRM" = "The computing may take a while, press OK to start" ! "$$COMPRESULT" = "The result of ^1 is : graphres = ^2" "$$LEFTBOUND" = "Please select the LEFT bound of the interval and press the 'C' button" "$$RIGHTBOUND" = "Please select the RIGHT bound of the interval and press the 'C' button" "$$POINTONGRAPH" = "Please select the point on graph and press the 'C' button" "$$GRZERO" = "zero" ! "$$GRVALUE" = "f = value" "$$GRMIN" = "minimum" "$$GRMAX" = "maximum" *************** *** 1520,1534 **** "$$ANS PROBLEM" = "Impossible d'évaluer la variable ANS." "$$BAD VALUES" = "Valeurs incorrectes." ! "$$NO STATE FILE" = "Pas de fichier state, ou mauvaise version. Reinitialisation aux défauts." "$$NO LAYOUT FILE" = "Fichier ^1.layout manquant." "$$ERROR LOADING GIF"= "Fichier de Skin ^1.gif manquant." "$$ERROR SAVING STATE"= "Impossible de sauver dans le fichier state, l'état sera perdu pour la prochaine session." "$$NUMBER GUESSER" = "Analyse numérique" ! "$$NUMBER NOT RECOG" = "Nombre non reconnu." ! /**************************************************/ "$$OCTAL MODE SELECTED" = "Bad Mode Selected" "$$OCTAL MODE ERROR" = "You cannot use this key in ^1 mode." - /**************************************************/ "$$ERROR DURING IMPORT" = "Erreur lors de l'importation" --- 1526,1540 ---- "$$ANS PROBLEM" = "Impossible d'évaluer la variable ANS." "$$BAD VALUES" = "Valeurs incorrectes." ! "$$NO STATE FILE" = "Pas de fichier state, ou mauvaise version (normal lors d'une première installation ou après nettoyage). Réinitialisation aux défauts." "$$NO LAYOUT FILE" = "Fichier ^1.layout manquant." "$$ERROR LOADING GIF"= "Fichier de Skin ^1.gif manquant." + "$$BAD GIF" = "Fichier de Skin ^1.gif incorrect." "$$ERROR SAVING STATE"= "Impossible de sauver dans le fichier state, l'état sera perdu pour la prochaine session." + "$$MEMALLOC FAIL" = "Erreur d'allocation mémoire pour la Skin ^2 (^1.gif) = ^3." "$$NUMBER GUESSER" = "Analyse numérique" ! "$$NUMBER NOT RECOG" = "Nombre non reconnu." "$$OCTAL MODE SELECTED" = "Bad Mode Selected" "$$OCTAL MODE ERROR" = "You cannot use this key in ^1 mode." "$$ERROR DURING IMPORT" = "Erreur lors de l'importation" *************** *** 1540,1543 **** --- 1546,1553 ---- "$$EQUATIONS ONLY" = "Equations" + "$$CALC NEED TRACK MODE" = "La touche Calc n'est active qu'en mode suivi de courbe." + "$$CALC NEED CURVE" = "Sélectionnez une courbe à suivre en rappuyant sur la touche de mode suivi." + "$$CALC NEED SELECT" = "Sélectionnez un point ou une plage sur le graphe." + /************************************************** * MISC STRINGS (17) * *************** *** 1565,1569 **** "$$MNGRAD" = "->Grades" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->c()+isin()" "$$RESULT" = "Résultat" "$$RESULT MSG" = "Résultat: ^1" --- 1575,1579 ---- "$$MNGRAD" = "->Grades" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->cos()+isin()" "$$RESULT" = "Résultat" "$$RESULT MSG" = "Résultat: ^1" *************** *** 1577,1586 **** "$$COMPUTING" = "Calculs en cours" "$$COMPCONFIRM" = "Le calcul peut prendre un moment, appuyez sur OK pour commencer" ! "$$COMPRESULT" = "La fonction de ^1 est: ^2" "$$LEFTBOUND" = "Sélectionnez la borne inférieure et appuyez sur 'C'" "$$RIGHTBOUND" = "Sélectionnez la borne supérieure et appuyez sur 'C'" "$$POINTONGRAPH" = "Sélectionnez un point du graphe et appuyez sur 'C'" "$$GRZERO" = "zéro" ! "$$GRVALUE" = "valeur" "$$GRMIN" = "minimum" "$$GRMAX" = "maximum" --- 1587,1596 ---- "$$COMPUTING" = "Calculs en cours" "$$COMPCONFIRM" = "Le calcul peut prendre un moment, appuyez sur OK pour commencer" ! "$$COMPRESULT" = "Le résultat de ^1 est: graphres = ^2" "$$LEFTBOUND" = "Sélectionnez la borne inférieure et appuyez sur 'C'" "$$RIGHTBOUND" = "Sélectionnez la borne supérieure et appuyez sur 'C'" "$$POINTONGRAPH" = "Sélectionnez un point du graphe et appuyez sur 'C'" "$$GRZERO" = "zéro" ! "$$GRVALUE" = "f = valeur" "$$GRMIN" = "minimum" "$$GRMAX" = "maximum" *************** *** 2015,2019 **** "$$MNRADIAN" = "->Radianti" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->c()+isin()" /************************************************** --- 2025,2029 ---- "$$MNRADIAN" = "->Radianti" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->cos()+isin()" /************************************************** *************** *** 2032,2036 **** * Nothing for d/dx */ ! "$$COMPRESULT" = "Il ^1 della funzione è: ^2" "$$LEFTBOUND" = "Scegli il limite SX dell'intervallo e premi 'C'" --- 2042,2046 ---- * Nothing for d/dx */ ! "$$COMPRESULT" = "Il ^1 della funzione è: graphres = ^2" "$$LEFTBOUND" = "Scegli il limite SX dell'intervallo e premi 'C'" *************** *** 2038,2042 **** "$$POINTONGRAPH" = "Scegli il punto sul grafico e premi 'C'" "$$GRZERO" = "zero" ! "$$GRVALUE" = "valore" "$$GRMIN" = "min" "$$GRMAX" = "max" --- 2048,2052 ---- "$$POINTONGRAPH" = "Scegli il punto sul grafico e premi 'C'" "$$GRZERO" = "zero" ! "$$GRVALUE" = "f = valore" "$$GRMIN" = "min" "$$GRMAX" = "max" *************** *** 2456,2460 **** "$$MNRADIAN" = "->Radian" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->c()+isin()" /************************************************** --- 2466,2470 ---- "$$MNRADIAN" = "->Radian" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->cos()+isin()" /************************************************** *************** *** 2466,2475 **** "$$COMPUTING" = "vZ" "$$COMPCONFIRM" = "vZÉÍÔª©©èÜ·DOK ð·ÆvZðnßÜ·D" ! "$$COMPRESULT" = "^1 : ^2" "$$LEFTBOUND" = "¶Ì[ðIðµÄC'C' {^ðµÄ¾³¢D" "$$RIGHTBOUND" = "EÌ[ðIðµÄC'C' {^ðµÄ¾³¢D" "$$POINTONGRAPH" = "OtãÌ_ðIðµÄC'C' {^ðµÄ¾³¢D" "$$GRZERO" = "[_" ! "$$GRVALUE" = "l" "$$GRMIN" = "Ŭl" "$$GRMAX" = "Åål" --- 2476,2485 ---- "$$COMPUTING" = "vZ" "$$COMPCONFIRM" = "vZÉÍÔª©©èÜ·DOK ð·ÆvZðnßÜ·D" ! "$$COMPRESULT" = "^1 : graphres = ^2" "$$LEFTBOUND" = "¶Ì[ðIðµÄC'C' {^ðµÄ¾³¢D" "$$RIGHTBOUND" = "EÌ[ðIðµÄC'C' {^ðµÄ¾³¢D" "$$POINTONGRAPH" = "OtãÌ_ðIðµÄC'C' {^ðµÄ¾³¢D" "$$GRZERO" = "[_" ! "$$GRVALUE" = "f = l" "$$GRMIN" = "Ŭl" "$$GRMAX" = "Åål" *************** *** 2914,2918 **** "$$MNRADIAN" = "->Radianos" "$$MNGON" = "->e^(x)" ! "$$MNCIS" = "->c()+isin()" /************************************************** --- 2924,2928 ---- "$$MNRADIAN" = "->Radianos" "$$MNGON" = "->e^(x)" ! "$$MNCIS" = "->cos()+isin()" /************************************************** *************** *** 2924,2933 **** "$$COMPUTING" = "Calculando" "$$COMPCONFIRM" = "O calculo pode demorar, OK para iniciar" ! "$$COMPRESULT" = "Funcao de ^1 e: ^2" "$$LEFTBOUND" = "Selecione o lado ESQUERDO do intervalo e precione botao 'C' " "$$RIGHTBOUND" = "Selecione el borde DIREITO do intervalo e precione botao 'C' " "$$POINTONGRAPH" = "Selecione um ponto no gráfico e precione botao 'C'" "$$GRZERO" = "Zero" ! "$$GRVALUE" = "Valor" "$$GRMIN" = "Mínimo" "$$GRMAX" = "Máximo" --- 2934,2943 ---- "$$COMPUTING" = "Calculando" "$$COMPCONFIRM" = "O calculo pode demorar, OK para iniciar" ! "$$COMPRESULT" = "Funcao de ^1 e: graphres = ^2" "$$LEFTBOUND" = "Selecione o lado ESQUERDO do intervalo e precione botao 'C' " "$$RIGHTBOUND" = "Selecione el borde DIREITO do intervalo e precione botao 'C' " "$$POINTONGRAPH" = "Selecione um ponto no gráfico e precione botao 'C'" "$$GRZERO" = "Zero" ! "$$GRVALUE" = "f = Valor" "$$GRMIN" = "Mínimo" "$$GRMAX" = "Máximo" *************** *** 3360,3364 **** "$$MNRADIAN" = "->òÁÄÉÁÎÙ" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->c()+isin()" /************************************************** --- 3370,3374 ---- "$$MNRADIAN" = "->òÁÄÉÁÎÙ" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->cos()+isin()" /************************************************** *************** *** 3370,3379 **** "$$COMPUTING" = "÷ÙÞÉÓÌÅÎÉÅ" "$$COMPCONFIRM" = "òÁÓÞ£Ô ÚÁÊÍ£Ô ÎÅËÏÔÏÒÏÅ ×ÒÅÍÑ. îÁÖÍÉÔÅ ôáë ÄÌÑ ÎÁÞÁÌÁ ×ÙÞÉÓÌÅÎÉÊ" ! "$$COMPRESULT" = "^1 ÆÕÎËÃÉÉ: ^2" "$$LEFTBOUND" = "÷ÙÂÅÒÉÔÅ ÌÅ×ÕÀ ÇÒÁÎÉÃÕ ÉÎÔÅÒ×ÁÌÁ É ÎÁÖÍÉÔÅ 'C'." "$$RIGHTBOUND" = "÷ÙÂÅÒÉÔÅ ÐÒÁ×ÕÀ ÇÒÁÎÉÃÕ ÉÎÔÅÒ×ÁÌÁ É ÎÁÖÍÉÔÅ 'C'." "$$POINTONGRAPH" = "÷ÙÂÅÒÉÔÅ ÍÅÓÔÏ ÎÁ ÇÒÁÆÉËÅ É ÎÁÖÍÉÔÅ 'C'." "$$GRZERO" = "ÎÏÌØ" ! "$$GRVALUE" = "×ÅÌÉÞÉÎÁ" "$$GRMIN" = "ÍÉÎÉÍÕÍ" "$$GRMAX" = "ÍÁËÓÉÍÕÍ" --- 3380,3389 ---- "$$COMPUTING" = "÷ÙÞÉÓÌÅÎÉÅ" "$$COMPCONFIRM" = "òÁÓÞ£Ô ÚÁÊÍ£Ô ÎÅËÏÔÏÒÏÅ ×ÒÅÍÑ. îÁÖÍÉÔÅ ôáë ÄÌÑ ÎÁÞÁÌÁ ×ÙÞÉÓÌÅÎÉÊ" ! "$$COMPRESULT" = "^1 ÆÕÎËÃÉÉ: graphres = ^2" "$$LEFTBOUND" = "÷ÙÂÅÒÉÔÅ ÌÅ×ÕÀ ÇÒÁÎÉÃÕ ÉÎÔÅÒ×ÁÌÁ É ÎÁÖÍÉÔÅ 'C'." "$$RIGHTBOUND" = "÷ÙÂÅÒÉÔÅ ÐÒÁ×ÕÀ ÇÒÁÎÉÃÕ ÉÎÔÅÒ×ÁÌÁ É ÎÁÖÍÉÔÅ 'C'." "$$POINTONGRAPH" = "÷ÙÂÅÒÉÔÅ ÍÅÓÔÏ ÎÁ ÇÒÁÆÉËÅ É ÎÁÖÍÉÔÅ 'C'." "$$GRZERO" = "ÎÏÌØ" ! "$$GRVALUE" = "f = ×ÅÌÉÞÉÎÁ" "$$GRMIN" = "ÍÉÎÉÍÕÍ" "$$GRMAX" = "ÍÁËÓÉÍÕÍ" *************** *** 3814,3818 **** "$$MNRADIAN" = "->Ðàäèàíû" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->c()+isin()" /************************************************** --- 3824,3828 ---- "$$MNRADIAN" = "->Ðàäèàíû" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->cos()+isin()" /************************************************** *************** *** 3824,3833 **** "$$COMPUTING" = "Âû÷èñëåíèå" "$$COMPCONFIRM" = "Ðàñ÷¸ò çàéì¸ò íåêîòîðîå âðåìÿ. Íàæìèòå ÒÀÊ äëÿ íà÷àëà âû÷èñëåíèé" ! "$$COMPRESULT" = "^1 ôóíêöèè: ^2" "$$LEFTBOUND" = "Âûáåðèòå ëåâóþ ãðàíèöó èíòåðâàëà è íàæìèòå 'C'." "$$RIGHTBOUND" = "Âûáåðèòå ïðàâóþ ãðàíèöó èíòåðâàëà è íàæìèòå 'C'." "$$POINTONGRAPH" = "Âûáåðèòå ìåñòî íà ãðàôèêå è íàæìèòå 'C'." "$$GRZERO" = "íîëü" ! "$$GRVALUE" = "âåëè÷èíà" "$$GRMIN" = "ìèíèìóì" "$$GRMAX" = "ìàêñèìóì" --- 3834,3843 ---- "$$COMPUTING" = "Âû÷èñëåíèå" "$$COMPCONFIRM" = "Ðàñ÷¸ò çàéì¸ò íåêîòîðîå âðåìÿ. Íàæìèòå ÒÀÊ äëÿ íà÷àëà âû÷èñëåíèé" ! "$$COMPRESULT" = "^1 ôóíêöèè: graphres = ^2" "$$LEFTBOUND" = "Âûáåðèòå ëåâóþ ãðàíèöó èíòåðâàëà è íàæìèòå 'C'." "$$RIGHTBOUND" = "Âûáåðèòå ïðàâóþ ãðàíèöó èíòåðâàëà è íàæìèòå 'C'." "$$POINTONGRAPH" = "Âûáåðèòå ìåñòî íà ãðàôèêå è íàæìèòå 'C'." "$$GRZERO" = "íîëü" ! "$$GRVALUE" = "f = âåëè÷èíà" "$$GRMIN" = "ìèíèìóì" "$$GRMAX" = "ìàêñèìóì" *************** *** 4280,4289 **** "$$COMPUTING" = "Calculando" "$$COMPCONFIRM" = "El calculo puede tardar, oprima OK para iniciar" ! "$$COMPRESULT" = "Función de ^1 es: ^2" "$$LEFTBOUND" = "Seleccione el borde IZQUIERDO del intervalo y oprima el botón 'C' " "$$RIGHTBOUND" = "Seleccione el borde DERECHO del intervalo y oprima el botón 'C' " "$$POINTONGRAPH" = "Seleccione un punto en la gráfica y oprima el botón 'C'" "$$GRZERO" = "cero" ! "$$GRVALUE" = "valor" "$$GRMIN" = "mínimo" "$$GRMAX" = "máximo" --- 4290,4299 ---- "$$COMPUTING" = "Calculando" "$$COMPCONFIRM" = "El calculo puede tardar, oprima OK para iniciar" ! "$$COMPRESULT" = "Función de ^1 es: graphres = ^2" "$$LEFTBOUND" = "Seleccione el borde IZQUIERDO del intervalo y oprima el botón 'C' " "$$RIGHTBOUND" = "Seleccione el borde DERECHO del intervalo y oprima el botón 'C' " "$$POINTONGRAPH" = "Seleccione un punto en la gráfica y oprima el botón 'C'" "$$GRZERO" = "cero" ! "$$GRVALUE" = "f = valor" "$$GRMIN" = "mínimo" "$$GRMAX" = "máximo" |
Update of /cvsroot/easycalc/PPCport/langs In directory vz-cvs-4.sog:/tmp/cvs-serv5483 Modified Files: cs.rcp de.rcp en.rcp fr.rcp it.rcp ja.rcp pt.rcp ru_koi8.rcp ru_win.rcp sp.rcp Log Message: 1.25g Index: it.rcp =================================================================== RCS file: /cvsroot/easycalc/PPCport/langs/it.rcp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** it.rcp 15 Dec 2009 21:38:26 -0000 1.3 --- it.rcp 28 Feb 2011 22:11:11 -0000 1.4 *************** *** 181,185 **** "$$MNRADIAN" = "->Radianti" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->c()+isin()" /************************************************** --- 181,185 ---- "$$MNRADIAN" = "->Radianti" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->cos()+isin()" /************************************************** *************** *** 198,202 **** * Nothing for d/dx */ ! "$$COMPRESULT" = "Il ^1 della funzione è: ^2" "$$LEFTBOUND" = "Scegli il limite SX dell'intervallo e premi 'C'" --- 198,202 ---- * Nothing for d/dx */ ! "$$COMPRESULT" = "Il ^1 della funzione è: graphres = ^2" "$$LEFTBOUND" = "Scegli il limite SX dell'intervallo e premi 'C'" *************** *** 204,208 **** "$$POINTONGRAPH" = "Scegli il punto sul grafico e premi 'C'" "$$GRZERO" = "zero" ! "$$GRVALUE" = "valore" "$$GRMIN" = "min" "$$GRMAX" = "max" --- 204,208 ---- "$$POINTONGRAPH" = "Scegli il punto sul grafico e premi 'C'" "$$GRZERO" = "zero" ! "$$GRVALUE" = "f = valore" "$$GRMIN" = "min" "$$GRMAX" = "max" Index: en.rcp =================================================================== RCS file: /cvsroot/easycalc/PPCport/langs/en.rcp,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** en.rcp 24 Dec 2009 16:39:29 -0000 1.8 --- en.rcp 28 Feb 2011 22:11:11 -0000 1.9 *************** *** 174,181 **** "$$ANS PROBLEM" = "Can't get value of ANS variable." "$$BAD VALUES" = "Bad values." ! "$$NO STATE FILE" = "No or wrong version state file. Reinitializing with defaults." "$$NO LAYOUT FILE" = "Missing ^1.layout file." "$$ERROR LOADING GIF"= "Missing skin ^1.gif file." "$$ERROR SAVING STATE"= "Could not save state to file, state will be lost for next session." "$$NUMBER GUESSER" = "Number Guesser" --- 174,183 ---- "$$ANS PROBLEM" = "Can't get value of ANS variable." "$$BAD VALUES" = "Bad values." ! "$$NO STATE FILE" = "No or wrong version state file (normal on first run or after a clean install). Reinitializing with defaults." "$$NO LAYOUT FILE" = "Missing ^1.layout file." "$$ERROR LOADING GIF"= "Missing skin ^1.gif file." + "$$BAD GIF" = "Bad skin ^1.gif file." "$$ERROR SAVING STATE"= "Could not save state to file, state will be lost for next session." + "$$MEMALLOC FAIL" = "Error allocating memory for skin ^2 (^1.gif) = ^3." "$$NUMBER GUESSER" = "Number Guesser" *************** *** 192,195 **** --- 194,201 ---- "$$EQUATIONS ONLY" = "Equations" + "$$CALC NEED TRACK MODE" = "Calc key is actibe only in curve track mode." + "$$CALC NEED CURVE" = "Select a curve to track by pressing again the curve track mode key." + "$$CALC NEED SELECT" = "Please select a point or a range on graph." + /************************************************** * MISC STRINGS (17) * *************** *** 217,221 **** "$$MNGRAD" = "->Grad" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->c()+isin()" "$$RESULT" = "Result" "$$RESULT MSG" = "Result: ^1" --- 223,227 ---- "$$MNGRAD" = "->Grad" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->cos()+isin()" "$$RESULT" = "Result" "$$RESULT MSG" = "Result: ^1" *************** *** 229,238 **** "$$COMPUTING" = "Computing" "$$COMPCONFIRM" = "The computing may take a while, press OK to start" ! "$$COMPRESULT" = "The ^1 of a function is: ^2" "$$LEFTBOUND" = "Please select the LEFT bound of the interval and press the 'C' button" "$$RIGHTBOUND" = "Please select the RIGHT bound of the interval and press the 'C' button" "$$POINTONGRAPH" = "Please select the point on graph and press the 'C' button" "$$GRZERO" = "zero" ! "$$GRVALUE" = "value" "$$GRMIN" = "minimum" "$$GRMAX" = "maximum" --- 235,244 ---- "$$COMPUTING" = "Computing" "$$COMPCONFIRM" = "The computing may take a while, press OK to start" ! "$$COMPRESULT" = "The result of ^1 is : graphres = ^2" "$$LEFTBOUND" = "Please select the LEFT bound of the interval and press the 'C' button" "$$RIGHTBOUND" = "Please select the RIGHT bound of the interval and press the 'C' button" "$$POINTONGRAPH" = "Please select the point on graph and press the 'C' button" "$$GRZERO" = "zero" ! "$$GRVALUE" = "f = value" "$$GRMIN" = "minimum" "$$GRMAX" = "maximum" Index: ru_koi8.rcp =================================================================== RCS file: /cvsroot/easycalc/PPCport/langs/ru_koi8.rcp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ru_koi8.rcp 15 Dec 2009 21:38:26 -0000 1.3 --- ru_koi8.rcp 28 Feb 2011 22:11:11 -0000 1.4 *************** *** 178,182 **** "$$MNRADIAN" = "->òÁÄÉÁÎÙ" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->c()+isin()" /************************************************** --- 178,182 ---- "$$MNRADIAN" = "->òÁÄÉÁÎÙ" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->cos()+isin()" /************************************************** *************** *** 188,197 **** "$$COMPUTING" = "÷ÙÞÉÓÌÅÎÉÅ" "$$COMPCONFIRM" = "òÁÓÞ£Ô ÚÁÊÍ£Ô ÎÅËÏÔÏÒÏÅ ×ÒÅÍÑ. îÁÖÍÉÔÅ ôáë ÄÌÑ ÎÁÞÁÌÁ ×ÙÞÉÓÌÅÎÉÊ" ! "$$COMPRESULT" = "^1 ÆÕÎËÃÉÉ: ^2" "$$LEFTBOUND" = "÷ÙÂÅÒÉÔÅ ÌÅ×ÕÀ ÇÒÁÎÉÃÕ ÉÎÔÅÒ×ÁÌÁ É ÎÁÖÍÉÔÅ 'C'." "$$RIGHTBOUND" = "÷ÙÂÅÒÉÔÅ ÐÒÁ×ÕÀ ÇÒÁÎÉÃÕ ÉÎÔÅÒ×ÁÌÁ É ÎÁÖÍÉÔÅ 'C'." "$$POINTONGRAPH" = "÷ÙÂÅÒÉÔÅ ÍÅÓÔÏ ÎÁ ÇÒÁÆÉËÅ É ÎÁÖÍÉÔÅ 'C'." "$$GRZERO" = "ÎÏÌØ" ! "$$GRVALUE" = "×ÅÌÉÞÉÎÁ" "$$GRMIN" = "ÍÉÎÉÍÕÍ" "$$GRMAX" = "ÍÁËÓÉÍÕÍ" --- 188,197 ---- "$$COMPUTING" = "÷ÙÞÉÓÌÅÎÉÅ" "$$COMPCONFIRM" = "òÁÓÞ£Ô ÚÁÊÍ£Ô ÎÅËÏÔÏÒÏÅ ×ÒÅÍÑ. îÁÖÍÉÔÅ ôáë ÄÌÑ ÎÁÞÁÌÁ ×ÙÞÉÓÌÅÎÉÊ" ! "$$COMPRESULT" = "^1 ÆÕÎËÃÉÉ: graphres = ^2" "$$LEFTBOUND" = "÷ÙÂÅÒÉÔÅ ÌÅ×ÕÀ ÇÒÁÎÉÃÕ ÉÎÔÅÒ×ÁÌÁ É ÎÁÖÍÉÔÅ 'C'." "$$RIGHTBOUND" = "÷ÙÂÅÒÉÔÅ ÐÒÁ×ÕÀ ÇÒÁÎÉÃÕ ÉÎÔÅÒ×ÁÌÁ É ÎÁÖÍÉÔÅ 'C'." "$$POINTONGRAPH" = "÷ÙÂÅÒÉÔÅ ÍÅÓÔÏ ÎÁ ÇÒÁÆÉËÅ É ÎÁÖÍÉÔÅ 'C'." "$$GRZERO" = "ÎÏÌØ" ! "$$GRVALUE" = "f = ×ÅÌÉÞÉÎÁ" "$$GRMIN" = "ÍÉÎÉÍÕÍ" "$$GRMAX" = "ÍÁËÓÉÍÕÍ" Index: cs.rcp =================================================================== RCS file: /cvsroot/easycalc/PPCport/langs/cs.rcp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** cs.rcp 15 Dec 2009 21:38:26 -0000 1.3 --- cs.rcp 28 Feb 2011 22:11:11 -0000 1.4 *************** *** 176,180 **** "$$MNRADIAN" = "->Radiány" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->c()+isin()" /************************************************** --- 176,180 ---- "$$MNRADIAN" = "->Radiány" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->cos()+isin()" /************************************************** *************** *** 186,195 **** "$$COMPUTING" = "Výpoèet" "$$COMPCONFIRM" = "Výpoèet mù¾e chvíli trvat. Po stisknutí tlaèítka OK zaène výpoèet." ! "$$COMPRESULT" = "^1 funkce je: ^2" "$$LEFTBOUND" = "Vyberte levou èást intervalu a stisknìte tlaèítko 'C'." "$$RIGHTBOUND" = "Vyberte pravout èást intervalu a stisknìte tlaèítko 'C'." "$$POINTONGRAPH" = "Vyberte místo na grafu a stisknìte tlaèítko 'C'." "$$GRZERO" = "nula" ! "$$GRVALUE" = "hodnota" "$$GRMIN" = "minimum" "$$GRMAX" = "maximum" --- 186,195 ---- "$$COMPUTING" = "Výpoèet" "$$COMPCONFIRM" = "Výpoèet mù¾e chvíli trvat. Po stisknutí tlaèítka OK zaène výpoèet." ! "$$COMPRESULT" = "^1 funkce je: graphres = ^2" "$$LEFTBOUND" = "Vyberte levou èást intervalu a stisknìte tlaèítko 'C'." "$$RIGHTBOUND" = "Vyberte pravout èást intervalu a stisknìte tlaèítko 'C'." "$$POINTONGRAPH" = "Vyberte místo na grafu a stisknìte tlaèítko 'C'." "$$GRZERO" = "nula" ! "$$GRVALUE" = "f = hodnota" "$$GRMIN" = "minimum" "$$GRMAX" = "maximum" Index: pt.rcp =================================================================== RCS file: /cvsroot/easycalc/PPCport/langs/pt.rcp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** pt.rcp 15 Dec 2009 21:38:26 -0000 1.3 --- pt.rcp 28 Feb 2011 22:11:11 -0000 1.4 *************** *** 184,188 **** "$$MNRADIAN" = "->Radianos" "$$MNGON" = "->e^(x)" ! "$$MNCIS" = "->c()+isin()" /************************************************** --- 184,188 ---- "$$MNRADIAN" = "->Radianos" "$$MNGON" = "->e^(x)" ! "$$MNCIS" = "->cos()+isin()" /************************************************** *************** *** 194,203 **** "$$COMPUTING" = "Calculando" "$$COMPCONFIRM" = "O calculo pode demorar, OK para iniciar" ! "$$COMPRESULT" = "Funcao de ^1 e: ^2" "$$LEFTBOUND" = "Selecione o lado ESQUERDO do intervalo e precione botao 'C' " "$$RIGHTBOUND" = "Selecione el borde DIREITO do intervalo e precione botao 'C' " "$$POINTONGRAPH" = "Selecione um ponto no gráfico e precione botao 'C'" "$$GRZERO" = "Zero" ! "$$GRVALUE" = "Valor" "$$GRMIN" = "Mínimo" "$$GRMAX" = "Máximo" --- 194,203 ---- "$$COMPUTING" = "Calculando" "$$COMPCONFIRM" = "O calculo pode demorar, OK para iniciar" ! "$$COMPRESULT" = "Funcao de ^1 e: graphres = ^2" "$$LEFTBOUND" = "Selecione o lado ESQUERDO do intervalo e precione botao 'C' " "$$RIGHTBOUND" = "Selecione el borde DIREITO do intervalo e precione botao 'C' " "$$POINTONGRAPH" = "Selecione um ponto no gráfico e precione botao 'C'" "$$GRZERO" = "Zero" ! "$$GRVALUE" = "f = Valor" "$$GRMIN" = "Mínimo" "$$GRMAX" = "Máximo" Index: ru_win.rcp =================================================================== RCS file: /cvsroot/easycalc/PPCport/langs/ru_win.rcp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ru_win.rcp 15 Dec 2009 21:38:26 -0000 1.3 --- ru_win.rcp 28 Feb 2011 22:11:11 -0000 1.4 *************** *** 183,187 **** "$$MNRADIAN" = "->Ðàäèàíû" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->c()+isin()" /************************************************** --- 183,187 ---- "$$MNRADIAN" = "->Ðàäèàíû" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->cos()+isin()" /************************************************** *************** *** 193,202 **** "$$COMPUTING" = "Âû÷èñëåíèå" "$$COMPCONFIRM" = "Ðàñ÷¸ò çàéì¸ò íåêîòîðîå âðåìÿ. Íàæìèòå ÒÀÊ äëÿ íà÷àëà âû÷èñëåíèé" ! "$$COMPRESULT" = "^1 ôóíêöèè: ^2" "$$LEFTBOUND" = "Âûáåðèòå ëåâóþ ãðàíèöó èíòåðâàëà è íàæìèòå 'C'." "$$RIGHTBOUND" = "Âûáåðèòå ïðàâóþ ãðàíèöó èíòåðâàëà è íàæìèòå 'C'." "$$POINTONGRAPH" = "Âûáåðèòå ìåñòî íà ãðàôèêå è íàæìèòå 'C'." "$$GRZERO" = "íîëü" ! "$$GRVALUE" = "âåëè÷èíà" "$$GRMIN" = "ìèíèìóì" "$$GRMAX" = "ìàêñèìóì" --- 193,202 ---- "$$COMPUTING" = "Âû÷èñëåíèå" "$$COMPCONFIRM" = "Ðàñ÷¸ò çàéì¸ò íåêîòîðîå âðåìÿ. Íàæìèòå ÒÀÊ äëÿ íà÷àëà âû÷èñëåíèé" ! "$$COMPRESULT" = "^1 ôóíêöèè: graphres = ^2" "$$LEFTBOUND" = "Âûáåðèòå ëåâóþ ãðàíèöó èíòåðâàëà è íàæìèòå 'C'." "$$RIGHTBOUND" = "Âûáåðèòå ïðàâóþ ãðàíèöó èíòåðâàëà è íàæìèòå 'C'." "$$POINTONGRAPH" = "Âûáåðèòå ìåñòî íà ãðàôèêå è íàæìèòå 'C'." "$$GRZERO" = "íîëü" ! "$$GRVALUE" = "f = âåëè÷èíà" "$$GRMIN" = "ìèíèìóì" "$$GRMAX" = "ìàêñèìóì" Index: ja.rcp =================================================================== RCS file: /cvsroot/easycalc/PPCport/langs/ja.rcp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ja.rcp 15 Dec 2009 21:38:26 -0000 1.3 --- ja.rcp 28 Feb 2011 22:11:11 -0000 1.4 *************** *** 180,184 **** "$$MNRADIAN" = "->Radian" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->c()+isin()" /************************************************** --- 180,184 ---- "$$MNRADIAN" = "->Radian" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->cos()+isin()" /************************************************** *************** *** 190,199 **** "$$COMPUTING" = "vZ" "$$COMPCONFIRM" = "vZÉÍÔª©©èÜ·DOK ð·ÆvZðnßÜ·D" ! "$$COMPRESULT" = "^1 : ^2" "$$LEFTBOUND" = "¶Ì[ðIðµÄC'C' {^ðµÄ¾³¢D" "$$RIGHTBOUND" = "EÌ[ðIðµÄC'C' {^ðµÄ¾³¢D" "$$POINTONGRAPH" = "OtãÌ_ðIðµÄC'C' {^ðµÄ¾³¢D" "$$GRZERO" = "[_" ! "$$GRVALUE" = "l" "$$GRMIN" = "Ŭl" "$$GRMAX" = "Åål" --- 190,199 ---- "$$COMPUTING" = "vZ" "$$COMPCONFIRM" = "vZÉÍÔª©©èÜ·DOK ð·ÆvZðnßÜ·D" ! "$$COMPRESULT" = "^1 : graphres = ^2" "$$LEFTBOUND" = "¶Ì[ðIðµÄC'C' {^ðµÄ¾³¢D" "$$RIGHTBOUND" = "EÌ[ðIðµÄC'C' {^ðµÄ¾³¢D" "$$POINTONGRAPH" = "OtãÌ_ðIðµÄC'C' {^ðµÄ¾³¢D" "$$GRZERO" = "[_" ! "$$GRVALUE" = "f = l" "$$GRMIN" = "Ŭl" "$$GRMAX" = "Åål" Index: fr.rcp =================================================================== RCS file: /cvsroot/easycalc/PPCport/langs/fr.rcp,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** fr.rcp 24 Dec 2009 16:39:29 -0000 1.8 --- fr.rcp 28 Feb 2011 22:11:11 -0000 1.9 *************** *** 183,197 **** "$$ANS PROBLEM" = "Impossible d'évaluer la variable ANS." "$$BAD VALUES" = "Valeurs incorrectes." ! "$$NO STATE FILE" = "Pas de fichier state, ou mauvaise version. Reinitialisation aux défauts." "$$NO LAYOUT FILE" = "Fichier ^1.layout manquant." "$$ERROR LOADING GIF"= "Fichier de Skin ^1.gif manquant." "$$ERROR SAVING STATE"= "Impossible de sauver dans le fichier state, l'état sera perdu pour la prochaine session." "$$NUMBER GUESSER" = "Analyse numérique" ! "$$NUMBER NOT RECOG" = "Nombre non reconnu." ! /**************************************************/ "$$OCTAL MODE SELECTED" = "Bad Mode Selected" "$$OCTAL MODE ERROR" = "You cannot use this key in ^1 mode." - /**************************************************/ "$$ERROR DURING IMPORT" = "Erreur lors de l'importation" --- 183,197 ---- "$$ANS PROBLEM" = "Impossible d'évaluer la variable ANS." "$$BAD VALUES" = "Valeurs incorrectes." ! "$$NO STATE FILE" = "Pas de fichier state, ou mauvaise version (normal lors d'une première installation ou après nettoyage). Réinitialisation aux défauts." "$$NO LAYOUT FILE" = "Fichier ^1.layout manquant." "$$ERROR LOADING GIF"= "Fichier de Skin ^1.gif manquant." + "$$BAD GIF" = "Fichier de Skin ^1.gif incorrect." "$$ERROR SAVING STATE"= "Impossible de sauver dans le fichier state, l'état sera perdu pour la prochaine session." + "$$MEMALLOC FAIL" = "Erreur d'allocation mémoire pour la Skin ^2 (^1.gif) = ^3." "$$NUMBER GUESSER" = "Analyse numérique" ! "$$NUMBER NOT RECOG" = "Nombre non reconnu." "$$OCTAL MODE SELECTED" = "Bad Mode Selected" "$$OCTAL MODE ERROR" = "You cannot use this key in ^1 mode." "$$ERROR DURING IMPORT" = "Erreur lors de l'importation" *************** *** 203,206 **** --- 203,210 ---- "$$EQUATIONS ONLY" = "Equations" + "$$CALC NEED TRACK MODE" = "La touche Calc n'est active qu'en mode suivi de courbe." + "$$CALC NEED CURVE" = "Sélectionnez une courbe à suivre en rappuyant sur la touche de mode suivi." + "$$CALC NEED SELECT" = "Sélectionnez un point ou une plage sur le graphe." + /************************************************** * MISC STRINGS (17) * *************** *** 228,232 **** "$$MNGRAD" = "->Grades" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->c()+isin()" "$$RESULT" = "Résultat" "$$RESULT MSG" = "Résultat: ^1" --- 232,236 ---- "$$MNGRAD" = "->Grades" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->cos()+isin()" "$$RESULT" = "Résultat" "$$RESULT MSG" = "Résultat: ^1" *************** *** 240,249 **** "$$COMPUTING" = "Calculs en cours" "$$COMPCONFIRM" = "Le calcul peut prendre un moment, appuyez sur OK pour commencer" ! "$$COMPRESULT" = "La fonction de ^1 est: ^2" "$$LEFTBOUND" = "Sélectionnez la borne inférieure et appuyez sur 'C'" "$$RIGHTBOUND" = "Sélectionnez la borne supérieure et appuyez sur 'C'" "$$POINTONGRAPH" = "Sélectionnez un point du graphe et appuyez sur 'C'" "$$GRZERO" = "zéro" ! "$$GRVALUE" = "valeur" "$$GRMIN" = "minimum" "$$GRMAX" = "maximum" --- 244,253 ---- "$$COMPUTING" = "Calculs en cours" "$$COMPCONFIRM" = "Le calcul peut prendre un moment, appuyez sur OK pour commencer" ! "$$COMPRESULT" = "Le résultat de ^1 est: graphres = ^2" "$$LEFTBOUND" = "Sélectionnez la borne inférieure et appuyez sur 'C'" "$$RIGHTBOUND" = "Sélectionnez la borne supérieure et appuyez sur 'C'" "$$POINTONGRAPH" = "Sélectionnez un point du graphe et appuyez sur 'C'" "$$GRZERO" = "zéro" ! "$$GRVALUE" = "f = valeur" "$$GRMIN" = "minimum" "$$GRMAX" = "maximum" Index: sp.rcp =================================================================== RCS file: /cvsroot/easycalc/PPCport/langs/sp.rcp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** sp.rcp 15 Dec 2009 21:38:26 -0000 1.3 --- sp.rcp 28 Feb 2011 22:11:11 -0000 1.4 *************** *** 195,204 **** "$$COMPUTING" = "Calculando" "$$COMPCONFIRM" = "El calculo puede tardar, oprima OK para iniciar" ! "$$COMPRESULT" = "Función de ^1 es: ^2" "$$LEFTBOUND" = "Seleccione el borde IZQUIERDO del intervalo y oprima el botón 'C' " "$$RIGHTBOUND" = "Seleccione el borde DERECHO del intervalo y oprima el botón 'C' " "$$POINTONGRAPH" = "Seleccione un punto en la gráfica y oprima el botón 'C'" "$$GRZERO" = "cero" ! "$$GRVALUE" = "valor" "$$GRMIN" = "mínimo" "$$GRMAX" = "máximo" --- 195,204 ---- "$$COMPUTING" = "Calculando" "$$COMPCONFIRM" = "El calculo puede tardar, oprima OK para iniciar" ! "$$COMPRESULT" = "Función de ^1 es: graphres = ^2" "$$LEFTBOUND" = "Seleccione el borde IZQUIERDO del intervalo y oprima el botón 'C' " "$$RIGHTBOUND" = "Seleccione el borde DERECHO del intervalo y oprima el botón 'C' " "$$POINTONGRAPH" = "Seleccione un punto en la gráfica y oprima el botón 'C'" "$$GRZERO" = "cero" ! "$$GRVALUE" = "f = valor" "$$GRMIN" = "mínimo" "$$GRMAX" = "máximo" Index: de.rcp =================================================================== RCS file: /cvsroot/easycalc/PPCport/langs/de.rcp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** de.rcp 15 Dec 2009 21:38:26 -0000 1.3 --- de.rcp 28 Feb 2011 22:11:11 -0000 1.4 *************** *** 186,190 **** "$$MNRADIAN" = "->Rad" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->c()+isin()" /************************************************** --- 186,190 ---- "$$MNRADIAN" = "->Rad" "$$MNGON" = "->e^(ix)" ! "$$MNCIS" = "->cos()+isin()" /************************************************** *************** *** 196,205 **** "$$COMPUTING" = "Start" "$$COMPCONFIRM" = "Die Berechnung kann etwas dauern, bitte OK drücken" ! "$$COMPRESULT" = "Das Ergebnis ist: ^2" "$$LEFTBOUND" = "Bitte linken Rand auswählen und 'C' drücken." "$$RIGHTBOUND" = "Bitte rechten Rand auswählen und 'C' drücken." "$$POINTONGRAPH" = "Bitte Kurvenpunkt wählen und 'C' drücken." "$$GRZERO" = "Nullstelle" ! "$$GRVALUE" = "Wert" "$$GRMIN" = "Minimum" "$$GRMAX" = "Maximum" --- 196,205 ---- "$$COMPUTING" = "Start" "$$COMPCONFIRM" = "Die Berechnung kann etwas dauern, bitte OK drücken" ! "$$COMPRESULT" = "Das Ergebnis ist: graphres = ^2" "$$LEFTBOUND" = "Bitte linken Rand auswählen und 'C' drücken." "$$RIGHTBOUND" = "Bitte rechten Rand auswählen und 'C' drücken." "$$POINTONGRAPH" = "Bitte Kurvenpunkt wählen und 'C' drücken." "$$GRZERO" = "Nullstelle" ! "$$GRVALUE" = "f = Wert" "$$GRMIN" = "Minimum" "$$GRMAX" = "Maximum" |
Update of /cvsroot/easycalc/PPCport/docs/images In directory vz-cvs-4.sog:/tmp/cvs-serv4077 Modified Files: AskMyfact.png BasicMainScreen.png Complex-1.png Complex-2.png Complex-3.png F-d2dx.png F-romberg.png F-zero.png FftPrefSignal.png FftPrefSpectrum.png FftSetupSignal.png FftSetupSpectrum.png FftSignal.png FftSpectrum.png Function-f-1.png Function-f-2.png GraphComputingResult.png GraphPreferences-1.png GraphPreferences-2.png GraphPreferences-3.png GraphSpeed.png Matrix-1.png MPopupMenu.png Qrq-1.png Qrqqrr-1.png Qrr-1.png Rref-1.png Rref-2.png RtopExample.png SetupGraphs.png Title-1.png Title-2.png Title-3.png TracePolar.png Trig-DMS-1.png Trig-DMS-2.png Trig-DMS-3.png VPopupMenu.png Added Files: CurveTrackButton.png Removed Files: Qrqqrr-3.png Log Message: 1.25g Index: SetupGraphs.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/SetupGraphs.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsZPg23T and /tmp/cvsSDAix0 differ Index: Qrr-1.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/Qrr-1.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsiEs2oS and /tmp/cvsMDTtTY differ Index: GraphComputingResult.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/GraphComputingResult.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvs1zphAS and /tmp/cvsY88H5Y differ Index: Complex-2.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/Complex-2.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvs4LIhlT and /tmp/cvsGOfIRZ differ Index: FftSetupSpectrum.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/FftSetupSpectrum.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsNLY7MV and /tmp/cvsyzeyk2 differ Index: VPopupMenu.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/VPopupMenu.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsQNEWwW and /tmp/cvsaEDq52 differ Index: F-d2dx.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/F-d2dx.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsx8XyOU and /tmp/cvsGFC4n1 differ Index: GraphPreferences-3.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/GraphPreferences-3.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvs92qpVU and /tmp/cvs6KuTv1 differ Index: Trig-DMS-2.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/Trig-DMS-2.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsO5VJGV and /tmp/cvsK2Hki2 differ Index: Title-3.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/Title-3.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsuWPYHY and /tmp/cvsMRMMk5 differ Index: Title-2.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/Title-2.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvs3g6QkZ and /tmp/cvsIIAVY5 differ Index: MPopupMenu.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/MPopupMenu.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsDNfUzX and /tmp/cvsWP29e4 differ --- NEW FILE: CurveTrackButton.png --- (This appears to be a binary file; contents omitted.) Index: GraphPreferences-1.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/GraphPreferences-1.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsNTq9EX and /tmp/cvs8Vxnl4 differ Index: Complex-3.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/Complex-3.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvschPGK0 and /tmp/cvschhXr7 differ Index: FftSignal.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/FftSignal.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsL2NPo1 and /tmp/cvsSVE367 differ Index: FftPrefSignal.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/FftPrefSignal.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsYswLA1 and /tmp/cvsSwJYj8 differ Index: Title-1.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/Title-1.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsPcuJTZ and /tmp/cvsECUbE6 differ Index: FftSetupSignal.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/FftSetupSignal.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsEtVWu0 and /tmp/cvsUlwpg7 differ Index: Rref-1.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/Rref-1.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvspCwu32 and /tmp/cvsska1P9 differ Index: Complex-1.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/Complex-1.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsfDYFG3 and /tmp/cvsfERjua differ Index: GraphSpeed.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/GraphSpeed.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsHIEV11 and /tmp/cvsWpqvQ8 differ --- Qrqqrr-3.png DELETED --- Index: GraphPreferences-2.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/GraphPreferences-2.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvseCjXi2 and /tmp/cvsWS3o88 differ Index: Function-f-1.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/Function-f-1.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsHtRQ12 and /tmp/cvsUqFnS9 differ Index: BasicMainScreen.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/BasicMainScreen.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvs0Xiit5 and /tmp/cvsMbq0kc differ Index: Matrix-1.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/Matrix-1.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvswwAl55 and /tmp/cvsp6FaYc differ Index: TracePolar.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/TracePolar.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsu1c3i4 and /tmp/cvsEZN2cb differ Index: FftPrefSpectrum.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/FftPrefSpectrum.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsll3JZ4 and /tmp/cvskKXLUb differ Index: F-romberg.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/F-romberg.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsrFAlf5 and /tmp/cvsyhymbc differ Index: AskMyfact.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/AskMyfact.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvstjgsg8 and /tmp/cvsMWRtdf differ Index: Qrqqrr-1.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/Qrqqrr-1.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsxzV3Q8 and /tmp/cvs4HhjPf differ Index: Qrq-1.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/Qrq-1.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsCVK9b7 and /tmp/cvsgnZtbe differ Index: RtopExample.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/RtopExample.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsT28EQ7 and /tmp/cvsdgk7Qe differ Index: Rref-2.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/Rref-2.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsvbOHoa and /tmp/cvsU2Jaqh differ Index: FftSpectrum.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/FftSpectrum.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsGIUA5a and /tmp/cvsq0F37h differ Index: F-zero.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/F-zero.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsWzs8db and /tmp/cvsk9aDhi differ Index: Function-f-2.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/Function-f-2.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvs6TENx9 and /tmp/cvsyyVhCg differ Index: Trig-DMS-3.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/Trig-DMS-3.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsMv3ica and /tmp/cvsbGXShh differ Index: Trig-DMS-1.png =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/images/Trig-DMS-1.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsgdEcIc and /tmp/cvsOijKOj differ |
From: Mapi B. <ma...@us...> - 2011-02-28 22:08:36
|
Update of /cvsroot/easycalc/PPCport/docs In directory vz-cvs-4.sog:/tmp/cvs-serv3783 Modified Files: manual.html Log Message: 1.25g Index: manual.html =================================================================== RCS file: /cvsroot/easycalc/PPCport/docs/manual.html,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** manual.html 24 Dec 2009 16:36:42 -0000 1.1 --- manual.html 28 Feb 2011 22:08:34 -0000 1.2 *************** *** 25,35 **** <body> <h1>EasyCalc Manual</h1> ! <h2>for Version 1.25f Pocket PC</h2> <p> ! <IMG height="292" width="240" alt="Title 1" src="images/Title-1.png" border="1"> ! <IMG height="292" width="241" alt="Title 2" src="images/Title-2.png" border="1"> ! <IMG height="292" width="242" alt="Title 3" src="images/Title-3.png" border="1"> <IMG height="292" width="240" alt="Title 4" --- 25,35 ---- <body> <h1>EasyCalc Manual</h1> ! <h2>for Version 1.25g Pocket PC</h2> <p> ! <IMG height="294" width="242" alt="Title 1" src="images/Title-1.png" border="1"> ! <IMG height="293" width="242" alt="Title 2" src="images/Title-2.png" border="1"> ! <IMG height="294" width="243" alt="Title 3" src="images/Title-3.png" border="1"> <IMG height="292" width="240" alt="Title 4" *************** *** 103,112 **** <li>Full OS clipboard support. <li>Complex number support in all functions. ! <li>Graphics (not yet available in 1.25f PPC, will e in 1.25g): <ul> <li>Normal (Cartesian), polar, and parametric graphs. <li>Graph up to six functions simultaneously with trace and numerical analysis. <li>Graphs have user definable colors, axes, axes lables, range, grid, log and log-log. ! <li>"Table Mode" of graph function values. <li>Zoom in/out. <li>Live screen scrolling. --- 103,112 ---- <li>Full OS clipboard support. <li>Complex number support in all functions. ! <li>Graphics (available as of 1.25g PPC): <ul> <li>Normal (Cartesian), polar, and parametric graphs. <li>Graph up to six functions simultaneously with trace and numerical analysis. <li>Graphs have user definable colors, axes, axes lables, range, grid, log and log-log. ! <!-- <li>"Table Mode" of graph function values. --> <li>Zoom in/out. <li>Live screen scrolling. *************** *** 128,132 **** <h3>Installation</h3> ! Before upgrading, export user variables and functions to unicode or MBCS text files as a precaution. <p>Until there is a .CAB file, install program and accompanying files in the archive in the directory of your choice. Keep the directory structure.</p> --- 128,135 ---- <h3>Installation</h3> ! <p>Before upgrading, export user variables and functions to unicode or MBCS text files as a precaution. ! It is also a good idea to copy the state.bin file to some place or under another name, ! like state.bin.sav, in case something goes wrong in the migration and we want to investigate it. ! </p> <p>Until there is a .CAB file, install program and accompanying files in the archive in the directory of your choice. Keep the directory structure.</p> *************** *** 139,142 **** --- 142,154 ---- <p>After install, if needed import your user variables, functions and equations from .utxt or .txt files (.utxt is unicode).</p> + <p>On first install, or after a clean install, EasyCalc issues the following message, + which is normal:<br /> + "No or wrong version state file (normal on first run or after a clean install). Reinitializing with defaults."<br /> + Simply close the application with File->Exit, and next time it is open, no such message will appear again. + </p> + <p>The reason EasyCalc is delivered with no state.bin file is that this file is storing all user variables, user functions, equations and configuration. + If a default state.bin file were supplied in the package, it would replace the existing state.bin file, and one would lose one's work / config each time one upgrades to a new release. + </p> + <h3>Uninstallation</h3> <p> *************** *** 214,218 **** <p>On the main EasyCalc screen:<br /> ! <img width="240" height="292" alt="BasicMainScreen" src="images/BasicMainScreen.png" border="1"><br /> First is a line of 'annunciators', showing modes and menus. Tap on them to change or trigger actions, see below for more details.<br /> The first line below the 'annunciators' is the 'Results Line', where EasyCalc --- 226,230 ---- <p>On the main EasyCalc screen:<br /> ! <img width="242" height="294" alt="BasicMainScreen" src="images/BasicMainScreen.png" border="1"><br /> First is a line of 'annunciators', showing modes and menus. Tap on them to change or trigger actions, see below for more details.<br /> The first line below the 'annunciators' is the 'Results Line', where EasyCalc *************** *** 231,241 **** <li>Tap on 'Dec'/'Oct'/'Bin'/'Hex' - to change the numeric display/input mode. <li>Tap on 'V' to bring up user-defined variables:<br /> ! <img width="241" height="292" alt="V-Popupmenu" src="images/VPopupMenu.png" border="1"><br/> <li>Tap on 'F' to bring up user-defined functions. <li>Tap on 'f' to bring up a list of EasyCalc built-in functions. <li>'1', '2', '3', 'G' - select the active skin (3 skins, and a Graph mode). ! Note: G is not yet available as of 1.25f. <li>'M' pops up a menu:<br /> ! <img width="242" height="200" alt="M-Popupmenu" src="images/MPopupMenu.png" border="1"><br/> - Copy (results to OS clipboard)<br /> - DataMgr (edit user variables and functions)<br /> --- 243,253 ---- <li>Tap on 'Dec'/'Oct'/'Bin'/'Hex' - to change the numeric display/input mode. <li>Tap on 'V' to bring up user-defined variables:<br /> ! <img width="242" height="293" alt="V-Popupmenu" src="images/VPopupMenu.png" border="1"><br/> <li>Tap on 'F' to bring up user-defined functions. <li>Tap on 'f' to bring up a list of EasyCalc built-in functions. <li>'1', '2', '3', 'G' - select the active skin (3 skins, and a Graph mode). ! Note: G became available as of 1.25g PPC. <li>'M' pops up a menu:<br /> ! <img width="243" height="208" alt="M-Popupmenu" src="images/MPopupMenu.png" border="1"><br/> - Copy (results to OS clipboard)<br /> - DataMgr (edit user variables and functions)<br /> *************** *** 285,291 **** <p>Example:<br /> ! <IMG height="152" width="242" alt="Function f() 1" src="images/Function-f-1.png" border="1"> ! <IMG height="151" width="242" alt="Function f() 2" src="images/Function-f-2.png" border="1"><br /> <tt>f()="x^2"<br /> --- 297,303 ---- <p>Example:<br /> ! <IMG height="124" width="243" alt="Function f() 1" src="images/Function-f-1.png" border="1"> ! <IMG height="123" width="241" alt="Function f() 2" src="images/Function-f-2.png" border="1"><br /> <tt>f()="x^2"<br /> *************** *** 353,357 **** ans> Too deep recursion</tt> - Limited stack space for recursion !!!<br /> <tt>res=myfact(ask("Enter argument for myfact":5))</tt><br /> ! <IMG height="218" width="242" alt="Ask myfact()" src="images/AskMyfact.png" border="1"><br /> Tap/Select 'OK'<br /> --- 365,369 ---- ans> Too deep recursion</tt> - Limited stack space for recursion !!!<br /> <tt>res=myfact(ask("Enter argument for myfact":5))</tt><br /> ! <IMG height="214" width="242" alt="Ask myfact()" src="images/AskMyfact.png" border="1"><br /> Tap/Select 'OK'<br /> *************** *** 455,490 **** <A NAME="SEC06"></A> ! <H2>06. Graphing (not available yet up to 1.25f, planned for 1.25g)</H2> <H3>Entering/Plotting Graphs</H3> <p> ! Switch to Graph mode by tapping the 'G' at the top of the screen (or ! 'Menu->Layout->Graph'). </p> <p> ! Set up the functions to graph by tapping 'S' (or 'Menu-> Graph-> Setup funcs'). <br /> ! <IMG width="160" height="160" alt="Setup Graphs" src="images/SetupGraphs.png" border="1"> <br /> Tap the area to the RIGHT of 'Y1' and enter any valid expression in terms of 'x', such as 'x^2-4' - but WITHOUT any quotes.<br /> ! For each graph you can select the color and the line style ! (line/points/vertical). Each graph can be turned on and off individually. ! The color of the axes, the grid and the graph background are also user ! selectable. You can also turn the axes, axes labels and the grid on and off. </p> <p> ! Change Graph Preferences by tapping 'P' (or 'Menu -> Graph ! -> Preferences').<br /> ! <IMG width="160" height="160" alt="Graph Preferences 1" src="images/GraphPreferences-1.png"> ! <IMG width="160" height="160" alt="Graph Preferences 2" src="images/GraphPreferences-2.png"> ! <IMG width="160" height="160" alt="Graph Preferences 3" src="images/GraphPreferences-3.png"><br /> Here you can setup the display area (min and max bounds, grid interval) and type of graph (normal, polar, parametric). Either axis can be logarithmically ! scaled. Note that for Polar graphs the angle units (t-min, t-max, t-step) obey the Rad/Deg/Grd setting. </p> --- 467,501 ---- <A NAME="SEC06"></A> ! <H2>06. Graphing (made available with 1.25g PPC)</H2> <H3>Entering/Plotting Graphs</H3> <p> ! Switch to Graph mode by tapping the 'G' at the top of the screen. </p> <p> ! Set up the functions to graph by tapping 'conf'. <br /> ! <IMG width="240" height="215" alt="Setup Graphs" src="images/SetupGraphs.png" border="1"> <br /> Tap the area to the RIGHT of 'Y1' and enter any valid expression in terms of 'x', such as 'x^2-4' - but WITHOUT any quotes.<br /> ! <i>[Not in PPC version -> <s>For each graph you can select the color and the line style ! (line/points/vertical).</s>]</i> ! Each graph can be turned on and off individually. ! <i>[Not in PPC version -> <s>The color of the axes, the grid and the graph background are also user ! selectable. You can also turn the axes, axes labels and the grid on and off.</s>]</i> </p> <p> ! Change Graph Preferences by tapping 'prefs'.<br /> ! <IMG width="240" height="264" alt="Graph Preferences 1" src="images/GraphPreferences-1.png"> ! <IMG width="240" height="262" alt="Graph Preferences 2" src="images/GraphPreferences-2.png"> ! <IMG width="240" height="263" alt="Graph Preferences 3" src="images/GraphPreferences-3.png"><br /> Here you can setup the display area (min and max bounds, grid interval) and type of graph (normal, polar, parametric). Either axis can be logarithmically ! scaled. Note that for Polar graphs the angle units (th-min, th-max, th-step) obey the Rad/Deg/Grd setting. </p> *************** *** 500,504 **** <tt>quad()="x(2)*x^2 + x(3)*x + x(4)"</tt><br /> In Graphing mode,<br /> ! Tap 'S' to Setup Graphs.<br /> Tap the area to the right of 'Y1'.<br /> Tap 'F' (user functions) and select quad().<br /> --- 511,515 ---- <tt>quad()="x(2)*x^2 + x(3)*x + x(4)"</tt><br /> In Graphing mode,<br /> ! Tap 'conf' to Setup Graphs.<br /> Tap the area to the right of 'Y1'.<br /> Tap 'F' (user functions) and select quad().<br /> *************** *** 514,518 **** 'z_grapara1()', etc., and can be used and modified in the non graphical modes.<br /> ! When entering an expression, the 'Rcl', 'F', and 'f' buttons are available and work the same as on the main screen.<br /> To remove a function, tap the 'Y1' button itself and select 'Delete' from --- 525,529 ---- 'z_grapara1()', etc., and can be used and modified in the non graphical modes.<br /> ! When entering an expression, the 'V', 'F', and 'f' buttons are available and work the same as on the main screen.<br /> To remove a function, tap the 'Y1' button itself and select 'Delete' from *************** *** 520,546 **** </p> ! <H3>Graph Speed/Resolution</H3> ! <p> ! <IMG width="160" height="160" alt="Graph speed" src="images/GraphSpeed.png"> <br /> - To trade graphing speed for resolution and accuracy, tap the 'Sp' button - to set the speed. Is speed 'n' is selected only every n-th point is plotted. - You can see this clearly if you select the points linestyle. - </p> ! <H3>Scroll</H3> <p> ! Tap and drag the graph to scroll around. </p> ! <H3>Zoom</H3> ! <p> ! '-' button - zoom out<br /> ! '+' button - zoom in. Tap '+' and then draw a zoom area on the graph. </p> ! <H3>Table Mode</H3> <p> ! (Menu-> Graph-> Table Mode) displays exact values of the parameter 'x' and values of all the functions simultaneously.<br /> <IMG width="160 "height="160" alt="Table Mode" --- 531,635 ---- </p> ! <H3>Graph</H3> ! <p>There is a graph zone and a smaller track view zone which highlights ! where is the graph view zone if it's in there. ! <IMG width="242" height="293" alt="Graph speed" src="images/GraphSpeed.png"> <br /> ! <H3>Select or scroll graph</H3> <p> ! On both zones, you can tap and drag the graph to scroll around, or select ! a point on, or a part of, the graph, depending on the mode. </p> + <p><b>Select mode:</b> This is the button with the select square. + </p> + <p><b>Move mode:</b> This is the button with a curve and vertical + horizontal arrows. + </p> + <p><b>Curve track mode:</b> This is the button with a curve and dashed lines. + The 'calc' key only works in this mode, when a point is selected, or a zone is selected. + When pressing the key, a popup asks for which curve to track on. + </p> + <p><b>Center mode:</b> This is the button with a rectngle and vertical + horizontal arrows. + </p> + <p>In each mode, tap or drag has the following effect: + </p> + <table border=1> + <tr> + <td width=162></td> + <td width=162><b>Graph zone</b></td> + <td width=162><b>Track zone</b></td> + <td width=162><b>Track sync'ed to graph ?</b></td> + </tr> + <tr> + <td><b>Select mode</b></td> + <td><u><i>drag</i></u> = update x,y + define zoom in (press '+' to zoom to it). Can be non square. + <br /><u><i>tap</i></u> = update x,y + </td> + <td><u><i>drag</i></u> = update x,y + define graph zone (press '+' to set graph to it). Can be non square. + <br /><u><i>tap</i></u> = update x,y + </td> + <td align=center>N + </td> + </tr> + <tr> + <td><b>Move mode</b></td> + <td><u><i>drag or tap</i></u> = update x,y + move graph zone. + </td> + <td><u><i>drag or tap</i></u> = update x,y + move track zone. + </td> + <td align=center>N + </td> + </tr> + <tr> + <td><b>Curve track mode</b></td> + <td><u><i>drag</i></u> = update x,y + define selected zone on curve. + <br /><u><i>tap</i></u> = update x,y + define selected point on curve. + </td> + <td><u><i>drag</i></u> = same. + <br /><u><i>tap</i></u> = same. + </td> + <td align=center>N + </td> + </tr> + <tr> + <td><b>Center mode</b></td> + <td><u><i>drag or tap</i></u> = Same as Move mode. + </td> + <td><u><i>drag or tap</i></u> = update x,y + move graph zone. + </td> + <td align=center>Y, centered on graph each time the graph is moved + </td> + </tr> + </table> ! <H3>Zoom, normed display, moving through graph</H3> ! <p>There is one set of zoom buttons for each of the graph zone or the track view zone. ! They function in the same way. However, the track view zone will always be normed, ! i.e. in "square" mode, or in other words, 1 vertical = 1 horizontal. So it will ! fit to the biggest border of the selected rectangle. ! A contrario, the graph zone will show all the defined selected zone in Select mode. ! Meaning that selecting a rectangle will result in a non normed display, where ! 1 vertical != 1 horizontal : the biggest rectangle border will be "shrinked" to ! fit with the display square to include everything.</br> ! Come back to a normed mode (square mode) by tapping on the square button. </p> + <ul> + <li>'-' button - zoom out by a 2x factor</li> + <li>'+' button - zoom in. In Select mode, select zone and tap '+' to zoom on it. + In other modes, or in select mode but with no selection, tap '+' and zoom by + a 2x factor on the graph center.</li> + <li>'square' button (only for graph zone) - restore a normed display. This will expand the [min, max] + range on the smallest axis to the same extent than the biggest one, keeping + the same center.</li> + <li>'0' button - Bring zone center back to origin (0, 0).</li> + <li>'->' button - Goto specified (x, y) = a dialog will appear to type X then Y. + Note that in Curve track mode, there will be no dialog asking for 'Y'. Instead, + Y will be calculated from the specified X using the selected curve.</li> + <li>Use up/down and left/right arrows to move the graph zone accordingly.</li> + </ul> ! <H3>Table Mode [Not in PPC version]</H3> <p> ! <s>(Menu-> Graph-> Table Mode) displays exact values of the parameter 'x' and values of all the functions simultaneously.<br /> <IMG width="160 "height="160" alt="Table Mode" *************** *** 551,588 **** Preferences. It can be changed on the Table Mode form by tapping the Step button. ! </p> ! <H3>Trace</H3> ! Tap the 'T' on the right, then select a function to trace ('Y1' etc.) ! then tap on the screen.<br /> ! For normal functions dragging the pen horizontally traverses the x range ! defined in Graph Preferences. For polar graphs the angle of the line between ! the pen position and the graph origin determines the value of the fi parameter. ! For parametric graphs dragging the pen horizontally varies the parameter t over the range defined in Graph Preferences.<br /> ! While tracing the current x and y values are displayed at the top of the ! graph. For polar graphs the current r and fi values and for parametric ! graphs the value of the parameter t are displayed at the ! bottom of the graph.<br /> ! <IMG width="160" height="160" alt="Tracing Polar Graph" src="images/TracePolar.png" border="1"><br /> - After selecting the function to trace, you can use up/down arrows or the - 'Go' button to jump directly to some value.<br /> - Tip: in Trace mode, you may just write a value without tapping 'Go' first. <H3>Numerical Analysis</H3> <p> EasyCalc can find a zero (root), value, local minimum and maximum of a ! function, first and second derivatives, integral, and intercept with another function:<br /> ! Tap the 'C' button.<br /> ! Select an operation.<br /> ! Select a function.<br /> ! You will be instructed to enter the left and right bounds (for zero, ! min, max, intercept), or the point to calculate at (for derivatives & ! integral). Tap OK to dismiss the instructions, then locate the point, ! and then tap 'C' again to confirm the entry.<br /> ! For intercept, you will now select a second function.<br /> ! <IMG height="160" width="160" alt="Graph Computing Result" src="images/GraphComputingResult.png" border="1"> </p> --- 640,680 ---- Preferences. It can be changed on the Table Mode form by tapping the Step button. ! </s></p> ! <H3>How to use the Curve track mode</H3> ! Tap on ! <IMG width="29" height="19" alt="Curve track button" ! src="images/CurvetrackButton.png"> ! then select a function to track or select on ('Y1' etc.).<br /> ! Tap on screen to show a cross, with vertical line = selected X, and ! horizontal line = calculated Y on the selected curve.<br/> ! Tap then drag to show a selected zone on the curve, from x0 to x.<br/> ! <br/> ! X and Y on the bottom left will show the last selected point.<br/> ! The two numbers on each side of '<->' on the bottom left will show ! the selected range: x0 to x in function mode, t0 to t in parameteric mode, ! and th0 to th in polar mode.<br/> ! <br/> ! In function mode, dragging the pen horizontally traverses the x range ! defined in Graph Preferences. In polar mode, dragging the pen horizontally ! traverses the th angle range defined in Graph Preferences. ! And in parametric mode, dragging the pen horizontally varies the parameter t over the range defined in Graph Preferences.<br /> ! <IMG width="241" height="268" alt="Tracing Polar Graph" src="images/TracePolar.png" border="1"><br /> <H3>Numerical Analysis</H3> <p> EasyCalc can find a zero (root), value, local minimum and maximum of a ! function, first and second derivatives, integral, and intersection with another function:<br /> ! Tap the 'calc' button in Curve track mode, after having selected a point or ! an area.<br /> ! Select an operation from the presented list:<br /> ! - zero, find value, min, max, intersection, integral require a zone selection,<br/> ! - derivatives require a point selection at least (or they will calculate on ! the maximum x of selected zone).<br/> ! Note: intersection will ask you to select a second function.<br /> ! <IMG height="268" width="242" alt="Graph Computing Result" src="images/GraphComputingResult.png" border="1"> </p> *************** *** 635,643 **** <br /> in any mode:<br /> ! <IMG height="122" width="242" alt="Trig DMS 1" src="images/Trig-DMS-1.png" border="1"> <IMG height="147" width="242" alt="Trig DMS 2" src="images/Trig-DMS-2.png" border="1"> ! <IMG height="123" width="242" alt="Trig DMS 3" src="images/Trig-DMS-3.png" border="1"><br /> M ->Degree - display as D°M'S<br /> --- 727,735 ---- <br /> in any mode:<br /> ! <IMG height="123" width="242" alt="Trig DMS 1" src="images/Trig-DMS-1.png" border="1"> <IMG height="147" width="242" alt="Trig DMS 2" src="images/Trig-DMS-2.png" border="1"> ! <IMG height="120" width="242" alt="Trig DMS 3" src="images/Trig-DMS-3.png" border="1"><br /> M ->Degree - display as D°M'S<br /> *************** *** 677,681 **** <p> Example(in Rad Mode):<br /> ! <IMG width="241" height="122" alt="Rtop Example" src="images/RtopExample.png" border="1"><br /> <tt>rtop(1:sqrt(3))<br /> --- 769,773 ---- <p> Example(in Rad Mode):<br /> ! <IMG width="242" height="121" alt="Rtop Example" src="images/RtopExample.png" border="1"><br /> <tt>rtop(1:sqrt(3))<br /> *************** *** 732,736 **** <p> Example:<br /> ! <IMG height="128" width="243" alt="Matrix 1" src="images/Matrix-1.png" border="1"> <IMG height="267" width="242" alt="Matrix 2" --- 824,828 ---- <p> Example:<br /> ! <IMG height="124" width="243" alt="Matrix 1" src="images/Matrix-1.png" border="1"> <IMG height="267" width="242" alt="Matrix 2" *************** *** 1059,1063 **** yy=0.7sin(2pi*5*tt)+sin(2pi*12*tt)+0.5rNorm(200)<br /> ans> list(..200..)<br /> ! yf=fft(yy)/200;<br /> ans> list(..256..)</tt> fft() rounds up to next power of 2<br /> <tt>ff=range(128:0:50/128)</tt> for a real signal the fft is symmetric around --- 1151,1155 ---- yy=0.7sin(2pi*5*tt)+sin(2pi*12*tt)+0.5rNorm(200)<br /> ans> list(..200..)<br /> ! yf=fft(yy)/200<br /> ans> list(..256..)</tt> fft() rounds up to next power of 2<br /> <tt>ff=range(128:0:50/128)</tt> for a real signal the fft is symmetric around *************** *** 1068,1083 **** <p>To plot the signal and the spectrum we use the parametric mode on the graph ! layout (only available after 1.25g). The parameter T is the list index.<br /> ! <IMG height="160" width="160" alt="Signal" src="images/FftSignal.png" border="1"> ! <IMG height="160" width="160" alt="Signal Preferences" src="images/FftPrefSignal.png" border="1"> ! <IMG height="160" width="160" alt="Signal Setup" src="images/FftSetupSignal.png" border="1"><br /> ! <IMG height="160" width="160" alt="Spectrum" src="images/FftSpectrum.png" border="1"> ! <IMG height="160" width="160" alt="Spectrum Preferences" src="images/FftPrefSpectrum.png" border="1"> ! <IMG height="160" width="160" alt="Spectrum Setup" src="images/FftSetupSpectrum.png" border="1"><br /> Note the peaks in the spectrum at 5 and 12 Hz. --- 1160,1175 ---- <p>To plot the signal and the spectrum we use the parametric mode on the graph ! layout (only available as of 1.25g PPC). The parameter T is the list index.<br /> ! <IMG height="293" width="242" alt="Signal" src="images/FftSignal.png" border="1"> ! <IMG height="292" width="239" alt="Signal Preferences" src="images/FftPrefSignal.png" border="1"> ! <IMG height="292" width="242" alt="Signal Setup" src="images/FftSetupSignal.png" border="1"><br /> ! <IMG height="294" width="242" alt="Spectrum" src="images/FftSpectrum.png" border="1"> ! <IMG height="292" width="241" alt="Spectrum Preferences" src="images/FftPrefSpectrum.png" border="1"> ! <IMG height="293" width="241" alt="Spectrum Setup" src="images/FftSetupSpectrum.png" border="1"><br /> Note the peaks in the spectrum at 5 and 12 Hz. *************** *** 1115,1121 **** 4x + 5y = 6</tt><br /> Store the system as an augmented matrix to 'matrix_a':<br /> ! <IMG height="151" width="242" alt="rref 1" src="images/Rref-1.png" border="1"> ! <IMG height="150" width="242" alt="rref 2" src="images/Rref-2.png" border="1"> <IMG height="151" width="240" alt="rref 3" --- 1207,1213 ---- 4x + 5y = 6</tt><br /> Store the system as an augmented matrix to 'matrix_a':<br /> ! <IMG height="125" width="243" alt="rref 1" src="images/Rref-1.png" border="1"> ! <IMG height="124" width="242" alt="rref 2" src="images/Rref-2.png" border="1"> <IMG height="151" width="240" alt="rref 3" *************** *** 1141,1150 **** Example:<br /> <tt>mat3_4=[[1:2:3:4]:[2:3:4:5]:[3:4:5:6]]<br /> ! <IMG height="152" width="242" alt="qrq 1" src="images/Qrq-1.png" border="1"> <IMG height="152" width="240" alt="qrq 2" src="images/Qrq-2.png" border="1"><br /> q=qrq(mat3_4)<br /> ! <IMG height="152" width="243" alt="qrr 1" src="images/Qrr-1.png" border="1"> <IMG height="152" width="240" alt="qrr 2" --- 1233,1242 ---- Example:<br /> <tt>mat3_4=[[1:2:3:4]:[2:3:4:5]:[3:4:5:6]]<br /> ! <IMG height="150" width="242" alt="qrq 1" src="images/Qrq-1.png" border="1"> <IMG height="152" width="240" alt="qrq 2" src="images/Qrq-2.png" border="1"><br /> q=qrq(mat3_4)<br /> ! <IMG height="151" width="242" alt="qrr 1" src="images/Qrr-1.png" border="1"> <IMG height="152" width="240" alt="qrr 2" *************** *** 1153,1157 **** src="images/Qrr-3.png" border="1"><br /> r=qrr(mat3_4)<br /> ! <IMG height="152" width="242" alt="qrq*qrr 1" src="images/Qrqqrr-1.png" border="1"> <IMG height="152" width="240" alt="qrq*qrr 2" --- 1245,1249 ---- src="images/Qrr-3.png" border="1"><br /> r=qrr(mat3_4)<br /> ! <IMG height="148" width="242" alt="qrq*qrr 1" src="images/Qrqqrr-1.png" border="1"> <IMG height="152" width="240" alt="qrq*qrr 2" *************** *** 1287,1295 **** complex part). When a complex number is stored in 'ans', the 'M' menu offers to convert to '->e^(ix)' or '->c()+isin()' format:<br /> ! <IMG height="152" width="242" alt="Complex 1" src="images/Complex-1.png" border="1"> ! <IMG height="152" width="242" alt="Complex 2" src="images/Complex-2.png" border="1"> ! <IMG height="152" width="241" alt="Complex 3" src="images/Complex-3.png" border="1"><br /> <tt>1+j<br /> --- 1379,1387 ---- complex part). When a complex number is stored in 'ans', the 'M' menu offers to convert to '->e^(ix)' or '->c()+isin()' format:<br /> ! <IMG height="187" width="244" alt="Complex 1" src="images/Complex-1.png" border="1"> ! <IMG height="187" width="242" alt="Complex 2" src="images/Complex-2.png" border="1"> ! <IMG height="187" width="241" alt="Complex 3" src="images/Complex-3.png" border="1"><br /> <tt>1+j<br /> *************** *** 1517,1521 **** <tt>quad()="x(2)*x^2+x(3)*x+x(4)"<br /> a=2;b=3;c=-2<br /> ! <IMG height="149" width="242" alt="fzero" src="images/F-zero.png" border="1"><br/> fzero(-100:100:quad():1E-8:a:b:c)<br /> --- 1609,1613 ---- <tt>quad()="x(2)*x^2+x(3)*x+x(4)"<br /> a=2;b=3;c=-2<br /> ! <IMG height="146" width="242" alt="fzero" src="images/F-zero.png" border="1"><br/> fzero(-100:100:quad():1E-8:a:b:c)<br /> *************** *** 1549,1553 **** <tt>fd_dx(3:"x^3+2x^2-x-2")<br /> ans> 38<br /> ! <IMG height="152" width="242" alt="fd2-dx" src="images/F-d2dx.png" border="1"><br/> fd2_dx(3:"x^3+2x^2-x-2":1E-6)<br /> --- 1641,1645 ---- <tt>fd_dx(3:"x^3+2x^2-x-2")<br /> ans> 38<br /> ! <IMG height="142" width="242" alt="fd2-dx" src="images/F-d2dx.png" border="1"><br/> fd2_dx(3:"x^3+2x^2-x-2":1E-6)<br /> *************** *** 1578,1582 **** <tt>fromberg(0:pi:"sin(x)")<br /> ans> 2<br /> ! <IMG height="152" width="242" alt="fromberg" src="images/F-romberg.png" border="1"><br/> fromberg(0:pi:"sin(x)":3)<br /> --- 1670,1674 ---- <tt>fromberg(0:pi:"sin(x)")<br /> ans> 2<br /> ! <IMG height="150" width="242" alt="fromberg" src="images/F-romberg.png" border="1"><br/> fromberg(0:pi:"sin(x)":3)<br /> |
From: Mapi B. <ma...@us...> - 2011-02-28 22:08:18
|
Update of /cvsroot/easycalc/PPCport/discarded In directory vz-cvs-4.sog:/tmp/cvs-serv3683 Added Files: graph.rcp.in grcalc.cpp grcalc.h grtaps.c grtaps.h Log Message: 1.25g --- NEW FILE: graph.rcp.in --- // // $Id: graph.rcp.in,v 1.1 2011/02/28 22:08:16 mapibid Exp $ // #ifdef SUPPORT_DIA //Dana AlphaSmart support HEX "wTap" ID 1000 0x00 0x00 0x00 0x01 #endif FORM ID frmGrcSel AT (2 50 156 108) MODAL DEFAULTBTNID btnGrcSelCancel BEGIN TITLE "$$SELECT A FUNCTION" BUTTON "$$OK" ID btnGrcSelOK AT (5 92 40 12) BUTTON "$$CANCEL" ID btnGrcSelCancel AT (PREVRIGHT+5 PREVTOP AUTO 12) LIST "" ID lstGrcSel AT (50 15 50 60) VISIBLEITEMS 6 END FORM ID grTableForm AT (2 2 156 156) MODAL BEGIN TITLE "$$TABLE MODE" BUTTON "<" ID grTableLeft AT (52 140 12 12) BUTTON ">" ID grTableRight AT (PREVRIGHT+4 PREVTOP 12 12) BUTTON "$$STEP" ID grTableStep AT (PREVRIGHT+6 PREVTOP 30 12) BUTTON "$$GOTO" ID grTableGoto AT (PREVRIGHT+6 PREVTOP 30 12) TABLE ID grTableTable AT (5 15 150 110) ROWS 10 COLUMNS 3 COLUMNWIDTHS 50 50 50 BUTTON "$$DONE" ID grTableDone AT (5 140 40 12) END FORM ID grSetupForm AT (2 43-11 156 115+11) MODAL HELPID hlpGrSetup BEGIN TITLE "$$SETUP GRAPHS" BUTTON " " ID grAxes AT (5 17 6 6) RECTFRAME NONUSABLE CHECKBOX "Axes" ID ckbGrAxes AT (12 14 AUTO AUTO) CHECKBOX "Axes labels" ID ckbGrAxesLabels AT (12 25 AUTO AUTO) BUTTON " " ID grGrid AT (90 17 6 6) RECTFRAME NONUSABLE CHECKBOX "Grid" ID ckbGrGrid AT (97 14 AUTO AUTO) BUTTON " " ID grBgnd AT (90 28 6 6) RECTFRAME NONUSABLE LABEL "Bgnd" ID grBgndLbl AT (104 25) NONUSABLE BUTTON " " ID grColor1 AT (5 32+11 6 6) RECTFRAME NONUSABLE BUTTON " " ID grColor2 AT (5 43+11 6 6) RECTFRAME NONUSABLE BUTTON " " ID grColor3 AT (5 54+11 6 6) RECTFRAME NONUSABLE BUTTON " " ID grColor4 AT (5 65+11 6 6) RECTFRAME NONUSABLE BUTTON " " ID grColor5 AT (5 76+11 6 6) RECTFRAME NONUSABLE BUTTON " " ID grColor6 AT (5 87+11 6 6) RECTFRAME NONUSABLE CHECKBOX "" ID ckbGrfun1 AT (12 29+11 AUTO AUTO) CHECKBOX "" ID ckbGrfun2 AT (12 40+11 AUTO AUTO) NONUSABLE CHECKBOX "" ID ckbGrfun3 AT (12 51+11 AUTO AUTO) CHECKBOX "" ID ckbGrfun4 AT (12 62+11 AUTO AUTO) NONUSABLE CHECKBOX "" ID ckbGrfun5 AT (12 73+11 AUTO AUTO) CHECKBOX "" ID ckbGrfun6 AT (12 84+11 AUTO AUTO) NONUSABLE TABLE ID grSetupTable AT (25 29+11 112 67) ROWS 6 COLUMNS 2 COLUMNWIDTHS 16 94 BUTTON " " ID grType1 AT (139 31+11 13 7) NOFRAME BUTTON " " ID grType2 AT (139 42+11 13 7) NOFRAME NONUSABLE BUTTON " " ID grType3 AT (139 53+11 13 7) NOFRAME BUTTON " " ID grType4 AT (139 64+11 13 7) NOFRAME NONUSABLE BUTTON " " ID grType5 AT (139 75+11 13 7) NOFRAME BUTTON " " ID grType6 AT (139 86+11 13 7) NOFRAME NONUSABLE BUTTON "$$DONE" ID grSetupDone AT (5 100+11 40 12) BUTTON "\001" ID grSetupUp AT (140 98+11 12 8) FONT 5 NONUSABLE NOFRAME BUTTON "\002" ID grSetupDown AT (140 106+11 12 8) FONT 5 NONUSABLE NOFRAME LIST "" ID grSetupList AT (1 1 62 10) VISIBLEITEMS 10 NONUSABLE DISABLED POPUPLIST ID grSetupPopup grSetupList END FORM ID grPrefForm AT (2 2 156 156) MODAL MENUID sysEditMenuID HELPID hlpGrPref BEGIN TITLE "$$GRAPH PREFERENCES" BUTTON "$$OK" ID prefOK AT (5 140 40 12) BUTTON "$$CANCEL" ID prefCancel AT (PREVRIGHT+5 PREVTOP AUTO 12) LABEL "xmin:" AUTOID AT (3 14) FIELD ID grPrefXmin AT (33 PREVTOP 57 12) EDITABLE UNDERLINED SINGLELINE MAXCHARS 20 USABLE LABEL "xmax:" AUTOID AT (3 PREVTOP+14) FIELD ID grPrefXmax AT (33 PREVTOP 57 12) EDITABLE UNDERLINED SINGLELINE MAXCHARS 20 USABLE LABEL "xscale:" AUTOID AT (3 PREVTOP+14) FIELD ID grPrefXscale AT (33 PREVTOP 57 12) EDITABLE UNDERLINED SINGLELINE MAXCHARS 20 USABLE LABEL "ymin:" AUTOID AT (3 PREVTOP+14) FIELD ID grPrefYmin AT (33 PREVTOP 57 12) EDITABLE UNDERLINED SINGLELINE MAXCHARS 20 USABLE LABEL "ymax:" AUTOID AT (3 PREVTOP+14) FIELD ID grPrefYmax AT (33 PREVTOP 57 12) EDITABLE UNDERLINED SINGLELINE MAXCHARS 20 USABLE LABEL "yscale:" AUTOID AT (3 PREVTOP+14) FIELD ID grPrefYscale AT (33 PREVTOP 57 12) EDITABLE UNDERLINED SINGLELINE MAXCHARS 20 USABLE LABEL " " grPrefLabel1 AT (3 PREVTOP+14) NONUSABLE FIELD ID grPrefField1 AT (33 PREVTOP 57 12) EDITABLE UNDERLINED SINGLELINE MAXCHARS 20 NONUSABLE LABEL "Rad" grPrefLabel1u AT (PREVRIGHT PREVTOP) NONUSABLE LABEL " " grPrefLabel2 AT (3 PREVTOP+14) NONUSABLE FIELD ID grPrefField2 AT (33 PREVTOP 57 12) EDITABLE UNDERLINED SINGLELINE MAXCHARS 20 NONUSABLE LABEL "Rad" grPrefLabel2u AT (PREVRIGHT PREVTOP) NONUSABLE LABEL " " grPrefLabel3 AT (3 PREVTOP+14) NONUSABLE FIELD ID grPrefField3 AT (33 PREVTOP 57 12) EDITABLE UNDERLINED SINGLELINE MAXCHARS 20 NONUSABLE LABEL "Rad" grPrefLabel3u AT (PREVRIGHT PREVTOP) NONUSABLE BUTTON "$$DEFAULT" ID grPrefDefault AT (100 20 50 12) BUTTON "$$TRIGONO" ID grPrefTrig AT (100 35 50 12) PUSHBUTTON "$$FUNCMODE" ID grPrefFunc AT (100 55 54 12) GROUP 1 PUSHBUTTON "$$POLARMODE" ID grPrefPol AT (PREVLEFT PREVBOTTOM+1 PREVWIDTH 12) GROUP 1 PUSHBUTTON "$$PARAMMODE" ID grPrefPar AT (PREVLEFT PREVBOTTOM+1 PREVWIDTH 12) GROUP 1 CHECKBOX "Log X" ckbGrPrefLogX AT (PREVLEFT+13 PREVBOTTOM+16 AUTO AUTO) CHECKBOX "Log Y" ckbGrPrefLogY AT (PREVLEFT PREVBOTTOM AUTO AUTO) GRAFFITISTATEINDICATOR AT (143 PREVBOTTOM+2) END STRINGTABLE grColorElem "Pick color for " "fun1" "fun2" "fun3" "fun4" "fun5" "fun6" "$$AXIS" "$$GRID" "$$BACKGRND" FORM ID frmGraph AT (0 0 160 160) MENUID graphMenu BEGIN TITLE "$$GRAPH" BUTTON " " ID btnPrefMode AT (56 1 17 12) RECTFRAME SELECTORTRIGGER "P" ID btnGraphPref AT (PREVRIGHT+11 1 10 11) SELECTORTRIGGER "S" ID btnGraphSetup AT (PREVRIGHT+1 1 10 11) PUSHBUTTON "B" ID btnBasic AT (116 1 10 12) GROUP 1 PUSHBUTTON "S" ID btnScientific AT (PREVRIGHT+1 1 10 12) GROUP 1 PUSHBUTTON "I" ID btnInteger AT (PREVRIGHT+1 1 10 12) GROUP 1 PUSHBUTTON "G" ID btnGraph AT (PREVRIGHT+1 1 10 12) GROUP 1 GADGET ID graphGadget AT (1 17 140 140) SELECTORTRIGGER "C " ID btnGraphCalc AT (147 22 10 12) LIST "$$GRZERO" "$$GRVALUE" "$$GRMIN" "$$GRMAX" "$$GRDDX" "d2/dx" "$$GRINTEG" "$$GRINTERSECT" ID lstGraphCalcFunc AT (100 22 55 50) NONUSABLE DISABLED VISIBLEITEMS 8 POPUPLIST AUTOID lstGraphCalcFunc LIST "dy/dx" "dy/dt" "dx/dt" ID lstGraphCalcParam AT (PREVLEFT PREVTOP PREVWIDTH PREVHEIGHT) NONUSABLE DISABLED VISIBLEITEMS 3 POPUPLIST AUTOID lstGraphCalcParam LIST "dr/dfi" ID lstGraphCalcPolar AT (PREVLEFT PREVTOP PREVWIDTH PREVHEIGHT) NONUSABLE DISABLED VISIBLEITEMS 1 POPUPLIST AUTOID lstGraphCalcPolar PUSHBUTTON "T" ID btnGraphTrack AT (147 50 10 12) LIST "" ID graphTrackList AT (120 50 30 50) NONUSABLE DISABLED VISIBLEITEMS 3 POPUPLIST ID graphTrackPopup graphTrackList BUTTON "$$GO" ID btnGraphTrackGoto AT (145 65 14 12) NONUSABLE PUSHBUTTON "+" ID btnGraphZoomIn AT (147 90 10 12) BUTTON "-" ID btnGraphZoomOut AT (147 105 10 12) SELECTORTRIGGER "Sp" ID btnGraphSpeed AT (145 120 14 12) LIST "1x" "2x" "4x" "7x" lstGraphSpeed AT (140 100 15 44) VISIBLEITEMS 4 NONUSABLE DISABLED //BUTTON "" ID btnGraphColor AT (148 146 8 8) NOFRAME NONUSABLE END #ifdef SUPPORT_DIA WORDLIST ID frmGraph BEGIN DIA_FORM_USE_BIN // formFlags 0 // bin DIA_STATE_MAX // preferred state // Object data 0 DIA_H_PLUS_DH+DIA_W_PLUS_DW 0 // the form itself btnBasic DIA_X_RIGHT 0 btnScientific DIA_X_RIGHT 0 btnInteger DIA_X_RIGHT 0 btnGraph DIA_X_RIGHT 0 graphGadget DIA_H_PLUS_DH+DIA_W_PLUS_DW 0 btnGraphZoomIn DIA_X_RIGHT+DIA_Y_PLUS_1_2_DH 0 btnGraphZoomOut DIA_X_RIGHT+DIA_Y_PLUS_1_2_DH 0 btnPrefMode DIA_X_PLUS_1_2_DW 0 btnGraphPref DIA_X_PLUS_3_4_DW 0 btnGraphSetup DIA_X_PLUS_3_4_DW 0 btnGraphTrack DIA_X_RIGHT+DIA_Y_PLUS_1_2_DH 0 btnGraphTrackGoto DIA_X_RIGHT+DIA_Y_PLUS_1_2_DH 0 graphTrackList DIA_X_RIGHT+DIA_Y_PLUS_1_2_DH 0 // graphTrackPopup DIA_X_RIGHT+DIA_Y_PLUS_1_2_DH 0 btnGraphCalc DIA_X_RIGHT+DIA_Y_PLUS_1_2_DH 0 lstGraphCalcFunc DIA_X_RIGHT+DIA_Y_PLUS_1_2_DH 0 lstGraphCalcParam DIA_X_RIGHT+DIA_Y_PLUS_1_2_DH 0 lstGraphCalcPolar DIA_X_RIGHT+DIA_Y_PLUS_1_2_DH 0 btnGraphSpeed DIA_X_RIGHT+DIA_Y_PLUS_1_2_DH 0 lstGraphSpeed DIA_X_RIGHT+DIA_Y_PLUS_1_2_DH 0 // btnGraphColor DIA_X_RIGHT+DIA_Y_PLUS_1_2_DH 0 END #endif MENU ID graphMenu BEGIN PULLDOWN "$$LAYOUT" BEGIN MENUITEM "$$BASIC" btnBasic "B" MENUITEM "$$SCIENTIFIC" btnScientific "S" MENUITEM "$$INTEGER" btnInteger "I" MENUITEM "$$GRAPH" btnGraph "G" MENUITEM SEPARATOR MENUITEM "$$PREFERENCES..." tdBPref "R" END PULLDOWN "$$GRAPH" BEGIN MENUITEM "$$PREFERENCES..." btnGraphPref MENUITEM "$$SETUP GRAPHS..." btnGraphSetup MENUITEM "$$TABLE MODE..." btnGraphTable "T" END PULLDOWN "$$INFO" BEGIN MENUITEM "$$ABOUT..." mitAbout "A" MENUITEM "$$HELP" hlpMain2 "H" END END ALERT altGraphBadVal ERROR BEGIN TITLE "$$ERROR" MESSAGE "$$BAD VALUES" BUTTONS "$$OK" END ALERT altGrcSelectLeft INFORMATION DEFAULTBUTTON 1 BEGIN TITLE "$$GRAPH COMPUTING" MESSAGE "$$LEFTBOUND" BUTTONS "$$OK" "$$CANCEL" END ALERT altGrcSelectRight INFORMATION DEFAULTBUTTON 1 BEGIN TITLE "$$GRAPH COMPUTING" MESSAGE "$$RIGHTBOUND" BUTTONS "$$OK" "$$CANCEL" END ALERT altGrcSelectValue INFORMATION DEFAULTBUTTON 1 BEGIN TITLE "$$GRAPH COMPUTING" MESSAGE "$$POINTONGRAPH" BUTTONS "$$OK" "$$CANCEL" END ALERT altComputeResult INFORMATION BEGIN TITLE "$$GRAPH COMPUTING RESULT" MESSAGE "$$COMPRESULT" BUTTONS "$$OK" END ALERT altComputeCofirm WARNING DEFAULTBUTTON 1 BEGIN TITLE "$$COMPUTING" MESSAGE "$$COMPCONFIRM" BUTTONS "$$OK" "$$CANCEL" END ALERT altGrcBoundsErr ERROR BEGIN TITLE "$$ERROR" MESSAGE "$$GRCBOUNDERR" BUTTONS "$$OK" END ALERT altGrcFuncErr ERROR BEGIN TITLE "$$ERROR" MESSAGE "$$GRCFUNCERR" BUTTONS "$$OK" END STRING hlpGrPref "$$GRPREF HELP" STRING hlpGrSetup "$$GRSETUP HELP" STRINGTABLE strGrcDescription "" "$$GRZERO" "$$GRVALUE" "$$GRMIN" "$$GRMAX" "$$GRDDX" "d2/dx" "$$GRINTEG" "$$GRINTERSECT" "dy/dx" "dy/dt" "dx/dt" "dr/dfi" --- NEW FILE: grcalc.cpp --- /* * $Id: grcalc.cpp,v 1.1 2011/02/28 22:08:16 mapibid Exp $ * * Scientific Calculator for Palms. * Copyright (C) 2001 Ondrej Palkovsky * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * * You can contact me at 'on...@pe...'. */ #include "stdafx.h" #include "compat/PalmOS.h" //#include "calcrsc.h" #include "compat/segment.h" #include "core/mlib/konvert.h" #include "core/calc.h" #include "core/mlib/funcs.h" #include "core/mlib/integ.h" #include "core/varmgr.h" #include "core/mlib/mathem.h" #include "core/mlib/display.h" #include "compat/MathLib.h" #include "core/mlib/stack.h" #include "core/grcalc.h" //#include "core/graph.h" #include "core/grsetup.h" #include "core/grprefs.h" //#include "grtaps.h" #ifdef HANDERA_SDK #include "Vga.h" #endif static enum { cl_none, cl_min, cl_max, cl_value }grState; static enum { cp_zero = 0, cp_value, cp_min, cp_max, cp_dydx1, cp_dydx2, cp_integ, cp_intersect, cp_pdydx, cp_pdydt, cp_pdxdt, cp_odrdfi }grFuncType; static const Int16 grcFunc[] = {cp_zero,cp_value,cp_min,cp_max, cp_dydx1,cp_dydx2,cp_integ,cp_intersect}; static const Int16 grcParam[] = {cp_pdydx,cp_pdydt,cp_pdxdt}; static const Int16 grcPolar[] = {cp_odrdfi}; static Int16 grSelFunction,grSelFunction2; static double grFuncMin; static double grFuncMax; static double grFuncValue; /*********************************************************************** * * FUNCTION: grcalc_select_funcname * * DESCRIPTION: Present to user list of functions and let him select * * PARAMETERS: Nothing * * RETURN: -1 - error, user pressed cancel or no function on graph * 0-MAX_GRFUNCS - index to graphCurves table * ***********************************************************************/ static Int16 grcalc_select_funcname(void) GRAPH; static Int16 grcalc_select_funcname(void) { FormPtr frm; ListPtr list; Int16 button; char *descr[MAX_GRFUNCS]; Int16 nums[MAX_GRFUNCS]; Int16 count,i; count = grsetup_fn_descr_arr(descr,nums); if (count == 0) return -1; frm = FrmInitForm(frmGrcSel); #ifdef HANDERA_SDK if (handera) VgaFormModify(frm, vgaFormModify160To240); #endif list = FrmGetObjectPtr(frm,FrmGetObjectIndex(frm,lstGrcSel)); LstSetListChoices(list,descr,count); button = FrmDoDialog(frm); i = LstGetSelection(list); FrmDeleteForm(frm); if (button == btnGrcSelCancel) return -1; if (i == noListSelection) return -1; return nums[i]; } /*********************************************************************** * * FUNCTION: grcalc_select_func * * DESCRIPTION: The initial step when the user presses the 'C' button * and the function type 'Func' is displayed * * PARAMETERS: Nothing * * RETURN: true - user selected everything ok * false - action cancelled * ***********************************************************************/ static Boolean grcalc_select(void) GRAPH; static Boolean grcalc_select(void) { Int16 i; Int16 list; const Int16 *ccs; if (graphPrefs.functype == graph_func) { list = lstGraphCalcFunc; ccs = grcFunc; } else if (graphPrefs.functype == graph_polar) { list = lstGraphCalcPolar; ccs = grcPolar; } else { list = lstGraphCalcParam; ccs = grcParam; } i = LstPopupList(GetObjectPtr(list)); if (i == noListSelection) return false; grFuncType = ccs[i]; if (CtlGetValue(GetObjectPtr(btnGraphTrack))) grSelFunction=grtaps_trackSelected(); else{ grSelFunction = grcalc_select_funcname(); if (grSelFunction == -1) return false; grtaps_track_track(grSelFunction); } switch (grFuncType) { case cp_value: if (!varmgr_get_double(&grFuncValue,"Value of Function")) return false; case cp_integ: case cp_zero: case cp_min: case cp_max: case cp_intersect: if (FrmAlert(altGrcSelectLeft) == 1) return false; grState = cl_min; break; case cp_dydx1: case cp_dydx2: case cp_pdydx: case cp_pdydt: case cp_pdxdt: case cp_odrdfi: if (FrmAlert(altGrcSelectValue) == 1) return false; grState = cl_value; break; } return true; } /*********************************************************************** * * FUNCTION: grcalc_calculate * * DESCRIPTION: This function is called when all necessary * data is fetched from the user and calculates * and displays result to the user. * * PARAMETERS: Nothing * * RETURN: Nothing * ***********************************************************************/ static void grcalc_calculate(void) GRAPH; static void grcalc_calculate(void) { double result; CodeStack *fcstack,*fcstack2; char *text,acdescr[MAX_RSCLEN]; if (grState != cl_value && grFuncMin == grFuncMax) { FrmAlert(altGrcBoundsErr); return; } if (grState != cl_value && grFuncMin > grFuncMax) { result = grFuncMin; grFuncMin = grFuncMax; grFuncMax = result; } if (grFuncType == cp_intersect) { grSelFunction2 = grcalc_select_funcname(); if (grSelFunction2 == -1) return; if (grSelFunction == grSelFunction2) { FrmAlert(altGrcFuncErr); return; } } /* I wonder if I should display it at all */ if (grFuncType == cp_zero || grFuncType == cp_min || grFuncType == cp_max || grFuncType == cp_value) if (FrmAlert(altComputeCofirm) == 1) return; /* User cancelled operation */ fcstack = graphCurves[grSelFunction].stack1; if (grFuncType == cp_intersect) fcstack2 = graphCurves[grSelFunction2].stack1; else fcstack2 = graphCurves[grSelFunction].stack2; switch (grFuncType) { case cp_intersect: result = integ_intersect(grFuncMin,grFuncMax,fcstack, fcstack2,DEFAULT_ERROR,NULL); break; case cp_zero: result = integ_zero(grFuncMin,grFuncMax,0.0,fcstack, DEFAULT_ERROR,MATH_FZERO,NULL); break; case cp_min: result = integ_zero(grFuncMin,grFuncMax,0.0,fcstack, DEFAULT_ERROR,MATH_FMIN,NULL); break; case cp_max: result = integ_zero(grFuncMin,grFuncMax,0.0,fcstack, DEFAULT_ERROR,MATH_FMAX,NULL); break; case cp_integ: result = integ_romberg(grFuncMin,grFuncMax,fcstack, DEFAULT_ROMBERG,NULL); // result = integ_simps(grFuncMin,grFuncMax,fcstack, // DEFAULT_ERROR); break; case cp_value: result = integ_zero(grFuncMin,grFuncMax,grFuncValue,fcstack, DEFAULT_ERROR,MATH_FVALUE,NULL); break; case cp_dydx2: result = integ_derive2(grFuncValue,fcstack,DEFAULT_ERROR,NULL); break; case cp_dydx1: case cp_pdxdt: case cp_odrdfi: result = integ_derive1(grFuncValue,fcstack,DEFAULT_ERROR,NULL); break; case cp_pdydx: result = integ_derive1(grFuncValue,fcstack2,DEFAULT_ERROR,NULL); result /= integ_derive1(grFuncValue,fcstack,DEFAULT_ERROR,NULL); break; case cp_pdydt: result = integ_derive1(grFuncValue,fcstack2,DEFAULT_ERROR,NULL); break; default: result = NaN; break; } if (finite(result)) { /* The default error is lower, but this may display better values */ /* Save the result as 'graphres' variable */ db_save_real("graphres", result); /* Round the result with respect to computing error */ result /= 1E-5; result = round(result) * 1E-5; /* Set the cross to result where applicable */ switch (grFuncType) { case cp_intersect: case cp_zero: case cp_min: case cp_max: case cp_value: grtaps_track_manual(result, track_set); break; } text = display_real(result); /* Fetch description of a function */ SysStringByIndex(strGrcDescription, grFuncType, acdescr, MAX_RSCLEN - 1); FrmCustomAlert(altComputeResult, acdescr, text, NULL); MemPtrFree(text); } else FrmAlert(altCompute); } /*********************************************************************** * * FUNCTION: grcalc_init * * DESCRIPTION: Initialize/reset this module * * PARAMETERS: Nothing * * RETURN: Nothing * ***********************************************************************/ void grcalc_init(void) { grState = cl_none; } /*********************************************************************** * * FUNCTION: grcalc_control * * DESCRIPTION: This things gets called when the 'C' button on the graph * screen is pressed. * * PARAMETERS: Nothing * * RETURN: true - this module waits for some more input * false - this module is inactive * ***********************************************************************/ Boolean grcalc_control(void) { switch (grState) { case cl_none: grcalc_select(); break; case cl_min: grFuncMin = grtaps_track_last_value(); if (FrmAlert(altGrcSelectRight) == 0) grState = cl_max; else { grState = cl_none; //grtaps_track_pause(); } break; case cl_max: grFuncMax = grtaps_track_last_value(); grcalc_calculate(); grState = cl_none; //grtaps_track_pause(); break; case cl_value: grFuncValue = grtaps_track_last_value(); grcalc_calculate(); grState = cl_none; //grtaps_track_pause(); break; } return grState != cl_none; } --- NEW FILE: grtaps.c --- /* * $Id: grtaps.c,v 1.1 2011/02/28 22:08:16 mapibid Exp $ * * Scientific Calculator for Palms. * Copyright (C) 1999,2000,2001 Ondrej Palkovsky * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * * You can contact me at 'on...@pe...'. */ #include <PalmOS.h> #ifdef SONY_SDK #include <SonyCLIE.h> #endif #ifdef SUPPORT_DIA #include "DIA.h" #else #define HanderaCoord( x ) ( x ) #define HanderaAdjustFont( font ) ( font ) #endif #include "clie.h" #include "MathLib.h" #include "grtaps.h" #include "calcrsc.h" #include "grprefs.h" #include "graph.h" #include "calc.h" #include "mathem.h" #include "display.h" #include "fp.h" #include "grsetup.h" #include "funcs.h" #define BOLDRES 1 static Int16 trackSelected = 0; static double lastParam = 0.0; static Coord crossX = -1, crossY = -1; static double oldr = NaN; static double oldangle = NaN; static double oldparam = NaN; static double oldrealx = NaN; static double oldrealy = NaN; //static const TdispPrefs grNumPrefs = { 5, true, disp_normal, disp_decimal, false, false}; /*********************************************************************** * * FUNCTION: EvtGetPenNat * * DESCRIPTION: As EvtGetPen, but returns native screen coordinates. * * PARAMETERS: Same as EvtGetPen(). * * RETURN: Nothing. * ***********************************************************************/ static void EvtGetPenNat(Coord *x, Coord *y, Boolean *penDown) { EvtGetPen(x, y, penDown); if (gHrMode == hrPalm) { UInt16 save = WinSetCoordinateSystem(kCoordinatesNative); *x = WinScaleCoord(*x, true); *y = WinScaleCoord(*y, true); WinSetCoordinateSystem(save); } else { *x *= gSonyFactor; *y *= gSonyFactor; } } /*********************************************************************** * * FUNCTION: grtaps_rectangle * * DESCRIPTION: Draws a rectangle for use with 'Zoom in' operation * * PARAMETERS: corners of the rectangle * * RETURN: Nothing * ***********************************************************************/ static void grtaps_rectangle(Int16 x1,Int16 y1,Int16 x2,Int16 y2) GRAPH; static void grtaps_rectangle(Int16 x1,Int16 y1,Int16 x2,Int16 y2) { if (x1<0 || x2<0 || y1<0 || y2<0) return; clie_invertline(x1,y1,x2,y1); clie_invertline(x1,y2,x2,y2); clie_invertline(x1,y1,x1,y2); clie_invertline(x2,y1,x2,y2); clie_invertline(x1,y1,x2,y2); clie_invertline(x2,y1,x1,y2); } /*********************************************************************** * * FUNCTION: grtaps_clear_edges * * DESCRIPTION: Used when moving screen, clears the edges, that should * be left empty, when the contents of the screen is moved * * PARAMETERS: bounds - bounds of draw area * mx,my - coordinates, where the contents is moved * * RETURN: Nothing * ***********************************************************************/ static void grtaps_clear_edges(Coord mx,Coord my,RectangleType *bounds) GRAPH; static void grtaps_clear_edges(Coord mx,Coord my,RectangleType *bounds) { RectangleType tmp,tmp2; tmp = *bounds; tmp.topLeft.x+=mx; tmp.topLeft.y+=my; clie_cliprectangle(&tmp); tmp2 = *bounds; tmp2.extent.x = tmp.topLeft.x - bounds->topLeft.x; clie_eraserectangle(&tmp2,0); tmp2 = *bounds; tmp2.extent.y = tmp.topLeft.y - bounds->topLeft.y; clie_eraserectangle(&tmp2,0); tmp2 = *bounds; tmp2.topLeft.x = tmp.topLeft.x+tmp.extent.x; clie_eraserectangle(&tmp2,0); tmp2 = *bounds; tmp2.topLeft.y = tmp.topLeft.y+tmp.extent.y; clie_eraserectangle(&tmp2,0); } /*********************************************************************** * * FUNCTION: grtaps_move * * DESCRIPTION: Started to fetch pen moves and move the drawing screen * contents accordingly * * PARAMETERS: begx,begy - the original user tap * bounds - bounds of the drawing area * * RETURN: true/false - if the user ended within the bounds * and the screen should be moved * ***********************************************************************/ static Boolean grtaps_move(Coord begx,Coord begy,RectangleType *bounds) GRAPH; static Boolean grtaps_move(Coord begx,Coord begy,RectangleType *bounds) { Boolean penDown,moved; Coord x,y,dx,dy; Coord oldx=begx,oldy=begy; WinHandle orgwindow; UInt16 err; RectangleType orgbounds,rs; double xmin,ymin; orgwindow = clie_createoffscreenwindow(bounds->extent.x,bounds->extent.y, nativeFormat,&err); /* Note: orgwindow may be NULL if there is insufficient memory for the offscreen window. Then we need to copy inside the screen window */ if (orgwindow) clie_copyrectangle(NULL,orgwindow,bounds,0,0,winPaint); clie_getclip(&rs); clie_setclip(bounds); orgbounds = *bounds; if (orgwindow) orgbounds.topLeft.x = orgbounds.topLeft.y = 0; graph_setcolor(-1); do { EvtGetPenNat(&x, &y, &penDown); if ((oldx!=x || oldy!=y) && RctPtInRectangle(x,y,bounds)) { dx = (orgwindow ? x-begx : x-oldx); dy = (orgwindow ? y-begy : y-oldy); clie_copyrectangle(orgwindow,NULL,&orgbounds, bounds->topLeft.x + dx, bounds->topLeft.y + dy,winPaint); grtaps_clear_edges(dx,dy,bounds); oldx=x;oldy=y; } } while(penDown); graph_unsetcolor(); xmin = graph_xscr2gr((bounds->topLeft.x)-(x-begx)); ymin = graph_yscr2gr((bounds->topLeft.y+bounds->extent.y-1)-(y-begy)); if (!RctPtInRectangle(x,y,bounds) || (graphPrefs.logx && xmin <= 0.0) || (graphPrefs.logy && ymin <= 0.0)) { /* Restore original plot from offscreen window if possible, otherwise force a redraw by setting moved to true */ if (orgwindow) { clie_copyrectangle(orgwindow,NULL,&orgbounds,bounds->topLeft.x, bounds->topLeft.y,winPaint); moved = false; } else { moved = true; } } else { graphPrefs.xmax=graph_xscr2gr((bounds->topLeft.x+bounds->extent.x-1)-(x-begx)); graphPrefs.ymax=graph_yscr2gr((bounds->topLeft.y)-(y-begy)); graphPrefs.xmin = xmin; graphPrefs.ymin = ymin; moved = true; } clie_setclip(&rs); if (orgwindow) WinDeleteWindow(orgwindow,false); return moved; } /*********************************************************************** * * FUNCTION: grtaps_zoom_in * * DESCRIPTION: Fetch pen moves, draw a rectangle on the screen * according to pen moves and zoom in, if the user * lift the pen within bounds * * PARAMETERS: begx,begy - first tap, one of the corners * bounds - bounds of drawing area * * RETURN: true - zoom ok * false - did not zoom * ***********************************************************************/ static Boolean grtaps_zoom_in(Coord begx,Coord begy,RectangleType *bounds) GRAPH; static Boolean grtaps_zoom_in(Coord begx,Coord begy,RectangleType *bounds) { Boolean penDown; Coord x,y; Coord oldx=-1,oldy=-1; double tmp; do { EvtGetPenNat(&x, &y, &penDown); if ((oldx != x || oldy != y) && RctPtInRectangle(x, y, bounds)) { grtaps_rectangle(begx, begy, x, y); grtaps_rectangle(begx, begy, oldx, oldy); oldx = x; oldy = y; } } while(penDown); /* Remove the rectangle from screen */ grtaps_rectangle(begx, begy, oldx, oldy); if (!RctPtInRectangle(x,y,bounds)) { /* User wanted to cancel the zoom */ return false; } if (oldx==begx || oldy==begy) return false; if (begx > oldx) { tmp = begx; begx = oldx; oldx = tmp; } /* The Y axis is inversed on the screen */ if (begy < oldy) { tmp = begy; begy = oldy; oldy = tmp; } /* begx - Left corner of the box, oldx - right */ /* begy - bottom corner, oldy - top corner */ graphPrefs.xmax=graph_xscr2gr(oldx); graphPrefs.xmin=graph_xscr2gr(begx); graphPrefs.ymax=graph_yscr2gr(oldy); graphPrefs.ymin=graph_yscr2gr(begy); return true; } /*********************************************************************** * * FUNCTION: grtaps_track_but * * DESCRIPTION: The handler for the 'T' button, popups a list of * functions, that can be tracked * * PARAMETERS: Nothing * * RETURN: true - user selected the func, tracking should begin * false - user canceled operation * ***********************************************************************/ Boolean grtaps_track_but(void) { ListPtr list; char *descr[MAX_GRFUNCS]; Int16 nums[MAX_GRFUNCS]; Int16 count,i; count = grsetup_fn_descr_arr(descr,nums); if (count==0) return false; list = GetObjectPtr(graphTrackList); LstSetListChoices(list,descr,count); LstSetHeight(list,count); for (i=0;i<count;i++) if (nums[i] == trackSelected) break; if (i == count) i = noListSelection; LstSetSelection(list,i); i = LstPopupList(list); if (i == noListSelection) return false; trackSelected = nums[i]; return true; } /*********************************************************************** * * FUNCTION: grtaps_cross * * DESCRIPTION: Draw a tracking cross on the screen * * PARAMETERS: x,y - coordinates of the center of cross * bounds - bounds of drawing area * * RETURN: Nothing * ***********************************************************************/ static void grtaps_cross(Int16 x,Int16 y,RectangleType *bounds) GRAPH; static void grtaps_cross(Int16 x,Int16 y,RectangleType *bounds) { if (x != -1) clie_invertline(x, bounds->topLeft.y, x, bounds->topLeft.y + bounds->extent.y - 1); if (y != -1) clie_invertline(bounds->topLeft.x, y, bounds->topLeft.x + bounds->extent.x - 1, y); } /*********************************************************************** * * FUNCTION: grtaps_print_val * * DESCRIPTION: Print a specified 'double' on the location, clear * the location before printing * * PARAMETERS: name - text, that should precede the number * value - number to be drawn * x,y - coordinates * xmin,xmax - keep text between xmin and xmax * align - alignment w.r.t. coordinates * mode - drawing mode * * RETURN: Nothing * ***********************************************************************/ void grtaps_print_val(char *name, double value, Coord x, Coord y, Coord xmin, Coord xmax, Ttxtalign align, WinDrawOperation mode) { char text[MAX_FP_NUMBER+10]; Char *numtxt; Coord txtwidth; WinDrawOperation oldmode; #ifdef SUPPORT_DIA FntSetFont(HanderaAdjustFont(FntGetFont())); #endif StrCopy(text,name); numtxt = text + StrLen(text); //if (finite(value)) { fp_print_g_double(numtxt, value, 4); txtwidth = FntCharsWidth(text, StrLen(text)); if (align == align_center) { x -= txtwidth / 2; } else if (align == align_right) { x -= txtwidth; } if (x < xmin) x = xmin; if ((x + txtwidth) > xmax) x = xmax - txtwidth; oldmode = WinSetDrawMode(mode); WinPaintChars(text, StrLen(text), x, y); WinSetDrawMode(oldmode); //} } /*********************************************************************** * * FUNCTION: grtaps_print_pol, grtaps_print_param, grtaps_print_coords * * DESCRIPTION: Prints r & angle or x & y respectively on * given places of the screen * * PARAMETERS: r,angle,x,y - values * bounds - bounds of drawing area * * RETURN: Nothing * ***********************************************************************/ static void grtaps_print_pol(double r, double angle,RectangleType *bounds) GRAPH; static void grtaps_print_pol(double r, double angle,RectangleType *bounds) { Coord dx1 = HanderaCoord(1); Coord dy = HanderaCoord(11); if (graphPrefs.grEnable[8]) dy += HanderaCoord(7); grtaps_print_val("r:", r, bounds->topLeft.x + dx1, bounds->topLeft.y + bounds->extent.y - dy, bounds->topLeft.x, bounds->topLeft.x + bounds->extent.x, align_left, winInvert); grtaps_print_val("fi:", angle, bounds->topLeft.x + bounds->extent.x, bounds->topLeft.y + bounds->extent.y - dy, bounds->topLeft.x, bounds->topLeft.x + bounds->extent.x, align_right, winInvert); } static void grtaps_print_param(double t,RectangleType *bounds) GRAPH; static void grtaps_print_param(double t,RectangleType *bounds) { Coord dx1 = HanderaCoord(1), dy = HanderaCoord(11); if (graphPrefs.grEnable[8]) dy += HanderaCoord(7); grtaps_print_val("T:", t, bounds->topLeft.x + dx1, bounds->topLeft.y + bounds->extent.y - dy, bounds->topLeft.x, bounds->topLeft.x + bounds->extent.x, align_left, winInvert); } static void grtaps_print_coords(double realx, double realy,RectangleType *bounds) GRAPH; static void grtaps_print_coords(double realx, double realy,RectangleType *bounds) { Coord dx1 = HanderaCoord(1); Coord dy7 = HanderaCoord(7); Coord y; y = bounds->topLeft.y; if (graphPrefs.grEnable[8]) y += dy7; grtaps_print_val("x:", realx, bounds->topLeft.x + dx1, y, bounds->topLeft.x, bounds->topLeft.x + bounds->extent.x, align_left, winInvert); grtaps_print_val("y:", realy, bounds->topLeft.x + bounds->extent.x, y, bounds->topLeft.x, bounds->topLeft.x + bounds->extent.x, align_right, winInvert); } /*********************************************************************** * * FUNCTION: grtaps_track_manual * * DESCRIPTION: manually (not by pen-tap) set the tracking cross * * PARAMETERS: value - value to which set the cross * action - track_reset - the screen was redrawn, * reset the coordinates so * the next track will not clear * the lastly drawn cross * track_set - set a cross to a value and * draw it * track_add - moves a cross by value * track_redraw - redraws cross and labels after * screen resize * * RETURN: Nothing * ***********************************************************************/ void grtaps_track_manual(double value, TtrackAction action) { double realx, realy, r; RectangleType natbounds; RectangleType stdbounds; if (graphPrefs.functype == graph_polar) { value = math_user_to_rad(value); } if (action == track_reset) { lastParam = value; crossX = crossY = -1; oldr = oldangle = oldparam = oldrealx = oldrealy = NaN; return; } else { FontID oldfont; #ifdef SONY_SDK if (gHrMode == hrSony) oldfont = HRFntSetFont(gHrLibRefNum, hrStdFont+BOLDRES); else #endif oldfont = FntSetFont(HanderaAdjustFont(stdFont+BOLDRES)); gadget_bounds(FrmGetActiveForm(), graphGadget, &natbounds, &stdbounds); if (action == track_set) lastParam = value; else if (action == track_add) lastParam += value; if (action != track_redraw) { /* Erase previously drawn cross + text */ grtaps_cross(crossX, crossY, &natbounds); grtaps_print_coords(oldrealx, oldrealy, &stdbounds); if (graphPrefs.functype == graph_param) grtaps_print_param(oldparam, &stdbounds); else if (graphPrefs.functype == graph_polar) grtaps_print_pol(oldr, oldangle, &stdbounds); } graph_get_vals(trackSelected, lastParam, &realx, &realy); crossX = finite(realx) ? graph_xgr2scr(realx) : -1; crossY = finite(realy) ? graph_ygr2scr(realy) : -1; if (crossX < natbounds.topLeft.x || crossX > natbounds.topLeft.x + natbounds.extent.x) crossX = -1; if (crossY < natbounds.topLeft.y || crossY > natbounds.topLeft.y + natbounds.extent.y) crossY = -1; grtaps_cross(crossX, crossY, &natbounds); grtaps_print_coords(realx, realy, &stdbounds); oldrealx = realx; oldrealy = realy; if (graphPrefs.functype == graph_param) { grtaps_print_param(lastParam, &stdbounds); oldparam = lastParam; } else if (graphPrefs.functype == graph_polar) { // func_get_value(graphCurves[trackSelected].stack1, // lastParam,&r,NULL); r = sqrt(realx * realx + realy * realy); grtaps_print_pol(r, math_rad_to_user(lastParam), &stdbounds); oldr = r; oldangle = math_rad_to_user(lastParam); } #ifdef SONY_SDK if(gHrMode == hrSony) HRFntSetFont(gHrLibRefNum, oldfont); else #endif FntSetFont(oldfont); } } /*********************************************************************** * * FUNCTION: grtaps_track_pol * * DESCRIPTION: Tracking of a polar graph * * PARAMETERS: x,y - first tap * bounds * * RETURN: true - user lifted pen within bounds * false - outside bounds * ***********************************************************************/ static Boolean grtaps_track_pol(Coord x, Coord y, RectangleType *natbounds, RectangleType *stdbounds) GRAPH; static Boolean grtaps_track_pol(Coord x, Coord y, RectangleType *natbounds, RectangleType *stdbounds) { double realx, realy; double r; double angle_rad; /* angle in radians */ double angle_usr; /* angle in user units: rad/deg/grad */ Coord oldx, oldy, dx, dy; CodeStack *stack; Boolean penDown; stack = graphCurves[trackSelected].stack1; if (!stack) return false; oldx = oldy = -1; realx = realy = r = angle_rad = angle_usr = NaN; do { EvtGetPenNat(&x, &y, &penDown); if ((oldx != x || oldy != y) && RctPtInRectangle(x, y, natbounds)) { realx = graph_xscr2gr(x); realy = graph_yscr2gr(y); angle_rad = angle_usr = NaN; r = hypot(realx, realy); if (r != 0.0) { if (realx >= 0.0 && realy >= 0.0) angle_rad = asin(realy / r); else if (realx <= 0.0) angle_rad = M_PIl - asin(realy / r); else angle_rad = 2 * M_PIl + asin(realy / r); angle_usr = math_rad_to_user(angle_rad); func_get_value(stack, angle_usr, &r, NULL); realx = r * cos(angle_rad); realy = r * sin(angle_rad); dx = graph_xgr2scr(realx); dy = graph_ygr2scr(realy); if (!finite(angle_rad) || !RctPtInRectangle(dx, dy, natbounds)) { dy = -1; dx = -1; } } else { dx = dy = -1; realx = realy = NaN; } grtaps_cross(dx, dy, natbounds); grtaps_cross(crossX, crossY, natbounds); grtaps_print_coords(oldrealx, oldrealy, stdbounds); grtaps_print_coords(realx, realy, stdbounds); grtaps_print_pol(oldr, oldangle, stdbounds); grtaps_print_pol(r, angle_usr, stdbounds); oldx = x; oldy = y; crossX = dx; crossY = dy; oldrealx = realx; oldrealy = realy; oldr = r; oldangle = angle_usr; } } while(penDown); if (RctPtInRectangle(x, y, natbounds)) { lastParam = angle_rad; return true; } else return false; } /*********************************************************************** * * FUNCTION: grtaps_track_param * * DESCRIPTION: Tracking of a parametric graph * * PARAMETERS: x,y - first tap * bounds * * RETURN: true - user lifted pen within bounds * false - outside bounds * ***********************************************************************/ static Boolean grtaps_track_param(Coord x, Coord y, RectangleType *natbounds, RectangleType *stdbounds) GRAPH; static Boolean grtaps_track_param(Coord x, Coord y, RectangleType *natbounds, RectangleType *stdbounds) { double realx, realy; double param; Coord oldx, oldy, dx, dy; CodeStack *stack1, *stack2; double x2param; Boolean penDown; stack1 = graphCurves[trackSelected].stack1; stack2 = graphCurves[trackSelected].stack2; if (!stack1 || !stack2) return false; oldx = oldy = -1; realx = realy = param = NaN; x2param = (graphPrefs.tmax - graphPrefs.tmin) / (double)natbounds->extent.x; do { EvtGetPenNat(&x, &y, &penDown); if (oldx != x && RctPtInRectangle(x, y, natbounds)) { param = (double)(x - natbounds->topLeft.x) * x2param; param = graphPrefs.tmin + round(param / graphPrefs.tstep) * graphPrefs.tstep; if (finite(param)) { func_get_value(stack1, param, &realx, NULL); func_get_value(stack2, param, &realy, NULL); dx = graph_xgr2scr(realx); dy = graph_ygr2scr(realy); if (dx < natbounds->topLeft.x || dx > natbounds->topLeft.x + natbounds->extent.x) dx = -1; if (dy < natbounds->topLeft.y || dy > natbounds->topLeft.y + natbounds->extent.y) dy = -1; } else { dx = dy = -1; realx = realy = NaN; } grtaps_cross(dx, dy, natbounds); grtaps_cross(crossX, crossY, natbounds); grtaps_print_coords(oldrealx, oldrealy, stdbounds); grtaps_print_coords(realx, realy, stdbounds); grtaps_print_param(oldparam, stdbounds); grtaps_print_param(param, stdbounds); oldx = x; oldy = y; crossX = dx; crossY = dy; oldrealx = realx; oldrealy = realy; oldparam = param; } } while (penDown); if (RctPtInRectangle(x, y, natbounds)) { lastParam = param; return true; } else return false; } /*********************************************************************** * * FUNCTION: grtaps_track_func * * DESCRIPTION: Tracking of a normal function * * PARAMETERS: x,y - first tap * bounds * * RETURN: true/false - user lifted inside/outside of bounds * ***********************************************************************/ static Boolean grtaps_track_func(Coord x, Coord y, RectangleType *natbounds, RectangleType *stdbounds) GRAPH; static Boolean grtaps_track_func(Coord x,Coord y, RectangleType *natbounds, RectangleType *stdbounds) { double realx, realy; CodeStack *stack; Boolean penDown; stack = graphCurves[trackSelected].stack1; if (!stack) return false; realx = realy = NaN; do { EvtGetPenNat(&x, &y, &penDown); if (crossX != x && RctPtInRectangle(x, y, natbounds)) { realx = graph_xscr2gr(x); func_get_value(stack, realx, &realy, NULL); y = graph_ygr2scr(realy); if (!finite(realy) || !RctPtInRectangle(x, y, natbounds)) y = -1; grtaps_cross(x, y, natbounds); grtaps_cross(crossX, crossY, natbounds); grtaps_print_coords(oldrealx, oldrealy, stdbounds); grtaps_print_coords(realx, realy, stdbounds); crossX = x; crossY = y; oldrealx = realx; oldrealy = realy; } } while(penDown); if (RctPtInRectangle(x, y, natbounds)) { lastParam = realx; return true; } else return false; } /*********************************************************************** * * FUNCTION: grtaps_tap * * DESCRIPTION: Generic handler started when user taps on the drawing * gadget. * * PARAMETERS: x,y - coords, where user tapped * * RETURN: true - handled, user tapped inside gadget * false - should be handled by somone else * ***********************************************************************/ Boolean grtaps_tap(Int16 x,Int16 y) { RectangleType natbounds; RectangleType stdbounds; if (gHrMode == hrPalm) { UInt16 save = WinSetCoordinateSystem(kCoordinatesNative); x = WinScaleCoord(x, true); y = WinScaleCoord(y, true); WinSetCoordinateSystem(save); } else { x *= gSonyFactor; y *= gSonyFactor; } gadget_bounds(FrmGetActiveForm(), graphGadget, &natbounds, &stdbounds); if (RctPtInRectangle(x, y, &natbounds)) { /* Is zoom-in checked? */ if (CtlGetValue(GetObjectPtr(btnGraphZoomIn))) { if (grtaps_zoom_in(x, y, &natbounds)) { CtlSetValue(GetObjectPtr(btnGraphZoomIn), 0); FrmUpdateForm(frmGraph, frmUpdateVars); } } /* Is tracking checked? */ else if (CtlGetValue(GetObjectPtr(btnGraphTrack))) { FontID oldfont; #ifdef SONY_SDK if (gHrMode == hrSony) oldfont = HRFntSetFont(gHrLibRefNum, hrStdFont+BOLDRES); else #endif oldfont = FntSetFont(HanderaAdjustFont(stdFont+BOLDRES)); if (graphPrefs.functype == graph_func) grtaps_track_func(x, y, &natbounds, &stdbounds); else if (graphPrefs.functype == graph_polar) grtaps_track_pol(x, y, &natbounds, &stdbounds); else if (graphPrefs.functype == graph_param) grtaps_track_param(x, y, &natbounds, &stdbounds); #ifdef SONY_SDK if(gHrMode == hrSony) HRFntSetFont(gHrLibRefNum, oldfont); else #endif FntSetFont(oldfont); } else /* Move the graph */ if (grtaps_move(x, y, &natbounds)) FrmUpdateForm(frmGraph, frmUpdateVars); return true; } return false; } /*********************************************************************** * * FUNCTION: grtaps_start * * DESCRIPTION: Start tracking a function, show a cross * * PARAMETERS: Nothing * * RETURN: Nothing * ***********************************************************************/ void grtaps_track_start(void) { FormPtr frm = FrmGetActiveForm(); grtaps_track_manual(0, track_redraw); FrmShowObject(frm, FrmGetObjectIndex(frm, btnGraphTrackGoto)); } /*********************************************************************** * * FUNCTION: grtaps_track_pause * * DESCRIPTION: Pause tracking, although the cross is still displayed * * PARAMETERS: Nothing * * RETURN: Nothing * ***********************************************************************/ void grtaps_track_pause(void) { FormPtr frm = FrmGetActiveForm(); CtlSetValue(GetObjectPtr(btnGraphTrack), false); FrmHideObject(frm, FrmGetObjectIndex(frm, btnGraphTrackGoto)); } /*********************************************************************** * * FUNCTION: grtaps_track_reset * * DESCRIPTION: There was probably a forced screen redraw, reset internal * tracking variables and stop tracking * * PARAMETERS: start - where should the tracking start (where should * the cross appear when grtaps_track_start() is * called) * * RETURN: Nothing * ***********************************************************************/ void grtaps_track_reset(double start) { FormPtr frm = FrmGetActiveForm(); grtaps_track_manual(start, track_reset); CtlSetValue(GetObjectPtr(btnGraphTrack), false); FrmHideObject(frm, FrmGetObjectIndex(frm, btnGraphTrackGoto)); } /*********************************************************************** * * FUNCTION: grtaps_track_track * * DESCRIPTION: Start tracking of a particular function * * PARAMETERS: track - index to graphCurves table * * RETURN: Nothing * ***********************************************************************/ void grtaps_track_track(Int16 track) { trackSelected = track; CtlSetValue(GetObjectPtr(btnGraphTrack), true); grtaps_track_start(); } /*********************************************************************** * * FUNCTION: grtaps_track_last_value * * DESCRIPTION: Return the last position of a cross * * PARAMETERS: Nothing * * RETURN: The parameter value on the last cross position * ***********************************************************************/ double grtaps_track_last_value(void) { return lastParam; } /*********************************************************************** * * FUNCTION: grtaps_trackSelected * * PARAMETERS: Nothing * * RETURN: The index of the function selected for tracking * ***********************************************************************/ Int16 grtaps_trackSelected(void) { return trackSelected; } --- NEW FILE: grcalc.h --- /* * $Id: grcalc.h,v 1.1 2011/02/28 22:08:16 mapibid Exp $ * * Scientific Calculator for Palms. * Copyright (C) 2001 Ondrej Palkovsky * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * * You can contact me at 'on...@pe...'. */ #ifndef _GRCALC_H_ #define _GRCALC_H_ void grcalc_init(void) GRAPH; Boolean grcalc_control(void) GRAPH; #endif --- NEW FILE: grtaps.h --- /* * $Id: grtaps.h,v 1.1 2011/02/28 22:08:16 mapibid Exp $ * * Scientific Calculator for Palms. * Copyright (C) 1999,2000 Ondrej Palkovsky * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * * You can contact me at 'on...@pe...'. */ #ifndef _GRTAPS_H_ #define _GRTAPS_H_ typedef enum { track_reset, track_add, track_set, track_redraw }TtrackAction; typedef enum { align_left, align_center, align_right } Ttxtalign; Boolean grtaps_tap(Int16 x,Int16 y) GRAPH; Boolean grtaps_track_but(void) GRAPH; void grtaps_print_val(char *name, double value, Coord x, Coord y, Coord xmin, Coord xmax, Ttxtalign align, WinDrawOperation mode) GRAPH; void grtaps_track_manual(double value,TtrackAction action) GRAPH; void grtaps_track_pause(void) GRAPH; void grtaps_track_start(void) GRAPH; void grtaps_track_reset(double start) GRAPH; void grtaps_track_track(Int16 track) GRAPH; double grtaps_track_last_value(void) GRAPH; Int16 grtaps_trackSelected(void) GRAPH; #endif |
From: Mapi B. <ma...@us...> - 2011-02-28 22:07:50
|
Update of /cvsroot/easycalc/PPCport/core/mlib In directory vz-cvs-4.sog:/tmp/cvs-serv3323 Modified Files: calcDB.cpp display.h fp.cpp funcs.cpp history.cpp konvert.cpp Log Message: 1.25g Index: display.h =================================================================== RCS file: /cvsroot/easycalc/PPCport/core/mlib/display.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** display.h 15 Dec 2009 21:37:44 -0000 1.5 --- display.h 28 Feb 2011 22:07:47 -0000 1.6 *************** *** 34,38 **** disp_octal=8, disp_binary=2 ! }Tbase; typedef enum { --- 34,38 ---- disp_octal=8, disp_binary=2 ! } Tbase; typedef enum { *************** *** 40,44 **** disp_sci, disp_eng ! }Tdisp_mode; typedef struct { --- 40,51 ---- disp_sci, disp_eng ! } Tdisp_mode; ! ! typedef enum { ! pen_selzone, ! pen_movzone, ! pen_trackpt, ! pen_centerwide ! } Tpen_mode; typedef struct { *************** *** 49,53 **** Boolean forceInteger; Boolean cvtUnits; ! }TdispPrefs; TCHAR * display_real(double number) MLIB; --- 56,61 ---- Boolean forceInteger; Boolean cvtUnits; ! Tpen_mode penMode; ! } TdispPrefs; TCHAR * display_real(double number) MLIB; Index: funcs.cpp =================================================================== RCS file: /cvsroot/easycalc/PPCport/core/mlib/funcs.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** funcs.cpp 15 Dec 2009 21:37:44 -0000 1.7 --- funcs.cpp 28 Feb 2011 22:07:47 -0000 1.8 *************** *** 1039,1043 **** ***********************************************************************/ CError ! func_get_value(CodeStack *origstack,double param, double *result, CodeStack *addparams) { --- 1039,1043 ---- ***********************************************************************/ CError ! func_get_value(CodeStack *origstack, double param, double *result, CodeStack *addparams) { Index: history.cpp =================================================================== RCS file: /cvsroot/easycalc/PPCport/core/mlib/history.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** history.cpp 24 Dec 2009 16:36:13 -0000 1.5 --- history.cpp 28 Feb 2011 22:07:47 -0000 1.6 *************** *** 70,75 **** // Limit history size to 100 items ! while (DmNumRecords(dbRef) > 100) { ! DmRemoveRecord(dbRef, 0); } } --- 70,77 ---- // Limit history size to 100 items ! while ((size = DmNumRecords(dbRef)) > 100) { ! // Mapi: corrected behavior to keep last 100 records in a rolling window ! // DmRemoveRecord(dbRef, 0); ! DmRemoveRecord(dbRef, size-1); } } Index: konvert.cpp =================================================================== RCS file: /cvsroot/easycalc/PPCport/core/mlib/konvert.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** konvert.cpp 15 Dec 2009 21:37:44 -0000 1.7 --- konvert.cpp 28 Feb 2011 22:07:47 -0000 1.8 *************** *** 48,52 **** #ifdef GRAPHS_ENABLED ! #include "grprefs.h" #endif --- 48,52 ---- #ifdef GRAPHS_ENABLED ! #include "core/grprefs.h" #endif Index: fp.cpp =================================================================== RCS file: /cvsroot/easycalc/PPCport/core/mlib/fp.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** fp.cpp 15 Dec 2009 21:37:44 -0000 1.6 --- fp.cpp 28 Feb 2011 22:07:47 -0000 1.7 *************** *** 435,459 **** void fp_print_g_double(Char *s, double value, Int16 prec) PARSER; void ! fp_print_g_double(Char *s, double value, Int16 prec) ! { FlpCompDouble fcd; double round_factor; ! short e, e1, i; double *pd, *pd1; ! TCHAR sign = _T('\0'); ! short dec = 0; /* Check for reasonable value of prec. IEEE double. IEEE double * precision has about 16 significant decimal digits */ ! if (prec < 0 || prec > 16) prec = 7; /* Initialize round_factor */ round_factor = 0.5; ! for (i = 0; i < prec; i++) round_factor /= 10.0; /* Check for NaN, +Inf, -Inf, 0 */ fcd.d = value; ! if ((fcd.ul[0] & 0x7ff00000) == 0x7ff00000) { ! if (fcd.fdb.manH == 0 && fcd.fdb.manL == 0) { if (fcd.fdb.sign) StrCopy(s, _T("-Inf")); --- 435,462 ---- void fp_print_g_double(Char *s, double value, Int16 prec) PARSER; void ! fp_print_g_double(Char *s, double value, Int16 prec) { FlpCompDouble fcd; double round_factor; ! int e, e1, i; double *pd, *pd1; ! TCHAR sign = _T('\0'), *start = s; ! int dec = 0; ! int size = sizeof(double); ! bool is_negative = false; /* Check for reasonable value of prec. IEEE double. IEEE double * precision has about 16 significant decimal digits */ ! if (prec < 0 || prec > 16) ! prec = 7; /* Initialize round_factor */ round_factor = 0.5; ! for (i=0 ; i<prec ; i++) ! round_factor /= 10.0; /* Check for NaN, +Inf, -Inf, 0 */ fcd.d = value; ! if ((fcd.ul[__HIX] & 0x7ff00000) == 0x7ff00000) { ! if ((fcd.fdb.manH == 0) && (fcd.fdb.manL == 0)) { if (fcd.fdb.sign) StrCopy(s, _T("-Inf")); *************** *** 474,479 **** --- 477,484 ---- if (FlpGetSign(fcd)) { *s++ = _T('-'); + is_negative = true; FlpSetPositive(fcd); value = fcd.d; + prec--; // Keep one char for '-', so this decreases precision } *************** *** 481,486 **** if ((unsigned) fcd.fdb.exp < 0x3ff) { /* round_factor for value < 1.0 */ ! for (e = 1, e1 = 256, pd = pow1, pd1 = pow2; e1; ! e1 >>= 1, ++pd, ++pd1) { if (*pd1 > fcd.d) { e += e1; --- 486,492 ---- if ((unsigned) fcd.fdb.exp < 0x3ff) { /* round_factor for value < 1.0 */ ! for (e=1, e1=256, pd=pow1, pd1=pow2 ; ! e1 ; ! e1>>=1, ++pd, ++pd1) { if (*pd1 > fcd.d) { e += e1; *************** *** 492,501 **** else { /* round_factor for value >= 1.0 */ ! for (e = 0, e1 = 256, pd = pow1, pd1 = pow2; e1; ! e1 >>= 1, ++pd, ++pd1) { if (*pd <= fcd.d) { ! e += e1; ! fcd.d *= *pd1; ! round_factor *= *pd; } } --- 498,508 ---- else { /* round_factor for value >= 1.0 */ ! for (e=0, e1=256, pd=pow1, pd1=pow2 ; ! e1 ; ! e1>>=1, ++pd, ++pd1) { if (*pd <= fcd.d) { ! e += e1; ! fcd.d *= *pd1; ! round_factor *= *pd; } } *************** *** 506,511 **** if ((unsigned) fcd.fdb.exp < 0x3ff) { /* Build negative exponent */ ! for (e = 1, e1 = 256, pd = pow1, pd1 = pow2; e1; ! e1 >>= 1, ++pd, ++pd1) { if (*pd1 > fcd.d) { e += e1; --- 513,519 ---- if ((unsigned) fcd.fdb.exp < 0x3ff) { /* Build negative exponent */ ! for (e=1, e1=256, pd=pow1, pd1=pow2 ; ! e1 ; ! e1>>=1, ++pd, ++pd1) { if (*pd1 > fcd.d) { e += e1; *************** *** 525,530 **** else { /* Build positive exponent */ ! for (e = 0, e1 = 256, pd = pow1, pd1 = pow2; e1; ! e1 >>= 1, ++pd, ++pd1) { if (*pd <= fcd.d) { e += e1; --- 533,539 ---- else { /* Build positive exponent */ ! for (e=0, e1=256, pd=pow1, pd1=pow2 ; ! e1 ; ! e1>>=1, ++pd, ++pd1) { if (*pd <= fcd.d) { e += e1; *************** *** 539,543 **** /* Extract decimal digits of mantissa */ ! for (i = 0; i < prec; ++i, --dec) { Int32 d = (Int32) (fcd.d); *s++ = d + _T('0'); --- 548,552 ---- /* Extract decimal digits of mantissa */ ! for (i=0 ; i< prec ; ++i, --dec) { Int32 d = (Int32) (fcd.d); *s++ = d + _T('0'); *************** *** 550,564 **** /* Remove trailing zeros and decimal point */ while (s[-1] == _T('0')) ! *--s = _T('\0'); ! if (s[-1] == _T('.')) ! *--s = _T('\0'); ! /* Append exponent */ ! if (sign) { ! *s++ = _T('E'); ! *s++ = sign; ! StrIToA(s, e); } ! else ! *s = _T('\0'); } --- 559,598 ---- /* Remove trailing zeros and decimal point */ while (s[-1] == _T('0')) ! s--; ! if (s[-1] == _T('.')) { ! s--; ! dec = 0; ! } else { ! dec = 1; ! } ! // New function added to fit within text room: adjust precision ! // if there is an exponent, size ... ! /* Build exponent */ ! TCHAR expstr[16]; ! int explen = 0; ! if (sign!= _T('\0')) { ! expstr[0] = _T('E'); ! expstr[1] = sign; ! StrIToA(expstr+2, e); ! explen = _tcslen(expstr); ! } else ! expstr[0] = _T('\0'); ! /* Make room for the exponent */ ! int len = s - start; // Note: this is returning the count of TCHARS, whatever size it is ! ! int minlen = 1; ! if (is_negative) { // Keep '-' + 1 digit at least ! minlen = 2; ! prec++; // Restore back original prec value, now we include '-' in the length } ! while ((len > minlen) && (len+explen > prec)) { ! if ((--s)[-1] == _T('.')) { // Removing '.' ! s--; ! len--; ! dec = 0; ! } ! len--; ! } ! /* Add exponent */ ! _tcscpy(s, expstr); } Index: calcDB.cpp =================================================================== RCS file: /cvsroot/easycalc/PPCport/core/mlib/calcDB.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** calcDB.cpp 2 Nov 2009 17:24:39 -0000 1.6 --- calcDB.cpp 28 Feb 2011 22:07:47 -0000 1.7 *************** *** 400,406 **** ***********************************************************************/ CError db_func_description(const TCHAR *funcname,TCHAR **dest,TCHAR *param) MLIB; ! CError ! db_func_description(const TCHAR *funcname,TCHAR **dest,TCHAR *param) ! { dbPackedRecord *tmp; --- 400,404 ---- ***********************************************************************/ CError db_func_description(const TCHAR *funcname,TCHAR **dest,TCHAR *param) MLIB; ! CError db_func_description(const TCHAR *funcname,TCHAR **dest,TCHAR *param) { dbPackedRecord *tmp; |
From: Mapi B. <ma...@us...> - 2011-02-28 22:07:20
|
Update of /cvsroot/easycalc/PPCport/core In directory vz-cvs-4.sog:/tmp/cvs-serv3275 Modified Files: core_globals.h core_main.cpp varmgr.cpp varmgr.h Added Files: finance.cpp finance.h graph.cpp graph.h grprefs.cpp grprefs.h grsetup.cpp grsetup.h memo.cpp memo.h solver.cpp solver.h Log Message: 1.25g Index: core_globals.h =================================================================== RCS file: /cvsroot/easycalc/PPCport/core/core_globals.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** core_globals.h 2 Nov 2009 17:20:08 -0000 1.5 --- core_globals.h 28 Feb 2011 22:07:18 -0000 1.6 *************** *** 25,40 **** #define NB_KEYS BUTTON_COUNT // Keep KEY_SHIFT the smallest one in list, just after KEY_NONE ! #define KEY_CLR -1 ! #define KEY_BCKSPC -2 ! #define KEY_EXE -3 ! #define KEY_DOT -4 ! #define KEY_SHIFT -5 ! #define KEY_NONE -6 #define RESULT_AREA -99 /*********************/ /* Annunciator codes */ /*********************/ ! #define NB_ANNUN 19 #define ANN_SHIFT 0 #define ANN_DEG 1 --- 25,59 ---- #define NB_KEYS BUTTON_COUNT // Keep KEY_SHIFT the smallest one in list, just after KEY_NONE ! #define KEY_CLR -1 ! #define KEY_BCKSPC -2 ! #define KEY_EXE -3 ! #define KEY_DOT -4 ! #define KEY_CTRZONE -5 ! #define KEY_CTRWIDE -6 ! #define KEY_GPREFS -7 ! #define KEY_GCONF -8 ! #define KEY_GCALC -9 ! #define KEY_GSETX -10 ! #define KEY_ZONEIN -11 ! #define KEY_ZONEOUT -12 ! #define KEY_WIDEIN -13 ! #define KEY_WIDEOUT -14 ! #define KEY_NORMZON -15 ! #define KEY_SHIFT -16 ! #define KEY_NONE -17 ! ! /*******************/ ! /* Values for skey */ ! /*******************/ ! #define NOSKEY -1 ! #define ANNUNBASE -2 #define RESULT_AREA -99 + #define ZONE_AREA -100 + #define WVIEW_AREA -101 /*********************/ /* Annunciator codes */ /*********************/ ! #define NB_ANNUN 35 #define ANN_SHIFT 0 #define ANN_DEG 1 *************** *** 56,59 **** --- 75,94 ---- #define ANN_RESMENU 17 #define ANN_HSTMENU 18 + #define ANN_SELZONE 19 + #define ANN_MOVGRPH 20 + #define ANN_TRACKPT 21 + #define ANN_CTRWIDE 22 + #define ANN_ZONMAXY 23 + #define ANN_ZONMINY 24 + #define ANN_ZONMINX 25 + #define ANN_ZONMAXX 26 + #define ANN_WONZ_XR 27 + #define ANN_WONZ_YR 28 + #define ANN_PARAM0 29 + #define ANN_PARAM 30 + #define ANN_YVALUE 31 + #define ANN_XVALUE 32 + #define ANN_RVALUE 33 + #define ANN_CURVENB 34 /******************************/ *************** *** 76,79 **** --- 111,126 ---- #define ANNVAL_SCR_LEFT 1 #define ANNVAL_SCR_RIGHT 2 + // Effect on display zone Effect on wide view + #define ANNVAL_PEN_SELZONE 0 // Drag = define zone + upd(x0,x,y) = define zone + upd(x0,x,y) + // Tap = set(x,y) = set(x,y) + #define ANNVAL_PEN_MOVZONE 1 // Drag = set(x,y) = set(x,y) + // + move graph in zone + move graph in wide view + // Tap = set(x,y) = set(x,y) + set zone center + #define ANNVAL_PEN_TRACKPT 2 // Drag = upd(x0,x,Yn(x)) = set(x,Yn(x)) + deselect + // + define calc select zone + // Tap = set(x,Yn(x)) + deselect = set(x,Yn(x)) + deselect + #define ANNVAL_PEN_CTRWIDE 3 // Same as MOVZONE = move zone center + // + set(x,y) + // Same as MOVZONE = Same as MOVZONE --- NEW FILE: memo.h --- /* * $Id: memo.h,v 1.1 2011/02/28 22:07:18 mapibid Exp $ * * Scientific Calculator for Palms. * Copyright (C) 2000 Ondrej Palkovsky * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * * You can contact me at 'on...@pe...'. * */ #ifndef _MEMO_H_ #define _MEMO_H_ //#define MAX_DUMP 4000 #define MAX_DUMP 61000 #define EQUATIONS 999 Boolean memo_import_memo(Skin *skin, void *hWnd_p, const TCHAR *filename, Boolean unicode); void memo_dump(rpntype type, const TCHAR *filename, Boolean unicode); #endif --- NEW FILE: grprefs.h --- /* * $Id: grprefs.h,v 1.1 2011/02/28 22:07:18 mapibid Exp $ * * Scientific Calculator for Palms. * Copyright (C) 1999,2000 Ondrej Palkovsky * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * * You can contact me at 'on...@pe...'. */ #ifndef _GRPREFS_H_ #define _GRPREFS_H_ #include "compat/segment.h" #include "core/mlib/defuns.h" #define MIN_LOG_VAL 1E-5 typedef enum { graph_func, graph_polar, graph_param, nb_func_types } Tfunctype; typedef struct { double xmin, ymin; double xmax, ymax; double xscale, yscale; double fimin, fimax, fistep; double tmin, tmax, tstep; Tfunctype functype; TCHAR funcFunc[MAX_GRFUNCS][MAX_FUNCNAME+1]; TCHAR funcPol[MAX_GRFUNCS][MAX_FUNCNAME+1]; TCHAR funcPar[MAX_GRFUNCS][2][MAX_FUNCNAME+1]; // Warning: compared to original EasyCalc // code, this is inverted: // 0 -> y // 1 -> x Boolean logx,logy; Boolean saved_reducePrecision; Int16 speed; IndexedColorType colors[9]; Boolean grEnable[nb_func_types][9]; Int8 grType[6]; } TgrPrefs; //Boolean GraphPrefsHandleEvent(EventPtr event) IFACE; CError grpref_comp_field(TCHAR *text, double *value); Int16 grpref_verify_values (void) IFACE; CError set_axis(Functype *func, CodeStack *stack) GRAPH; extern TgrPrefs graphPrefs; extern TgrPrefs viewPrefs; extern RGBColorType graphRGBColors[]; extern const TdispPrefs grDPrefs; #endif --- NEW FILE: solver.h --- /* * $Id: solver.h,v 1.1 2011/02/28 22:07:18 mapibid Exp $ * * Scientific Calculator for Palms. * Copyright (C) 2000 Ondrej Palkovsky * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * * You can contact me at 'on...@pe...'. */ #ifndef _SOLVER_H_ #define _SOLVER_H_ #define SOLVER_ID 201 #define SLV_OFF 1 #define SLV_SOLVE 2 #define SLV_CALCULATE 3 #define SLV_ON 4 #ifndef _SOLVER_C_ extern DmOpenRef slv_gDB; extern Int16 slv_selectedWorksheet; extern double worksheet_min; extern double worksheet_max; extern double worksheet_prec; TCHAR worksheet_title[]; extern TCHAR *worksheet_note; #endif Int16 slv_db_open(void); Int16 slv_db_close(void); void slv_init(void); void slv_close(void); Int16 slv_save_worksheet(void); void slv_select_worksheet(void); Int16 slv_new_worksheet(TCHAR *name); void slv_update_worksheet(void); void slv_destroy_varlist(void); Int16 slv_init_varlist(void); CError slv_solve(Int16 selection); void slv_calculate(void); void slv_create_initial_note(void); TCHAR *slv_getVar(int i); void slv_update_help(int i); Boolean slv_comp_field(TCHAR *text, double *value); Boolean slv_memo_import(TCHAR *text); Boolean slv_export_memo(FILE *f, TCHAR *separator); #endif --- NEW FILE: grprefs.cpp --- /* * $Id: grprefs.cpp,v 1.1 2011/02/28 22:07:18 mapibid Exp $ * * Scientific Calculator for Palms. * Copyright (C) 1999,2000 Ondrej Palkovsky * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * * You can contact me at 'on...@pe...'. */ #include "stdafx.h" #include "compat/PalmOS.h" #include "core/mlib/display.h" #include "core/grprefs.h" #include "core/mlib/defuns.h" #include "compat/MathLib.h" #include "core/mlib/stack.h" #include "core/prefs.h" #include "core/Main.h" #include "core/calc.h" #include "core/mlib/mathem.h" #include "core/mlib/fp.h" /* Local structure - values in function mode */ TgrPrefs graphPrefs; TgrPrefs viewPrefs; /* Colors of functions and background, axis, grid */ RGBColorType graphRGBColors[] = { {0, 255, 0, 0}, {0, 0, 255, 0}, {0, 0, 0, 255}, {0, 128, 128, 0}, {0, 0, 128, 128}, {0, 128, 0, 128}, {0, 0x0b, 0x23, 0x27}, /* axis */ {0, 128, 128, 128}, /* grid */ {0, 0xa3, 0xb3, 0x9d} /* background */ }; /* Gray colors: 6 funcs + axis + grid + backgrnd */ IndexedColorType funcolors[9] = {15, 11, 7, 13, 9, 5, 15, 8, 0}; /* Display mode for preferences */ const TdispPrefs grDPrefs = {9, true, disp_normal, disp_decimal, false, false}; /*********************************************************************** * * FUNCTION: grpref_compl_field * * DESCRIPTION: Computes the 'real' value of a text field * * PARAMETERS: objectID - id of the field * * RETURN: CError - 0 on success * *value - the computed value * ***********************************************************************/ CError grpref_comp_field(TCHAR *text, double *value) { CError err; CodeStack *stack; stack = text_to_stack(text, &err); if (!err) { err = stack_compute(stack); if (!err) err = stack_get_val(stack, (void *) value, real); stack_delete(stack); } return ((CError) (err || !finite(*value))); } /*********************************************************************** * * FUNCTION: grpref_verify_values * * DESCRIPTION: Verify values for graph preferences * * PARAMETERS: None * * RETURN: 1 - success * 0 - error while computing * ***********************************************************************/ Int16 grpref_verify_values (void) { if ((graphPrefs.xscale < 0.0) || (graphPrefs.yscale < 0.0)) return (0); if ((graphPrefs.xmin >= graphPrefs.xmax) || (graphPrefs.ymin >= graphPrefs.ymax)) return (0); if (graphPrefs.logx && (graphPrefs.xmin <= 0.0)) return (0); if (graphPrefs.logy && (graphPrefs.ymin <= 0.0)) return (0); if (graphPrefs.functype == graph_polar) { if ((graphPrefs.fimin > graphPrefs.fimax) || ((graphPrefs.fimax-graphPrefs.fimin)/graphPrefs.fistep > 10000.0) || (graphPrefs.fistep <= 0.0)) /* check that min<max and step is reasonable */ return (0); } else if (graphPrefs.functype == graph_param) { if ((graphPrefs.tmin > graphPrefs.tmax) || ((graphPrefs.tmax-graphPrefs.tmin)/graphPrefs.tstep > 10000.0) || (graphPrefs.tstep <= 0.0)) /* check that min<max and step is reasonable */ return (0); } return (1); } /*********************************************************************** * * FUNCTION: set_axis * * DESCRIPTION: * * PARAMETERS: * * RETURN: * ***********************************************************************/ CError set_axis (Functype *func, CodeStack *stack) { List *lst, *lst2; double xscale = graphPrefs.xscale; double yscale = graphPrefs.yscale; int i; CError err; if (func->paramcount > 2) return (c_badargcount); else if (func->paramcount == 2) { err = stack_get_val(stack, &lst2, list); if (err) return (err); if (lst2->size != 2){ MemPtrFree(lst2); return (c_baddim); } if ((lst2->item[0].imag != 0.0) || (lst2->item[1].imag != 0.0)) { MemPtrFree(lst2); return (c_badarg); } xscale = lst2->item[0].real; yscale = lst2->item[1].real; MemPtrFree(lst2); if ((xscale <= 0.0) || (yscale <= 0.0)) return (c_badarg); } err = stack_get_val(stack, &lst, list); if (err) return (err); if (lst->size != 4) { MemPtrFree(lst); return (c_baddim); } for (i=0 ; i<4 ; i++) if (lst->item[i].imag != 0.0) { MemPtrFree(lst); return (c_badarg); } if((lst->item[0].real >= lst->item[1].real) || (lst->item[2].real >= lst->item[3].real)) { MemPtrFree(lst); return (c_badarg); } graphPrefs.xmin = lst->item[0].real; graphPrefs.xmax = lst->item[1].real; graphPrefs.ymin = lst->item[2].real; graphPrefs.ymax = lst->item[3].real; if (func->paramcount == 2) { graphPrefs.xscale = xscale; graphPrefs.yscale = yscale; graphPrefs.grEnable[graphPrefs.functype][7] = true; } else graphPrefs.grEnable[graphPrefs.functype][7] = false; err = stack_add_val(stack, &lst, list); MemPtrFree(lst); return (err); } Index: core_main.cpp =================================================================== RCS file: /cvsroot/easycalc/PPCport/core/core_main.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** core_main.cpp 2 Nov 2009 17:20:08 -0000 1.4 --- core_main.cpp 28 Feb 2011 22:07:18 -0000 1.5 *************** *** 75,79 **** if (mode_shift != state) { mode_shift = state; ! shell_annunciators(ANNVAL_UNCH, state, ANNVAL_UNCH, ANNVAL_UNCH, ANNVAL_UNCH); } } --- 75,79 ---- if (mode_shift != state) { mode_shift = state; ! shell_annunciators(ANNVAL_UNCH, state, ANNVAL_UNCH, ANNVAL_UNCH, ANNVAL_UNCH, ANNVAL_UNCH); } } *************** *** 201,205 **** if (key != KEY_NONE) { if (mode_getkey && mode_running) ! shell_annunciators(ANNVAL_UNCH, ANNVAL_UNCH, ANNVAL_UNCH, ANNVAL_UNCH, true); keydown(mode_shift, key); if (repeating != 0) { --- 201,205 ---- if (key != KEY_NONE) { if (mode_getkey && mode_running) ! shell_annunciators(ANNVAL_UNCH, ANNVAL_UNCH, ANNVAL_UNCH, ANNVAL_UNCH, ANNVAL_UNCH, true); keydown(mode_shift, key); if (repeating != 0) { *************** *** 253,256 **** --- 253,269 ---- skin->insert_input_text(NULL, &flPointChar); break; + case KEY_CTRZONE: + case KEY_CTRWIDE: + case KEY_GPREFS: + case KEY_GCONF: + case KEY_GCALC: + case KEY_GSETX: + case KEY_ZONEIN: + case KEY_ZONEOUT: + case KEY_WIDEIN: + case KEY_WIDEOUT: + case KEY_NORMZON: + shell_graphAction(repeating_key); + break; default: main_btnrow_click(skin, repeating_key); --- NEW FILE: graph.cpp --- /* * $Id: graph.cpp,v 1.1 2011/02/28 22:07:18 mapibid Exp $ * * Scientific Calculator for Palms. * Copyright (C) 1999,2000,2001 Ondrej Palkovsky * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * * You can contact me at 'on...@pe...'. * * 2001-09-31 - John Hodapp <bi...@em...> * Added code for display of trig mode and its selection * on the Graph screen. * * 2003-05-19 - Arno Welzel <arn...@gm...> * Added code to handle Sony Clie specific output using * Sony the HR lib */ #include "stdafx.h" #define _GRAPH_CPP_ #include "compat/PalmOS.h" //#include "clie.h" #include "core/mlib/defuns.h" #include "compat/MathLib.h" #include "core/mlib/konvert.h" #include "core/mlib/funcs.h" #include "core/mlib/calcDB.h" //#include "calcrsc.h" #include "core/prefs.h" #include "core/calc.h" #include "core/mlib/mathem.h" #include "core/mlib/stack.h" #include "core/varmgr.h" //#include "main.h" #include "core/grsetup.h" #include "core/Graph.h" #include "system - UI/Skin.h" //#include "grcalc.h" //#ifdef SUPPORT_DIA //#include "DIA.h" //#endif static struct { Boolean active; Boolean complete; int position; int funcnum; double start; double stop; double step; } graphState; Graph zoneGraph; Graph viewGraph; Tgraph_curves graphCurves[MAX_GRFUNCS]; TCHAR *lstGraphCalc[] = { _T("$$GRZERO"), _T("$$GRVALUE"), _T("$$GRMIN"), _T("$$GRMAX"), _T("$$GRDDX"), _T("d2/dx"), _T("$$GRINTEG"), _T("$$GRINTERSECT"), _T("dr/dt"), _T("dy/dx"), _T("dy/dt"), _T("dx/dt") }; t_grFuncType grcFunc[GRCFUNC_SZ] = {cp_zero, cp_value, cp_min, cp_max, cp_dydx1, cp_dydx2, cp_integ, cp_intersect}; t_grFuncType grcPolar[GRCPOLAR_SZ] = {cp_zero, cp_value, cp_min, cp_max, cp_odrdfi}; t_grFuncType grcParam[GRCPARAM_SZ] = {cp_pdydx, cp_pdydt, cp_pdxdt}; /*********************************************************************** * * FUNCTION: graph_init_cache * * DESCRIPTION: Initializes the field of precompiled functions with * NULLs * * PARAMETERS: Nothing * * RETURN: Nothing * ***********************************************************************/ void graph_init_cache (void) { Int16 i; for (i=0 ; i<MAX_GRFUNCS ; i++) { graphCurves[i].stack1 = NULL; graphCurves[i].stack2 = NULL; } } /*********************************************************************** * * FUNCTION: graph_clean_cache * * DESCRIPTION: Frees memory occupied by precompiled functions * * PARAMETERS: None * * RETURN: None * ***********************************************************************/ void graph_clean_cache (void) { Int16 i; for (i=0 ; i<MAX_GRFUNCS ; i++) { if (graphCurves[i].stack1) { stack_delete(graphCurves[i].stack1); graphCurves[i].stack1 = NULL; } if (graphCurves[i].stack2) { stack_delete(graphCurves[i].stack2); graphCurves[i].stack2 = NULL; } } } /*********************************************************************** * * FUNCTION: graph_compile_cache * * DESCRIPTION: Compiles functions that should be drawn and saves * for later use * * PARAMETERS: None * * RETURN: Nothing * ***********************************************************************/ static void graph_compile_cache (void) { int i; TCHAR *name; CodeStack *stack; CError err; graph_clean_cache(); if ((graphPrefs.functype == graph_func) || (graphPrefs.functype == graph_polar)) { for (i=0 ; i<MAX_GRFUNCS ; i++) { name = grsetup_get_fname(i); if (StrLen(name) == 0) continue; stack = db_read_function(name, &err); if (err) continue; /* Lookup variables to speed up execution */ stack_fix_variables(stack); graphCurves[i].stack1 = stack; } } else { /* Parametric */ for (i=0 ; i<MAX_GRFUNCS ; i++) { name = grsetup_get_fname(i*2); if (StrLen(name) == 0) continue; stack = db_read_function(name, &err); if (err) continue; /* Lookup variables to speed up execution */ stack_fix_variables(stack); graphCurves[i].stack1 = stack; name = grsetup_get_fname(i*2 + 1); if (StrLen(name) == 0) continue; stack = db_read_function(name, &err); if (err) continue; /* Lookup variables to speed up execution */ stack_fix_variables(stack); graphCurves[i].stack2 = stack; } } } /*********************************************************************** * * FUNCTION: graph_draw_stop, graph_draw_resume * * DESCRIPTION: Stop/resume drawing functions * * PARAMETERS: None * * RETURN: None * ***********************************************************************/ void graph_draw_resume (void) { graphState.active = true; } void graph_draw_stop (void) { graphState.active = false; } void graph_draw_complete (void) { graphState.active = false; graphState.complete = true; } bool is_graph_active (void) { return (graphState.active); } bool is_graph_complete (void) { return (graphState.complete); } /*********************************************************************** * * FUNCTION: graph_get_zoneOnView * * DESCRIPTION: Calculate coordinates of the zone in view reference. * * PARAMETERS: None * * RETURN: None * ***********************************************************************/ void graph_get_zoneOnView (long *top, long *left, long *bottom, long *right) { // Assumes being called only after view graph has been drawn on screen *top = viewGraph.graph_ygr2scr(graphPrefs.ymax); *left = viewGraph.graph_xgr2scr(graphPrefs.xmin); *bottom = viewGraph.graph_ygr2scr(graphPrefs.ymin); *right = viewGraph.graph_xgr2scr(graphPrefs.xmax); } /*********************************************************************** * * FUNCTION: graph_is_onscreen * * DESCRIPTION: If the coordinates fit on the screen * * PARAMETERS: x,y - coordinates of the original function * * RETURN: true - fits, false - outside * ***********************************************************************/ Boolean Graph::graph_is_onscreen (double x, double y) { if ((x >= xmin) && (x <= xmax) && (y >= ymin) && (y <= ymax)) return (true); return (false); } /*********************************************************************** * * FUNCTION: graph_xgr2scr * * DESCRIPTION: Convert the 'x' or 'y' coordinate from the function to * screen coordinates * * PARAMETERS: x or y * * RETURN: coordinate * ***********************************************************************/ Coord Graph::graph_xgr2scr (double x) { if (graphPrefs.logx) { x = (log10(x) - ScrPrefs.logxmin) / ScrPrefs.logxtrans; return ((Coord) (round(x))); } return ((Coord) (round((x - xmin) / ScrPrefs.xtrans))); } Coord Graph::graph_ygr2scr (double y) { if (graphPrefs.logy) { y = (log10(y) - ScrPrefs.logymin) / ScrPrefs.logytrans; return ((Coord) (round(y))); } return ((Coord) (round((y - ymin) / ScrPrefs.ytrans))); } /*********************************************************************** * * FUNCTION: graph_xscr2gr * * DESCRIPTION: Convert a screen 'x' (or y) coordinate to a graph coordinate * * PARAMETERS: x or y * * RETURN: coordinate * ***********************************************************************/ double Graph::graph_xscr2gr (Coord scr_x) { double res; if (graphPrefs.logx) { res = ScrPrefs.logxmin + ((double) scr_x) * ScrPrefs.logxtrans; res = pow(10.0, res); } else res = xmin + ((double) scr_x) * ScrPrefs.xtrans; return (res); } double Graph::graph_yscr2gr (Coord scr_y) { double res; if (graphPrefs.logy) { res = ScrPrefs.logymin + ((double) scr_y) * ScrPrefs.logytrans; res = pow(10.0, res); } else res = ymin + ((double) scr_y) * ScrPrefs.ytrans; return (res); } /*********************************************************************** * * FUNCTION: graph_isec_y * * DESCRIPTION: Find an intersection of a line with a vertical line * - it is used when drawing lines towards a point outside of * the drawing area * * PARAMETERS: x1,y1 - point 1 * x2,y2 - point 2 * x3 - the vertical line * RETURN: y3 - the point on the vertical line * ***********************************************************************/ double Graph::graph_isec_y (double x1, double y1, double x2, double y2, double x3) { double sidea, sideb, parta; sidea = y2 - y1; sideb = x2 - x1; parta = x2 - x3; return (y2 - (sidea * parta) / sideb); } #define graph_isec_x(x1,y1,x2,y2,y3) (graph_isec_y(y1,x1,y2,x2,y3)) /*********************************************************************** * * FUNCTION: graph_outscreen * * DESCRIPTION: Find a point, where a line should be drawn instead of * the point outside of drawing area * * PARAMETERS: onx,ony - points in the drawing area * offx,offy - points outside drawing area * * RETURN: newx,newy - new points on the border of drawing area * ***********************************************************************/ void Graph::graph_outscreen (double *newx, double *newy, double onx, double ony, double offx, double offy) { double tmp; tmp = graph_isec_x(onx, ony, offx, offy, ymin); if ((offy < ymin) && (tmp >= xmin) && (tmp <= xmax)) { *newx = tmp; *newy = ymin; return; } tmp = graph_isec_x(onx, ony, offx, offy, ymax); if ((offy > ymax) && (tmp >= xmin) && (tmp <= xmax)) { *newx = tmp; *newy = ymax; return; } tmp = graph_isec_y(onx, ony, offx, offy, xmin); if ((offx < xmin) && (tmp >= ymin) && (tmp <= ymax)) { *newx = xmin; *newy = tmp; return; } tmp = graph_isec_y(onx, ony, offx, offy, xmax); if ((offx > xmax) && (tmp >= ymin) && (tmp <= ymax)) { *newx = xmax; *newy = tmp; return; } if (offx > onx) *newx = onx + ScrPrefs.xtrans; else *newx = onx - ScrPrefs.xtrans; if (offy > ony) *newy = ony + ScrPrefs.ytrans; else *newy = ony - ScrPrefs.ytrans; if((isinf(offy) > 0) && finite(offx)) *newy = ymax; else if ((isinf(offy) < 0) && finite(offx)) *newy = ymin; else if ((isinf(offx) > 0) && finite(offy)) *newx = xmax; else if ((isinf(offx) < 0) && finite(offy)) *newx = xmin; else{ *newx = onx; *newy = ony; } } /*********************************************************************** * * FUNCTION: graph_new_point * * DESCRIPTION: Adds a new point to graph. Depending on the selected * style this function chooses way of drawing, colors etc. * * PARAMETERS: x,y - coordinates of a new point * funcnum - function number, where the point belongs to * * RETURN: Nothing * ***********************************************************************/ void Graph::graph_new_point (Skin *skin, Coord scr_x, double x, double y, Int16 funcnum) { Coord scr_y; Boolean ison = graph_is_onscreen(x, y); switch (graphPrefs.grType[funcnum]) { case 0: // Dots if (ison) { if (scr_x < 0) scr_x = graph_xgr2scr(x); scr_y = graph_ygr2scr(y); skin->drawline(scr_x, scr_y-1, scr_x, scr_y+1); skin->drawline(scr_x-1, scr_y, scr_x+1, scr_y); } break; case 2: // Surface if (!isnan(y)) { Coord scr_y0; if ((x > xmax) || (x < xmin)) break; /* polar, parametric or DRAW_AT_ONCE !=1 */ if (y > ymax){ if (ymax < 0) break; if (ymin > 0) scr_y0 = 0; else scr_y0 = ScrPrefs.y0 + 1; scr_y = ScrPrefs.ymax; } else if (y < ymin) { if (ymin > 0) break; if (ymax < 0) scr_y0 = ScrPrefs.ymax; else scr_y0 = ScrPrefs.y0 - 1; scr_y = 0; } else { scr_y = graph_ygr2scr(y); if (ymax < 0) scr_y0 = ScrPrefs.ymax; else if (ymin > 0) scr_y0 = 0; else scr_y0 = ScrPrefs.y0 + (int) (sgn(y)); } if (scr_x < 0) scr_x = graph_xgr2scr(x); scr_y = graph_ygr2scr(y); skin->drawline(scr_x, scr_y0, scr_x, scr_y); } break; default: // Line { double oldx = graphCurves[funcnum].x; double oldy = graphCurves[funcnum].y; if (!graphCurves[funcnum].valid) { if (ison) { if (scr_x < 0) scr_x = graph_xgr2scr(x); scr_y = graph_ygr2scr(y); skin->drawline(scr_x, scr_y, scr_x, scr_y); } graphCurves[funcnum].valid = true; } else if (graphCurves[funcnum].valid) { if (ison) { if (graphCurves[funcnum].ison) { if (scr_x < 0) scr_x = graph_xgr2scr(x); scr_y = graph_ygr2scr(y); skin->drawline(graphCurves[funcnum].scr_x, graphCurves[funcnum].scr_y, scr_x, scr_y); } else { /* Only second point on screen */ double newx, newy; graph_outscreen(&newx, &newy, x, y, oldx, oldy); if (scr_x < 0) scr_x = graph_xgr2scr(x); scr_y = graph_ygr2scr(y); skin->drawline(graph_xgr2scr(newx), graph_ygr2scr(newy), scr_x, scr_y); } } else if (graphCurves[funcnum].ison) { /* Only first point on screen */ double newx, newy; graph_outscreen(&newx, &newy, oldx, oldy, x, y); scr_x = graph_xgr2scr(newx); scr_y = graph_ygr2scr(newy); skin->drawline(graphCurves[funcnum].scr_x, graphCurves[funcnum].scr_y, scr_x, scr_y); // We have a discontinuity, do not forget to draw last point skin->finishline(graphPrefs.colors[funcnum]); } } break; } } // Keep track of current point as last point drawn graphCurves[funcnum].x = x; graphCurves[funcnum].y = y; graphCurves[funcnum].scr_x = scr_x; graphCurves[funcnum].scr_y = scr_y; graphCurves[funcnum].ison = ison; } /* Initialize cache variables to * avoid this time-expensive computation in the future */ void Graph::cacheTrans (void) { ScrPrefs.xtrans = (xmax - xmin) / ((double) (ScrPrefs.width - 1)); ScrPrefs.ytrans = (ymax - ymin) / ((double) (ScrPrefs.height - 1)); if (graphPrefs.logx) { ScrPrefs.logxtrans = (log10(xmax) - log10(xmin)) / ((double) (ScrPrefs.width)); ScrPrefs.logxmin = log10(xmin); } if (graphPrefs.logy) { ScrPrefs.logytrans = (log10(ymax) - log10(ymin)) / ((double) (ScrPrefs.height)); ScrPrefs.logymin = log10(ymin); } } //static void graph_grid (RectangleType *bounds) { // double tmpx, tmpy, ystart, xscale, yscale; // Coord x, y; // // xscale = xscale; // yscale = yscale; // // if ((xscale == 0.0) || (yscale == 0.0)) // return; // // if ((((ymax - ymin) / yscale) > ((ScrPrefs.ymin - ScrPrefs.ymax) / 3)) // || (((xmax - xmin) / xscale) > ((ScrPrefs.xmax - ScrPrefs.xmin) / 3))) // return; // // graph_setcolor(-2); // // tmpy = graph_yscr2gr(bounds->topLeft.y + bounds->extent.y); // ystart = ceil(tmpy / yscale) * yscale; // tmpx = graph_xscr2gr(bounds->topLeft.x); // tmpx = ceil(tmpx / xscale) * xscale; // for ( ; tmpx<=xmax ; tmpx+=xscale) { // x = graph_xgr2scr(tmpx); // for (tmpy=ystart ; tmpy<=ymax ; tmpy+=yscale) { // y = graph_ygr2scr(tmpy); // if (gHrMode != hrNone) { // /* Draw crosses in hi res ... */ // skin->drawline(x, y-1, x, y+1); // skin->drawline(x-1, y, x+1, y); // } else // /* otherwise just dots */ // skin->drawline(x, y, x, y); // } // } // // graph_unsetcolor(); //} //#ifndef SUPPORT_DIA //#define HanderaCoord(x) (x) //#endif /* Initializes Graph gadget and shows the basic grid */ void Graph::graph_init_screen (Skin *skin, int width, int height) { if (graphPrefs.logx && (xmin <= 0.0)) xmin = MIN_LOG_VAL; if (graphPrefs.logy && (ymin <= 0.0)) ymin = MIN_LOG_VAL; // ScrPrefs.xmin = 0; // ScrPrefs.ymin = 0; ScrPrefs.xmax = (ScrPrefs.width = width) - 1; ScrPrefs.ymax = (ScrPrefs.height = height) - 1; cacheTrans(); /* Draw axes */ int x = graph_xgr2scr(0.0); int y = ScrPrefs.y0 = graph_ygr2scr(0.0); if (graphPrefs.grEnable[graphPrefs.functype][6]) { /* axes drawing enabled */ skin->selPen(6); /* y axis */ if ((x >= 0) && (x <= ScrPrefs.xmax)) { skin->drawline(x, 0, x, ScrPrefs.ymax); skin->finishline(graphPrefs.colors[6]); } /* x axis */ if ((y >= 0) && (y <= ScrPrefs.ymax)) { skin->drawline(0, y, ScrPrefs.xmax, y); skin->finishline(graphPrefs.colors[6]); } } } /*********************************************************************** * * FUNCTION: graph_get_vals * * DESCRIPTION: Return the coordinates on the resulting graph (in graph * coordinates) of the function given by funcnum and * from the parameter 'param'. * * PARAMETERS: fnum - the function number * param - parameter value * * RETURN: true - the resulting 'x' and 'y' coordinates are valid * false - an error occured - e.g. function not defined etc. * ***********************************************************************/ Boolean Graph::graph_get_vals (int fnum, double param, double *x, double *y, double *r) { if (graphPrefs.functype == graph_param) { if (!graphCurves[fnum].stack1 || !graphCurves[fnum].stack2) return (false); func_get_value(graphCurves[fnum].stack1, param, y, NULL); func_get_value(graphCurves[fnum].stack2, param, x, NULL); return (finite(*x) && finite(*y)); } else if (graphPrefs.functype == graph_func) { if (!graphCurves[fnum].stack1) return (false); *x = param; func_get_value(graphCurves[fnum].stack1, param, y, NULL); return (finite(*y) != 0); } else { /* graph_pol */ double radius; if (!graphCurves[fnum].stack1) return (false); func_get_value(graphCurves[fnum].stack1, math_rad_to_user(param), &radius, NULL); if (r != NULL) *r = radius; if (!finite(radius)) return (false); *x = radius * cos(param); *y = radius * sin(param); return (true); } } /*********************************************************************** * * FUNCTION: graph_zoom_out * * DESCRIPTION: Zoom out by making a window of a same center but * twice as high and twice as wide * * PARAMETERS: frm, objectId - id of the graph gadget * * RETURN: Nothing * ***********************************************************************/ //void Graph::graph_zoom_out (void) { // double width = xmax - xmin; // double height = ymax - ymin; // // xmin -= width / 2; // xmax += width / 2; // // ymin -= height / 2; // ymax += height / 2; //} /*********************************************************************** * * FUNCTION: graph_draw_start * * DESCRIPTION: Initialize the drawing procedure, that later occurs * in background (using nilEvent in the Palm version, * and a separate thread in other versions). * * PARAMETERS: None * * RETURN: None * ***********************************************************************/ void Graph::graph_draw_start (Skin *skin, int width, int height, TgrPrefs *pgr) { int i; xmin = pgr->xmin; xmax = pgr->xmax; ymin = pgr->ymin; ymax = pgr->ymax; for (i=0 ; i<MAX_GRFUNCS ; i++) graphCurves[i].valid = false; graph_compile_cache(); graph_init_screen(skin, width, height); graphState.active = true; graphState.complete = false; graphState.position = 0; graphState.funcnum = 0; if (graphPrefs.functype == graph_func) { graphState.start = xmin; graphState.stop = xmax; graphState.step = (xmax - xmin) / ScrPrefs.xmax; } else if (graphPrefs.functype == graph_polar) { graphState.start = graphPrefs.fimin; graphState.stop = graphPrefs.fimax; graphState.step = graphPrefs.fistep; } else if (graphPrefs.functype == graph_param) { graphState.start = graphPrefs.tmin; graphState.stop = graphPrefs.tmax; graphState.step = graphPrefs.tstep; } // grcalc_init(); } /*********************************************************************** * * FUNCTION: graph_draw_incr * * DESCRIPTION: Draws a piece of a function (called from nilEvent * in the original Palm version) * * PARAMETERS: None * * RETURN: None * ***********************************************************************/ void Graph::graph_draw_incr (Skin *skin) { Int32 i; double start; double x,y; if (graphState.funcnum >= MAX_GRFUNCS) { graph_draw_complete(); return; } if (graphState.position == 0) { // At start, do some checks + inits /* Check, if we have all functions to draw graph */ if (!graphPrefs.grEnable[graphPrefs.functype][graphState.funcnum] || (graphCurves[graphState.funcnum].stack1 == NULL) || ((graphPrefs.functype == graph_param) && (graphCurves[graphState.funcnum].stack2 == NULL))) { graphState.funcnum++; return; } skin->selPen(graphState.funcnum); } // Draw a small piece of graph and return if (graphPrefs.functype == graph_func) { for (i=0 ; ((i<DRAW_AT_ONCE) && (graphState.position<=ScrPrefs.xmax)); i+=graphPrefs.speed, graphState.position+=graphPrefs.speed) { graph_get_vals(graphState.funcnum, graph_xscr2gr(graphState.position), &x, &y, NULL); graph_new_point(skin, graphState.position, x, y, graphState.funcnum); } if (graphState.position > ScrPrefs.xmax) { /* Curve finished */ skin->finishline(graphPrefs.colors[graphState.funcnum]); // Draw last point // /* Redraw labels. They may have been overwritten */ // graph_draw_axes_labels(&stdbounds); graphState.position = 0; graphState.funcnum++; } } else { /* Parametric and polar */ start = graphState.start; for (i=0 ; ((i<DRAW_AT_ONCE) && (start<=graphState.stop)) ; i+=graphPrefs.speed, graphState.position+=graphPrefs.speed) { start = graphState.start + graphState.step * graphState.position; if (start > graphState.stop) { /* Draw slightly behind end on polar graphs * to compensate for rounding */ if (graphPrefs.functype == graph_polar) start -= graphState.step / 2; else break; /* Do not draw behind end on parametric */ } graph_get_vals(graphState.funcnum, start, &x, &y, NULL); graph_new_point(skin, -1, x, y, graphState.funcnum); } if (start >= graphState.stop) { /* Curve finished */ skin->finishline(graphPrefs.colors[graphState.funcnum]); // Draw last point graphState.position = 0; graphState.funcnum++; } } } /*********************************************************************** * * FUNCTION: grtaps_track_pol * * DESCRIPTION: Tracking of a polar graph * * PARAMETERS: x,y - first tap * * RETURN: true - Could calculate values * false - No result * ***********************************************************************/ Boolean Graph::grtaps_track_pol (int *x, int *y, double *r_x, double *r_y, double *th, double *r, int curve_nb) { double realx, realy; double angle, radius; int dx, dy; CodeStack *stack; stack = graphCurves[curve_nb].stack1; if (!stack) return (false); angle = (double)(*x) * (graphPrefs.fimax - graphPrefs.fimin) / (double) (ScrPrefs.width); angle = graphPrefs.fimin + round(angle / graphPrefs.fistep) * graphPrefs.fistep; if (finite(angle)) { func_get_value(stack, angle, &radius, NULL); realx = radius * cos(angle); realy = radius * sin(angle); dx = graph_xgr2scr(realx); dy = graph_ygr2scr(realy); } else { dx = dy = -1; realx = realy = NaN; } *x = dx; *y = dy; *th = angle; *r = radius; *r_x = realx; *r_y = realy; if (dy == -1) return (false); return (true); } /*********************************************************************** * * FUNCTION: grtaps_track_param * * DESCRIPTION: Tracking of a parametric graph * * PARAMETERS: x,y - first tap * * RETURN: true - Could calculate values * false - No result * ***********************************************************************/ Boolean Graph::grtaps_track_param (int *x, int *y, double *r_x, double *r_y, double *t, int curve_nb) { double realx, realy; double param; int dx, dy; CodeStack *stack1, *stack2; stack1 = graphCurves[curve_nb].stack1; stack2 = graphCurves[curve_nb].stack2; if (!stack1 || !stack2) return (false); param = (double)(*x) * (graphPrefs.tmax - graphPrefs.tmin) / (double) (ScrPrefs.width); param = graphPrefs.tmin + round(param / graphPrefs.tstep) * graphPrefs.tstep; if (finite(param)) { func_get_value(stack1, param, &realy, NULL); func_get_value(stack2, param, &realx, NULL); dx = graph_xgr2scr(realx); dy = graph_ygr2scr(realy); } else { dx = dy = -1; realx = realy = NaN; } *x = dx; *y = dy; *t = param; *r_x = realx; *r_y = realy; if (dy == -1) return (false); return (true); } /*********************************************************************** * * FUNCTION: grtaps_track_func * * DESCRIPTION: Tracking of a normal function * * PARAMETERS: x,y - first tap * * RETURN: true - Could calculate values * false - No result * ***********************************************************************/ Boolean Graph::grtaps_track_func (int *x, int *y, double *r_x, double *r_y, int curve_nb) { double realx, realy; CodeStack *stack; int dy; stack = graphCurves[curve_nb].stack1; if (!stack) return (false); realx = graph_xscr2gr(*x); func_get_value(stack, realx, &realy, NULL); dy = graph_ygr2scr(realy); if (!finite(realy)) dy = -1; *y = dy; *r_x = realx; *r_y = realy; if (dy == -1) return (false); return (true); } Index: varmgr.h =================================================================== RCS file: /cvsroot/easycalc/PPCport/core/varmgr.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** varmgr.h 2 Nov 2009 17:20:08 -0000 1.4 --- varmgr.h 28 Feb 2011 22:07:18 -0000 1.5 *************** *** 43,48 **** Boolean varmgr_edit_save(TCHAR *namefield, TCHAR *varfield, TCHAR *paramfield, rpntype type, Boolean editname, void *hWnd_p) IFACE; - Boolean varmgr_get_double(double *value,TCHAR *title) IFACE; - Boolean varmgr_get_complex(Complex *value,TCHAR *title) IFACE; - Boolean varmgr_get_varstring(TCHAR *varname,TCHAR *title) IFACE; #endif --- 43,45 ---- --- NEW FILE: solver.cpp --- /* * $Id: solver.cpp,v 1.1 2011/02/28 22:07:18 mapibid Exp $ * * Scientific Calculator for Palms. * Copyright (C) 2002 Ondrej Palkovsky * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, [...1055 lines suppressed...] _fputts(newline, f); _fputts(configuration, f); _fputts(newline, f); _fputts(record->equation, f); _fputts(newline, f); _fputts(noteptr, f); size = StrLen(noteptr); if (size && (noteptr[size-1] != _T('\n'))) // Add a '\n' if needed _fputts(newline, f); MemHandleUnlock(recordHandle); _fputts(separator, f); _fputts(newline, f); } slv_db_close(); return (true); } --- NEW FILE: memo.cpp --- /* * $Id: memo.cpp,v 1.1 2011/02/28 22:07:18 mapibid Exp $ * * Scientific Calculator for Palms. * Copyright (C) 2000 Ondrej Palkovsky * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * * You can contact me at 'on...@pe...'. * */ #include "stdafx.h" #include "compat/PalmOS.h" #include <string.h> #include "konvert.h" #include "calcDB.h" #include "display.h" #include "memo.h" #include "stack.h" //#include "calcrsc.h" #include "calc.h" #include "prefs.h" #include "funcs.h" //#include "result.h" #include "solver.h" #include <stdlib.h> #include "core_display.h" #include "system - UI/EasyCalc.h" #define EQ_SEPARATOR _T("--------------------") /*********************************************************************** * * FUNCTION: strslashcat * * DESCRIPTION: Make the string 'quote-safe' * * PARAMETERS: str1 - destination string * str2 - source string * * RETURN: Nothing * ***********************************************************************/ static void strslashcat(TCHAR *str1, TCHAR *str2) { str1+=StrLen(str1); while ((*str1++ = *str2++)) if ((*str2 == _T('\"')) || (*str2 == _T('\\'))) *(str1++) = _T('\\'); } static TCHAR *memo_dump_item (dbList *list, Int16 i) { TCHAR *dump = NULL; TCHAR *text; CError err; Trpn item; TCHAR parameter[MAX_FUNCNAME+1]; if (list->type[i] == function) { err = db_func_description(list->list[i], &text, parameter); if (err) return NULL; dump = (TCHAR *) MemPtrNew((StrLen(text)+StrLen(list->list[i])+30) * sizeof(TCHAR)); dump[0] = _T('\0'); /* Define the parameter */ StrCat(dump, _T("defparamn(\"")); StrCat(dump, parameter); //#ifdef _WINDOWS // StrCat(dump, _T("\")\r\n")); //#else StrCat(dump, _T("\")\n")); //#endif StrCat(dump, list->list[i]); StrCat(dump, _T("()=\"")); strslashcat(dump, text); //#ifdef _WINDOWS // StrCat(dump, _T("\"\r\n")); //#else StrCat(dump, _T("\"\n")); //#endif MemPtrFree(text); } /* Do not export matrices for now */ else if (list->type[i]==variable) { item = db_read_variable(list->list[i], &err); if (err) return NULL; /* Do not work with strings now */ if (item.type == string) { rpn_delete(item); return NULL; } // Mapi: let's not export function parameter ... if (StrCompare(list->list[i], parameter_name) == 0) { /* Special - parameter of a function */ rpn_delete(item); return NULL; } text = display_default(item, true, NULL); dump = (TCHAR *) MemPtrNew((StrLen(text)+StrLen(list->list[i])+5) * sizeof(TCHAR)); StrCopy(dump, list->list[i]); StrCat(dump, _T("=")); StrCat(dump, text); //#ifdef _WINDOWS // StrCat(dump, _T("\r\n")); //#else StrCat(dump, _T("\n")); //#endif rpn_delete(item); MemPtrFree(text); } return dump; } static void memo_new_record (FILE *f, TCHAR *text) { //#ifdef _WINDOWS // TCHAR *header = _T("EasyCalc data structures\r\n"); //#else TCHAR *header = _T("EasyCalc data structures\n"); //#endif if (text == NULL) { _fputts(header, f); } else { _fputts(text, f); } } /*********************************************************************** * * FUNCTION: memo_dump_db * * DESCRIPTION: Create a string dump of an EasyCalc's database * containing definitions of variables and functions * * PARAMETERS: type - function,variable or all * * RETURN: pointer to a newly allocated memo-dump * ***********************************************************************/ static void memo_dump_db (FILE *f, rpntype type) { TCHAR *text; dbList *list; Int16 i; TCHAR *dump; dump = (TCHAR *) MemPtrNew((MAX_DUMP+20)*sizeof(TCHAR)); StrCopy(dump, _T("")); list = db_get_list(type); // Start recording memo_new_record(f, NULL); /* Dump the list */ for (i=0 ; i<list->size ; i++) { text = memo_dump_item(list, i); if (!text) continue; if (StrLen(text) > MAX_DUMP) { MemPtrFree(text); continue; } if (StrLen(dump)+StrLen(text) > MAX_DUMP) { if (type != variable) //#ifdef _WINDOWS // StrCat(dump, _T("defparamn(\"x\")\r\n")); //#else StrCat(dump, _T("defparamn(\"x\")\n")); //#endif memo_new_record(f, dump); StrCopy(dump, _T("")); } StrCat(dump, text); MemPtrFree(text); } if (type != variable) //#ifdef _WINDOWS // StrCat(dump, _T("defparamn(\"x\")\r\n")); //#else StrCat(dump, _T("defparamn(\"x\")\n")); //#endif memo_new_record(f, dump); db_delete_list(list); MemPtrFree(dump); } /*********************************************************************** * * FUNCTION: memo_dump * * DESCRIPTION: Dump an EasyCalc db to file * * PARAMETERS: Nothing * * RETURN: Nothing * ***********************************************************************/ void memo_dump (rpntype type, const TCHAR *filename, Boolean unicode) { FILE *f; if (unicode) f = _tfopen(filename, _T("wb")); // Write unicode as is else f = _tfopen(filename, _T("w")); // Write unicode as MBCS if (f == NULL) return; if (type == EQUATIONS) { slv_export_memo(f, EQ_SEPARATOR); } else { memo_dump_db(f, type); } fclose(f); } static Boolean memo_execute(Skin *skin, void *hWnd_p, TCHAR *input) { int i, j; CodeStack *stack; CError err; Trpn result; i = 0; while (input[i]) { for (j=i ; input[j]!=_T('\n') && input[j] ; j++) ; input[j] = _T('\0'); if (input[j-1] == _T('\r')) input[j-1] = _T('\0'); if (StrLen(input+i) == 0) break; stack = text_to_stack(input+i, &err); if (!err) { err = stack_compute(stack); if (!err) { result = stack_pop(stack); set_ans_var(result); result_set(skin, hWnd_p, result); rpn_delete(result); } stack_delete(stack); } if (err) return false; i = j+1; } return true; } /*********************************************************************** * * FUNCTION: memo_import_memo * * DESCRIPTION: Executes a selected memo into easycalc * * PARAMETERS: filename - the file selected by user * * RETURN: true - operation ok * false - error during execution * ***********************************************************************/ Boolean memo_import_memo (Skin *skin, void *hWnd_p, const TCHAR *filename, Boolean unicode) { TCHAR *input; char *mbcs_input = NULL; int memolen, i=0; Boolean start = true; Boolean res; #ifdef SPECFUN_ENABLED TCHAR *next; Boolean is_equation = false; #endif FILE *f = _tfopen(filename, _T("rb")); // Read unicode and MBCS as is if (f == NULL) { return (false); } input = (TCHAR *) MemPtrNew((MAX_DUMP+1)*sizeof(TCHAR)); if (!unicode) mbcs_input = (char *) MemPtrNew((MAX_DUMP+1)); do { // Read a bunch of chars when previous bunch is exhausted if (unicode) { memolen = fread(input+i, sizeof(TCHAR), MAX_DUMP-i, f); input[memolen] = _T('\0'); } else { memolen = fread(mbcs_input+i, 1, MAX_DUMP-i, f); mbcs_input[memolen] = '\0'; TCHAR const *text = libLang->convert(mbcs_input+i); StrCopy(input+i, text); } if (start) { /* Skip the first line */ for (i=0 ; input[i]!=_T('\n') && i<memolen ; i++) ; i++; #ifdef SPECFUN_ENABLED if (input[i] == _T(':')) is_equation = true; #endif start = false; } #ifdef SPECFUN_ENABLED if (is_equation) { TCHAR *temp = input; while ((temp != NULL) && (*temp)) { // Find next "--------------------" next = _tcsstr(temp, EQ_SEPARATOR); if (next != NULL) { *next = _T('\0'); // Go to the end of EQ_SEPARATOR + '\n' do { next++; } while (*next && (*next != _T('\n'))); if (*next == _T('\n')) next++; // Skip '\n' also } if ((next != NULL) || feof(f)) { // If not at end of file, maybe the // equation separator is in the next // bunch of chars, so let's use this // only when we have a separator or // we are at end of file. res = slv_memo_import(temp); temp = next; } else { // No separator, and not at end of file, // let's not consume that piece. next = temp; temp = NULL; } } } else { #endif // Find last '\n' next = _tcsrchr(input+i, _T('\n')); if (next != NULL) { *next = _T('\0'); if (*(next-1) == _T('\r')) *(next-1) = _T('\0'); next++; } // Execute sequence till then res = memo_execute(skin, hWnd_p, input+i); #ifdef SPECFUN_ENABLED } #endif // Move unread sequence at begining of buffer, and read more chars if there are if (next) { i = memolen - (next-input); if (i > 0) memcpy(input, next, i*sizeof(TCHAR)); } else { i = 0; // All consumed } } while (res && !feof(f)); MemPtrFree(input); if (mbcs_input) MemPtrFree(mbcs_input); return res; } --- NEW FILE: finance.cpp --- /* * $Id: finance.cpp,v 1.1 2011/02/28 22:07:18 mapibid Exp $ * * Scientific Calculator for Palms. * Copyright (C) 2000 Ondrej Palkovsky * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * * You can contact me at 'on...@pe...'. * */ #incl... [truncated message content] |
From: Mapi B. <ma...@us...> - 2011-02-28 22:06:15
|
Update of /cvsroot/easycalc/PPCport/compat In directory vz-cvs-4.sog:/tmp/cvs-serv2020 Added Files: dbutil.h Log Message: 1.25g --- NEW FILE: dbutil.h --- /* * $Id: dbutil.h,v 1.1 2011/02/28 22:06:13 mapibid Exp $ * * Scientific Calculator for Palms. * Copyright (C) 1999,2000,2007 Ondrej Palkovsky * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * * You can contact me at 'on...@pe...'. */ #ifndef _DBUTIL_H_ #define _DBUTIL_H_ //#include <PalmOS.h> Int16 open_db(const Char *name, UInt16 dbversion, UInt32 crid, UInt32 dbtype, DmOpenRef *dbref); #endif |
From: Mapi B. <ma...@us...> - 2011-02-28 22:05:47
|
Update of /cvsroot/easycalc/PPCport/compat In directory vz-cvs-4.sog:/tmp/cvs-serv1809 Modified Files: FloatManager.h PalmOS.h Log Message: 1.25g Index: FloatManager.h =================================================================== RCS file: /cvsroot/easycalc/PPCport/compat/FloatManager.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** FloatManager.h 5 Jul 2009 20:52:48 -0000 1.2 --- FloatManager.h 28 Feb 2011 22:05:45 -0000 1.3 *************** *** 6,18 **** #include "PalmOS.h" typedef struct { - UInt32 sign : 1; - Int32 exp : 11; - UInt32 manH : 20; UInt32 manL; } FlpDoubleBits; - // Inferring from definitions in Palm OS FloatMgr.h as, and the fact that Windows CE - // supports only little endian, even on ARM platforms which are bi-endian. typedef unsigned int SDWord; typedef struct { --- 6,18 ---- #include "PalmOS.h" + // Inferring from definitions in Palm OS FloatMgr.h as, and the fact that Windows CE + // supports only little endian, even on ARM platforms which are big-endian. typedef struct { UInt32 manL; + UInt32 manH : 20; + Int32 exp : 11; + UInt32 sign : 1; } FlpDoubleBits; typedef unsigned int SDWord; typedef struct { Index: PalmOS.h =================================================================== RCS file: /cvsroot/easycalc/PPCport/compat/PalmOS.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** PalmOS.h 15 Dec 2009 21:36:12 -0000 1.8 --- PalmOS.h 28 Feb 2011 22:05:45 -0000 1.9 *************** *** 70,73 **** --- 70,82 ---- typedef RectangleType *RectanglePtr; + typedef struct RGBColorType { + UInt8 index; + UInt8 r; + UInt8 g; + UInt8 b; + } RGBColorType; + + #define WinRGBToIndex(c) ((DWORD) (((BYTE) ((c)->r) | ((WORD) ((c)->g) << 8)) | (((DWORD) (BYTE) ((c)->b)) << 16))) + #include "DataManager.h" #include "FloatManager.h" *************** *** 75,79 **** #include <stdlib.h> ! #define SysRandom(x) (srand(x), rand()) #define sysRandomMax RAND_MAX extern unsigned long nan[]; --- 84,88 ---- #include <stdlib.h> ! #define SysRandom(x) ((x == 0) ? rand() : (srand(x), rand())) #define sysRandomMax RAND_MAX extern unsigned long nan[]; |
From: Mapi B. <ma...@us...> - 2011-02-28 22:04:25
|
Update of /cvsroot/easycalc/PPCport In directory vz-cvs-4.sog:/tmp/cvs-serv32483 Modified Files: EasyCalc.vcproj EasyCalc.vcproj.CLIENT5.Admin.user ReadMe.txt Log Message: 1.25g Index: EasyCalc.vcproj =================================================================== RCS file: /cvsroot/easycalc/PPCport/EasyCalc.vcproj,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** EasyCalc.vcproj 4 Jan 2011 22:42:46 -0000 1.14 --- EasyCalc.vcproj 28 Feb 2011 22:04:23 -0000 1.15 *************** *** 760,763 **** --- 760,767 ---- </File> <File + RelativePath=".\system - UI\SkinList.cpp" + > + </File> + <File RelativePath=".\system - UI\StateManager.cpp" > *************** *** 852,856 **** </File> <File ! RelativePath=".\core\graph.cpp" > </File> --- 856,860 ---- </File> <File ! RelativePath=".\core\Graph.cpp" > </File> *************** *** 1042,1045 **** --- 1046,1053 ---- </File> <File + RelativePath=".\system - UI\SkinList.h" + > + </File> + <File RelativePath=".\system - UI\StateManager.h" > *************** *** 1126,1130 **** </File> <File ! RelativePath=".\core\graph.h" > </File> --- 1134,1138 ---- </File> <File ! RelativePath=".\core\Graph.h" > </File> Index: ReadMe.txt =================================================================== RCS file: /cvsroot/easycalc/PPCport/ReadMe.txt,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** ReadMe.txt 4 Jan 2011 22:42:46 -0000 1.10 --- ReadMe.txt 28 Feb 2011 22:04:23 -0000 1.11 *************** *** 1,3 **** ! ======================================================================== EasyCalc Pocket PC (PPC) port ======================================================================== --- 1,3 ---- ! EasyCalc Pocket PC (PPC) port ======================================================================== *************** *** 29,34 **** - Simply delete the following files from the place where they were put: EasyCalc.exe ! EasyCalc.gif ! EasyCalc.layout lang.rcp state.bin --- 29,34 ---- - Simply delete the following files from the place where they were put: EasyCalc.exe ! EasyCalc*.gif ! EasyCalc*.layout lang.rcp state.bin *************** *** 37,53 **** --------- * 1.25g PPC: - Lower memory consumption with skins (this was causing some problems for 640 x 480 resolutions). - Fixed bug when clicking the V button in a variable modification dialog, or clicking the F button in a function modification dialog, would corrupt the name of the variable / function being modified and result in some unpredictable behavior. ! - Added support for the old Pocket PC 2003 platform, an ARM Windows CE 4.02 package is now also produced and available, besides the WM5 and WM6 packages. Enjoy ! - Corrected a bug in dynamic mouse mode where going over the "0" button was not activating it like other buttons. ! - Modified the main skins to make annunciators more visible, and to make it ! more plain that one can "click" or tap on them to access to functions. * 1.25f PPC: --- 37,64 ---- --------- * 1.25g PPC: + - Graphes at last, but not least ...! (lots of features in there, that + took me time). - Lower memory consumption with skins (this was causing some problems for 640 x 480 resolutions). + - Tried an adaptive mode if not enough memory, where a skin can be removed + from memory to free space for another one to switch to at switch time + if there is not enough room to hold them all. Let me know if you are in + such a situation and still have some trouble. The calculator should be able + run with only one skin loaded at any time in memory, that just takes a + little more time when switching from one screen to another (1, 2, 3 and G). - Fixed bug when clicking the V button in a variable modification dialog, or clicking the F button in a function modification dialog, would corrupt the name of the variable / function being modified and result in some unpredictable behavior. ! - Added support for the old Pocket PC 2003 platform. An ARM Windows CE 4.02 package is now also produced and available, besides the WM5 and WM6 packages. Enjoy ! - Corrected a bug in dynamic mouse mode where going over the "0" button was not activating it like other buttons. ! - Modified main skins to make annunciators more visible, and to make it ! more intuitive that one can "click" or tap on them to access functions. ! - Can now drag results left or right when total lenght is wider than display area. ! - Corrected a bug for random nunmber generation (seed was not handled properly, ! resulting in non random lists generated ..). * 1.25f PPC: *************** *** 62,66 **** whether using keyboard, SIP or buttons. - Limited history to 100 entries, as the history popup can be long to appear ! when history is lengthy. If somboedy needs mode, let me know. - Pocket PC specific documentation (in english), which can be accessed through the Help menu. --- 73,77 ---- whether using keyboard, SIP or buttons. - Limited history to 100 entries, as the history popup can be long to appear ! when history is lengthy. If somebody needs mode, let me know. - Pocket PC specific documentation (in english), which can be accessed through the Help menu. *************** *** 127,131 **** ! Functional differences between 1.25h PPC and legacy Palm EasyCalc 1.25: ----------------------------------------------------------------------- - Fully skinable: one can create new skins (.gif and .layout files) to --- 138,142 ---- ! Functional differences between 1.25g PPC and legacy Palm EasyCalc 1.25: ----------------------------------------------------------------------- - Fully skinable: one can create new skins (.gif and .layout files) to *************** *** 214,221 **** Press Cancel to end the loop. - - Viewing results longer than the result display size is not done by a tap - and drag, but by clicking on the arrows at left or right of the screen. - Will see how to do the tap and drag thing also in the PocketPC version later. - - matrix[n:.] which is resulting in a list is recognized as a list by the PPC version and can be edited in list editor by a tap on the result area. --- 225,228 ---- *************** *** 307,311 **** - The graph skin philosophy and usability is largely different from initial ! code, which I felt was not intuitive. I hope this one is more intuitive to use. --- 314,341 ---- - The graph skin philosophy and usability is largely different from initial ! code, which I felt was not intuitive. I hope this one is better to use. ! Let me know. ! ! - There is now a track view display to see a larger zone and to move the graph zone ! on it in order to explore in details wider parts more easily. ! ! - The selection mode on curve, allowing to pick a calculated point on curve ! by tapping on the screen, is different from Palm code in Polar mode: the stylus y ! position is ignored, and only the x position is used to select a value between ! th-min and th-max, in the same way as the parametric mode curve point selection. ! Initial code was calculating the intersection of (O, tap_point) and curve, and ! selecting that point, which was non obvious to use when O was not visible, and ! did not allow to select some points on drawn curve when it was cycling several ! times. ! ! - Each mode (function, polar, parametric) has its own set of activated curves, ! while this was a single common set in the initial code for all modes. This made ! little sense. ! ! - There is no "Table mode" dialog for graph functions. I didn't see it was worth ! the trouble creating this view. If you really need it, let me know. ! ! - Added a 'square' button to restore the graph zone to a normed view where 1 vertical ! = 1 horizontal. *************** *** 313,316 **** --- 343,347 ---- ----------------------- - Support screen rotation with another set of skins (EasyCalcWide.layout + gif). + - Updated help. - ... that should be all ... Index: EasyCalc.vcproj.CLIENT5.Admin.user =================================================================== RCS file: /cvsroot/easycalc/PPCport/EasyCalc.vcproj.CLIENT5.Admin.user,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** EasyCalc.vcproj.CLIENT5.Admin.user 4 Jan 2011 22:42:46 -0000 1.6 --- EasyCalc.vcproj.CLIENT5.Admin.user 28 Feb 2011 22:04:23 -0000 1.7 *************** *** 69,73 **** /> <DeploymentTool ! DeploymentDevice="1f261bf1-9987-41a3-ba3c-ca801816d8f3" /> <DebuggerTool --- 69,73 ---- /> <DeploymentTool ! DeploymentDevice="e4fc2bc5-3ac4-452c-a893-ad4f273c3a7c" /> <DebuggerTool *************** *** 209,213 **** /> <DeploymentTool ! DeploymentDevice="1f261bf1-9987-41a3-ba3c-ca801816d8f3" /> <DebuggerTool --- 209,213 ---- /> <DeploymentTool ! DeploymentDevice="81551346-886F-43a2-B707-A91FAE1B33A7" /> <DebuggerTool |
From: Mapi B. <ma...@us...> - 2011-01-04 22:42:54
|
Update of /cvsroot/easycalc/PPCport In directory sfp-cvsdas-4.v30.ch3.sourceforge.com:/tmp/cvs-serv16699 Modified Files: EasyCalc.vcproj EasyCalc.vcproj.CLIENT5.Admin.user ReadMe.txt Log Message: Version 1.25g Index: EasyCalc.vcproj =================================================================== RCS file: /cvsroot/easycalc/PPCport/EasyCalc.vcproj,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** EasyCalc.vcproj 15 Dec 2009 21:35:49 -0000 1.13 --- EasyCalc.vcproj 4 Jan 2011 22:42:46 -0000 1.14 *************** *** 19,22 **** --- 19,25 ---- Name="Windows Mobile 5.0 Smartphone SDK (ARMV4I)" /> + <Platform + Name="Pocket PC 2003 (ARMV4)" + /> </Platforms> <ToolFiles> *************** *** 291,294 **** --- 294,388 ---- </Configuration> <Configuration + Name="Debug|Pocket PC 2003 (ARMV4)" + OutputDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" + IntermediateDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" + ConfigurationType="1" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + TargetEnvironment="1" + /> + <Tool + Name="VCCLCompilerTool" + ExecutionBucket="7" + Optimization="0" + AdditionalIncludeDirectories="E:\AppsDev\EasyCalc\EasyCalc;E:\AppsDev\EasyCalc\EasyCalc\include;E:\AppsDev\EasyCalc\EasyCalc\core\mlib;"E:\AppsDev\EasyCalc\EasyCalc\system - UI"" + PreprocessorDefinitions="_DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;DEBUG;_WINDOWS;$(ARCHFAM);$(_ARCHFAM_);_UNICODE;UNICODE;POCKETPC2003_UI_MODEL;SPECFUN_ENABLED;GRAPHS_ENABLED" + MinimalRebuild="true" + RuntimeLibrary="1" + UsePrecompiledHeader="2" + WarningLevel="3" + DebugInformationFormat="3" + ShowIncludes="true" + EnablePREfast="false" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES)" + Culture="1033" + AdditionalIncludeDirectories="$(IntDir)" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalOptions=" /subsystem:windowsce,4.02" + OutputFile="$(OutDir)/EasyCalc.exe" + LinkIncremental="2" + DelayLoadDLLs="$(NOINHERIT)" + GenerateDebugInformation="true" + ProgramDatabaseFile="$(OutDir)/EasyCalc.pdb" + SubSystem="0" + StackReserveSize="65536" + StackCommitSize="4096" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="3" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCCodeSignTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + <DeploymentTool + ForceDirty="-1" + RemoteDirectory="" + RegisterOutput="0" + AdditionalFiles="" + /> + <DebuggerTool + /> + </Configuration> + <Configuration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" OutputDirectory="$(PlatformName)\$(ConfigurationName)" *************** *** 550,553 **** --- 644,738 ---- /> </Configuration> + <Configuration + Name="Release|Pocket PC 2003 (ARMV4)" + OutputDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" + IntermediateDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" + ConfigurationType="1" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + TargetEnvironment="1" + /> + <Tool + Name="VCCLCompilerTool" + ExecutionBucket="7" + Optimization="2" + FavorSizeOrSpeed="2" + AdditionalIncludeDirectories="E:\AppsDev\EasyCalc\EasyCalc;E:\AppsDev\EasyCalc\EasyCalc\include;E:\AppsDev\EasyCalc\EasyCalc\core\mlib;"E:\AppsDev\EasyCalc\EasyCalc\system - UI"" + PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;_WINDOWS;$(ARCHFAM);$(_ARCHFAM_);_UNICODE;UNICODE;POCKETPC2003_UI_MODEL;SPECFUN_ENABLED;GRAPHS_ENABLED" + RuntimeLibrary="0" + UsePrecompiledHeader="2" + WarningLevel="3" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES)" + Culture="1033" + AdditionalIncludeDirectories="$(IntDir)" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalOptions=" /subsystem:windowsce,5.02" + OutputFile="$(OutDir)/EasyCalc.exe" + LinkIncremental="1" + DelayLoadDLLs="$(NOINHERIT)" + GenerateDebugInformation="true" + ProgramDatabaseFile="$(OutDir)/EasyCalc.pdb" + SubSystem="0" + StackReserveSize="65536" + StackCommitSize="4096" + OptimizeReferences="2" + EnableCOMDATFolding="2" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="0" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCCodeSignTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + <DeploymentTool + ForceDirty="-1" + RemoteDirectory="" + RegisterOutput="0" + AdditionalFiles="" + /> + <DebuggerTool + /> + </Configuration> </Configurations> <References> *************** *** 598,601 **** --- 783,794 ---- </FileConfiguration> <FileConfiguration + Name="Debug|Pocket PC 2003 (ARMV4)" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1" + /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > *************** *** 613,616 **** --- 806,817 ---- /> </FileConfiguration> + <FileConfiguration + Name="Release|Pocket PC 2003 (ARMV4)" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1" + /> + </FileConfiguration> </File> </Filter> *************** *** 651,654 **** --- 852,867 ---- </File> <File + RelativePath=".\core\graph.cpp" + > + </File> + <File + RelativePath=".\core\grprefs.cpp" + > + </File> + <File + RelativePath=".\core\grsetup.cpp" + > + </File> + <File RelativePath=".\core\lstedit.cpp" > *************** *** 913,916 **** --- 1126,1141 ---- </File> <File + RelativePath=".\core\graph.h" + > + </File> + <File + RelativePath=".\core\grprefs.h" + > + </File> + <File + RelativePath=".\core\grsetup.h" + > + </File> + <File RelativePath=".\core\lstedit.h" > *************** *** 1023,1026 **** --- 1248,1259 ---- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" > + <File + RelativePath=".\system - UI\bitmap1.bmp" + > + </File> + <File + RelativePath=".\system - UI\bitmap2.bmp" + > + </File> <Filter Name="system - UI" Index: ReadMe.txt =================================================================== RCS file: /cvsroot/easycalc/PPCport/ReadMe.txt,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** ReadMe.txt 24 Dec 2009 16:35:28 -0000 1.9 --- ReadMe.txt 4 Jan 2011 22:42:46 -0000 1.10 *************** *** 36,39 **** --- 36,54 ---- Releases: --------- + * 1.25g PPC: + - Lower memory consumption with skins (this was causing some problems + for 640 x 480 resolutions). + - Fixed bug when clicking the V button in a variable modification dialog, + or clicking the F button in a function modification dialog, would corrupt + the name of the variable / function being modified and result in + some unpredictable behavior. + - Added support for the old Pocket PC 2003 platform, an ARM Windows CE 4.02 + package is now also produced and available, besides the WM5 and WM6 packages. + Enjoy ! + - Corrected a bug in dynamic mouse mode where going over the "0" button was not + activating it like other buttons. + - Modified the main skins to make annunciators more visible, and to make it + more plain that one can "click" or tap on them to access to functions. + * 1.25f PPC: - Removed some memory leaks. *************** *** 112,116 **** ! Functional differences between 1.25f PPC and legacy Palm EasyCalc 1.25: ----------------------------------------------------------------------- - Fully skinable: one can create new skins (.gif and .layout files) to --- 127,131 ---- ! Functional differences between 1.25h PPC and legacy Palm EasyCalc 1.25: ----------------------------------------------------------------------- - Fully skinable: one can create new skins (.gif and .layout files) to *************** *** 279,286 **** unlimited in legacy code). ! Still missing in 1.25f: ----------------------- - - Graphes - Support screen rotation with another set of skins (EasyCalcWide.layout + gif). - ... that should be all ... --- 294,315 ---- unlimited in legacy code). + - In the graph setup panel, bug fixed: when entering a value for say Y2:, + which creates z_grafun2(), then using z_grafun2() for Y1: by pressing + on the Y1: label, and then pressing the Y2: label to get the list of + functions ans selecting "Delete", the contents of Y1: would stay for + ever on the non defined function z_grafun2(), with no way out: pressing Delete + on this one does not empty the box / selection, and clicking on the edit text + can only modify the z_grafun2() function, and not z_grafun1(). ! - When entering in Graph mode, reduce precision was set to false, restoring the ! initial value later. However, this was showing in Preferences, and modifiable ! by user, which could modify graphing behavior. This is now invisible to the user. ! ! - The graph skin philosophy and usability is largely different from initial ! code, which I felt was not intuitive. I hope this one is more intuitive to use. ! ! ! Still missing in 1.25g: ----------------------- - Support screen rotation with another set of skins (EasyCalcWide.layout + gif). - ... that should be all ... Index: EasyCalc.vcproj.CLIENT5.Admin.user =================================================================== RCS file: /cvsroot/easycalc/PPCport/EasyCalc.vcproj.CLIENT5.Admin.user,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** EasyCalc.vcproj.CLIENT5.Admin.user 24 Dec 2009 17:14:55 -0000 1.5 --- EasyCalc.vcproj.CLIENT5.Admin.user 4 Jan 2011 22:42:46 -0000 1.6 *************** *** 112,115 **** --- 112,150 ---- </Configuration> <Configuration + Name="Debug|Pocket PC 2003 (ARMV4)" + > + <DebugSettings + Command="$(TargetPath)" + WorkingDirectory="" + CommandArguments="" + Attach="false" + DebuggerType="3" + Remote="1" + RemoteMachine="CLIENT5" + RemoteCommand="" + HttpUrl="" + PDBPath="" + SQLDebugging="" + Environment="" + EnvironmentMerge="true" + DebuggerFlavor="" + MPIRunCommand="" + MPIRunArguments="" + MPIRunWorkingDirectory="" + ApplicationCommand="" + ApplicationArguments="" + ShimCommand="" + MPIAcceptMode="" + MPIAcceptFilter="" + /> + <DeploymentTool + DeploymentDevice="E282E6BE-C7C3-4ece-916A-88FB1CF8AF3C" + /> + <DebuggerTool + RemoteExecutable="" + Arguments="" + /> + </Configuration> + <Configuration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > *************** *** 174,178 **** /> <DeploymentTool ! DeploymentDevice="d1a7b239-28d5-4485-9b8c-5764e3dc79b6" /> <DebuggerTool --- 209,213 ---- /> <DeploymentTool ! DeploymentDevice="1f261bf1-9987-41a3-ba3c-ca801816d8f3" /> <DebuggerTool *************** *** 216,219 **** --- 251,289 ---- /> </Configuration> + <Configuration + Name="Release|Pocket PC 2003 (ARMV4)" + > + <DebugSettings + Command="$(TargetPath)" + WorkingDirectory="" + CommandArguments="" + Attach="false" + DebuggerType="3" + Remote="1" + RemoteMachine="CLIENT5" + RemoteCommand="" + HttpUrl="" + PDBPath="" + SQLDebugging="" + Environment="" + EnvironmentMerge="true" + DebuggerFlavor="" + MPIRunCommand="" + MPIRunArguments="" + MPIRunWorkingDirectory="" + ApplicationCommand="" + ApplicationArguments="" + ShimCommand="" + MPIAcceptMode="" + MPIAcceptFilter="" + /> + <DeploymentTool + DeploymentDevice="E282E6BE-C7C3-4ece-916A-88FB1CF8AF3C" + /> + <DebuggerTool + RemoteExecutable="" + Arguments="" + /> + </Configuration> </Configurations> </VisualStudioUserFile> |
From: Mapi B. <ma...@us...> - 2011-01-04 22:32:29
|
Update of /cvsroot/easycalc/PPCport In directory sfp-cvsdas-4.v30.ch3.sourceforge.com:/tmp/cvs-serv13145 Removed Files: grprefs.h Log Message: Version 1.25g --- grprefs.h DELETED --- |
From: Mapi B. <ma...@us...> - 2009-12-24 17:15:25
|
Update of /cvsroot/easycalc/PPCport/system - UI In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv21460 Modified Files: EasyCalc.cpp Log Message: 1.25f, full skin support Index: EasyCalc.cpp =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalc.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** EasyCalc.cpp 24 Dec 2009 16:40:25 -0000 1.10 --- EasyCalc.cpp 24 Dec 2009 17:15:16 -0000 1.11 *************** *** 2161,2166 **** // Set chosen language, and tell WndProc to modify menus // and propSheets accordingly. ! new_lang = (TCHAR *) libLang->getLangByIndex(cur_sel); // Force "const" off ! screen_redraw = true; processed = TRUE; break; --- 2161,2168 ---- // Set chosen language, and tell WndProc to modify menus // and propSheets accordingly. ! if (cur_sel != CB_ERR) { ! new_lang = (TCHAR *) libLang->getLangByIndex(cur_sel); // Force "const" off ! screen_redraw = true; ! } processed = TRUE; break; *************** *** 2298,2302 **** if (state->skinName[i][0] != 0) { TCHAR numText[2]; ! numText[0] = _T('0'+i); numText[1] = 0; SendMessage(hWnd, CB_ADDSTRING, (WPARAM) 0, (LPARAM) numText); --- 2300,2304 ---- if (state->skinName[i][0] != 0) { TCHAR numText[2]; ! numText[0] = _T('1'+i); numText[1] = 0; SendMessage(hWnd, CB_ADDSTRING, (WPARAM) 0, (LPARAM) numText); *************** *** 2338,2342 **** case CBN_CLOSEUP: int numSel = SendMessage(hWnd, CB_GETCURSEL, (WPARAM) 0, (LPARAM) 0); ! for (int i=0 ; i<3 ; i++) { if (state->skinName[i][0] != 0) { if (numSel-- == 0) { --- 2340,2344 ---- case CBN_CLOSEUP: int numSel = SendMessage(hWnd, CB_GETCURSEL, (WPARAM) 0, (LPARAM) 0); ! for (int i=0 ; i<NB_SKINS ; i++) { if (state->skinName[i][0] != 0) { if (numSel-- == 0) { *************** *** 2352,2355 **** --- 2354,2393 ---- } break; + case IDC_COMBO_SKIN1: + switch (notify_msg) { + case CBN_CLOSEUP: + int numSel = SendMessage(hWnd, CB_GETCURSEL, (WPARAM) 0, (LPARAM) 0); + if (numSel != CB_ERR) { + SendMessage(hWnd, CB_GETLBTEXT, (WPARAM) numSel, (LPARAM) state->skinName[0]); + screen_redraw = true; + } + processed = TRUE; + break; + } + break; + case IDC_COMBO_SKIN2: + switch (notify_msg) { + case CBN_CLOSEUP: + int numSel = SendMessage(hWnd, CB_GETCURSEL, (WPARAM) 0, (LPARAM) 0); + if (numSel != CB_ERR) { + SendMessage(hWnd, CB_GETLBTEXT, (WPARAM) numSel, (LPARAM) state->skinName[1]); + screen_redraw = true; + } + processed = TRUE; + break; + } + break; + case IDC_COMBO_SKIN3: + switch (notify_msg) { + case CBN_CLOSEUP: + int numSel = SendMessage(hWnd, CB_GETCURSEL, (WPARAM) 0, (LPARAM) 0); + if (numSel != CB_ERR) { + SendMessage(hWnd, CB_GETLBTEXT, (WPARAM) numSel, (LPARAM) state->skinName[2]); + screen_redraw = true; + } + processed = TRUE; + break; + } + break; } } |
From: Mapi B. <ma...@us...> - 2009-12-24 17:15:08
|
Update of /cvsroot/easycalc/PPCport In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv21409 Modified Files: EasyCalc.vcproj.CLIENT5.Admin.user Log Message: 1.25f, full skin support Index: EasyCalc.vcproj.CLIENT5.Admin.user =================================================================== RCS file: /cvsroot/easycalc/PPCport/EasyCalc.vcproj.CLIENT5.Admin.user,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** EasyCalc.vcproj.CLIENT5.Admin.user 24 Dec 2009 16:35:28 -0000 1.4 --- EasyCalc.vcproj.CLIENT5.Admin.user 24 Dec 2009 17:14:55 -0000 1.5 *************** *** 69,73 **** /> <DeploymentTool ! DeploymentDevice="87e94862-f623-4aff-a51c-9ac190753a60" /> <DebuggerTool --- 69,73 ---- /> <DeploymentTool ! DeploymentDevice="1f261bf1-9987-41a3-ba3c-ca801816d8f3" /> <DebuggerTool |
From: Mapi B. <ma...@us...> - 2009-12-24 16:41:23
|
Update of /cvsroot/easycalc/PPCport/system - UI In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv17854 Added Files: EasyCalc2.gif EasyCalc2.layout EasyCalc3.gif EasyCalc3.layout Log Message: 1.25f, full skin support --- NEW FILE: EasyCalc2.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: EasyCalc3.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: EasyCalc3.layout --- # EasyCalc standard skin 3 (PocketPC) # Skin rectangle coordinates x1,y1,x2,y2 Skin: 0,0,240,268 # Description of the display area: x1,y1 xscale yscale fg_color bg_color # With xscale = 0, screen width is 216 dots (only value used for now). # Do not touch yscale either for now. Display: 10,13 0 3 a3b39d 0b2327 # Active elements: num x1,y1,l,h (on screen) x1_off,y1_off x1_on,y1_on (in the gif) Annunciator: 1 8,6,22,7 50,268 -1,-1 # Shift indicator (no selection) Annunciator: 2 34,6,16,7 20,268 20,275 # Degree indicator Annunciator: 3 53,6,16,7 35,268 35,275 # Radian indicator Annunciator: 4 72,6,21,7 30,268 30,275 # Gradian indicator Annunciator: 5 97,6,16,7 71,268 71,275 # Decimal indicator Annunciator: 6 116,6,15,7 86,268 86,275 # Octal indicator Annunciator: 7 134,6,13,7 100,268 100,275 # Binary indicator Annunciator: 8 150,6,16,7 112,268 112,275 # Hexadecimal indicator Annunciator: 9 4,16,6,7 155,268 155,275 # Result scroll left indicator Annunciator: 10 227,16,6,7 160,268 160,275 # Result scroll right indicator Annunciator: 11 205,6,6,7 0,268 0,275 # Skin 1 indicator Annunciator: 12 212,6,6,7 5,268 5,275 # Skin 2 indicator Annunciator: 13 219,6,6,7 10,268 10,275 # Skin 3 indicator Annunciator: 14 226,6,6,7 15,268 15,275 # Graph indicator Annunciator: 15 170,6,7,7 139,268 139,275 # Var list indicator Annunciator: 16 178,6,6,7 145,268 145,275 # User fct list indicator Annunciator: 17 185,6,6,7 150,268 150,275 # Calc fct list indicator Annunciator: 18 226,26,7,7 127,268 127,275 # Result Menu indicator Annunciator: 19 226,34,7,7 133,268 133,275 # History Menu indicator # Keys on the calculator gif: # num[, shifted_num] x1_sel,y1_sel,l_sel,h_sel (selection zone) x1_off,y1_off,l,h x1_on,y1_on # with num and shifted_num as follows: # -5 -> shift // Note: practice is to put -4,-4 to ensure the same shift key can toggle on/off the shift state # -4 -> dot // decimal dot # -3 -> EXE // run evaluation # -2 -> bckspc // back space. Note: if accessed through shift, will leave shift on to be able to do several in a row # -1 -> clr // clear input and result fields # 0 -> 0,"0" # 1 -> 1,"1" # 2 -> 2,"2" # 3 -> 3,"3" # 4 -> 4,"4" # 5 -> 5,"5" # 6 -> 6,"6" # 7 -> 7,"7" # 8 -> 8,"8" # 9 -> 9,"9" # 10 -> A,"A" # 11 -> B,"B" # 12 -> C,"C" # 13 -> D,"D" # 14 -> E,"E" # 15 -> F,"F" # 16 -> And,"&" # 17 -> Or,"|" # 18 -> Xor,"^" # 19 -> Shl,"<<" # 20 -> Shr,">>" # 21 -> Plus,"+" # 22 -> Minus,"-" # 23 -> Neg,"-" # 24 -> Mult,"*" # 25 -> Divide,"/" # 26 -> Ans,"ans" # 27 -> OpBr,"(" # 28 -> Pow,"^" # 29 -> Log,"log" # 30 -> Ln,"ln" # 31 -> Inv,"^(-1)" # 32 -> Sq1,"^(1/" # 33 -> Sqr,"^2" # 34 -> Sqrt,"sqrt" # 35 -> Sin,"sin" # 36 -> Cos,"cos" # 37 -> Tan,"tan" # 38 -> Exp,"exp" # 39 -> Pi,"pi" # 40 -> Degrees,"°" # 41 -> Minutes,"'" # 42 -> Magnitude,"abs" # 43 -> Angle,"angle" # 44 -> complex_i,"i" # 45 -> e,"e" # 46 -> Coln,":" # 47 -> ClBr,")" # 48 -> EE,"E" # 49 -> asin # 50 -> acos # 51 -> atan # 52 -> sinh # 53 -> cosh # 54 -> tanh # 55 -> asinh # 56 -> acosh # 57 -> atanh # 58 -> 10^ # 59 -> log2 # 60 -> 2^ # 61 -> fact # 62 -> ncr # 63 -> npr # 64 -> round # 65 -> trunc # 66 -> ceil # 67 -> floor # 68 -> gamma # 69 -> beta # 70 -> rand # 71 -> fsimps # 72 -> real # 73 -> imag # 74 -> conj # 75 -> exp(i* # 76 -> fzero # 77 -> fvalue # 78 -> fmin # 79 -> fmax # 80 -> fd_dx // d/dx # 81 -> fromberg // integ # 82 -> fd2_dx // d2/dx # 83 -> ()=" # 84 -> " # 85 -> x # 86 -> list # 87 -> median # 88 -> mean # 89 -> sum # 90 -> lmin // min # 91 -> lmax // max # 92 -> prod # 93 -> variance # 94 -> stddev # 95 -> dim # 96 -> [ # 97 -> matrix # 98 -> identity # 99 -> det # 100 -> qrs # 101 -> rref # 102 -> qrq # 103 -> qrr # 104 -> fintersect # 105 -> ] # 106 -> qBinomial # 107 -> qBeta # 108 -> qChiSq # 109 -> qF # 110 -> qPoisson # 111 -> qStudentt # 112 -> qWeibull # 113 -> qNormal # 114 -> range # 115 -> rNorm # 116 -> find # 117 -> sample # 118 -> filter # 119 -> conv # 120 -> fft # 121 -> ifft # 122 -> prevprime # 123 -> isprime # 124 -> nextprime # 125 -> gcd # 126 -> lcm # 127 -> phi # 128 -> gcdex # 129 -> chinese # 130 -> modinv # 131 -> modpow # 132 -> factor # 133 -> besseli # 134 -> besselj # 135 -> besselk # 136 -> bessely # 137 -> ellc1 # 138 -> ellc2 # 139 -> elli1 # 140 -> elli2 # 141 -> euler # 142 -> cn # 143 -> dn # 144 -> sn # 145 -> igamma # 146 -> ibeta # 147 -> erf # 148 -> erfc # 149 -> = # 150 -> Inf // Infinity constant # 151 -> % // modulo operator # 152 -> complex_j,"j" # 153 -> // Speed of light in vacuum (m s-1) c=299792458 # 154 -> // Newtonian constant of gravitation (m3 kg-1 s-2) G=6.67428E-11 # 155 -> // Standard gravitational acc. (N kg-1) g=9.80665 # 156 -> // Electron mass (kg) me=9.10938215E-31 # 157 -> // Proton mass (kg) mp=1.672621637E-27 # 158 -> // Neutron mass (kg) mn=1.67492729E-27 # 159 -> // Unified Atomic mass unit (kg) u=1.660538782E-27 # 160 -> // Planck constant (J s) h=6.62606896-34 # 161 -> // Boltzmann constant (J K-1) k=1.380 6504-23 # 162 -> // Magnetic permeability - vacuum (magnetic constant) (H m-1) µ0=1.2566370614E-6 # 163 -> // Dielectric permittivity (electric constant) (F m-1) e0=8.854187817E-12 # 164 -> // Fine structure constant alpha=7.2973525376E-3 # 165 -> // Rydberg constant (m-1) Rinf=10973731.568527 # 166 -> // Classical electron radius (m) re=2.8179402894E-15 # 167 -> // Bohr radius (m) a0=5.2917720859E-11 # 168 -> // Fluxoid quantum (magnetic flux quantum) (W b) phi0=2.067833667E-15 # 169 -> // Bohr magneton (J T-1) µb=9.27400915E-24 # 170 -> // Electron magnetic moment (J T-1) µe=-9.28476377E-24 # 171 -> // Nuclear magneton (J T-1) µN=5.05078324E-27 # 172 -> // Proton magnetic moment (J T-1) µp=1.410606662E-26 # 173 -> // Neutron magnetic moment (J T-1) µn=-9.6623641E-27 # 174 -> // Compton wavelength (electron) (m) lc=2.4263102175E-12 # 175 -> // Compton wavelength (proton) (m) lcp=1.3214098446E-15 # 176 -> // Stefan-Boltzmann constant (W m-2 K-4) sigma=5.670400E-8 # 177 -> // Avogadro's constant (mol-1) Na=6.02214179E+23 # 178 -> // Ideal gas volume at STP (m3 mol-1) Vm=2.2413996E-2 # 179 -> // Universal molar gas constant (J mol-1 K-1) R=8.314472 # 180 -> // Electron charge (elementary charge) (C) e=1.602176487E-19 # 181 -> // Faraday constant (C mol-1) F=96485.3399 # 182 -> // Quantum Hall resistance = von Klitzing constant (Ohm) Rk=25812.807 # 183 -> >= # 184 -> <= # 185 -> == # 186 -> ; # # 1st row # shift atanh fmin <= x CLR # shift tanh fmax >= ()=" bckspc key: -5,-5 6,70,32,22 11,75,22,12 11,74 key: 54,57 45,70,32,22 50,75,22,12 50,74 key: 79,78 84,70,32,22 89,75,22,12 89,74 Key: 183,184 123,70,32,22 128,75,22,12 128,74 Key: 83,85 162,70,32,22 167,75,22,12 167,74 Key: -2,-1 201,70,32,22 206,75,22,12 206,74 # 2nd row # asinh acosh fvalue f"(x) Simpson # sinh cosh fzero == f'(x) Romberg Key: 52,55 6,97,32,22 11,102,22,12 11,101 Key: 53,56 45,97,32,22 50,102,22,12 50,101 Key: 76,77 84,97,32,22 89,102,22,12 89,101 Key: 185 123,97,32,22 128,102,22,12 128,101 Key: 80,82 162,97,32,22 167,102,22,12 167,101 Key: 81,71 201,97,32,22 206,102,22,12 206,101 # 3rd row # bessely besselk elli1 elli2 dn # besselj besseli ellc1 ellc2 sn cn Key: 134,136 6,124,40,29 11,129,30,19 11,128 Key: 133,135 45,124,40,29 50,129,30,19 50,128 Key: 137,139 84,124,40,29 89,129,30,19 89,128 Key: 138,140 123,124,40,29 128,129,30,19 128,128 Key: 144 162,124,32,22 167,129,22,12 167,128 Key: 142,143 201,124,32,22 206,129,22,12 206,128 # 4th row # igamma ibeta erfc c G # gamma beta erf euler_gamma g " Key: 68,145 6,153,40,29 11,158,30,19 11,157 Key: 69,146 45,153,40,29 50,158,30,19 50,157 Key: 147,148 84,153,40,29 89,158,30,19 89,157 Key: 141,153 123,153,40,29 128,158,30,19 128,157 Key: 155,154 162,153,32,22 167,158,22,12 167,157 Key: 84 201,149,32,22 206,154,22,12 206,153 # 5th row # me mn k e0 Rinf ; # u mp h µ0 alpha : Key: 159,156 6,183,40,29 11,188,30,19 11,187 Key: 157,158 45,183,40,29 50,188,30,19 50,187 Key: 160,161 84,183,40,29 89,188,30,19 89,187 Key: 162,163 123,183,40,29 128,188,30,19 128,187 Key: 164,165 162,183,40,29 167,188,30,19 167,187 Key: 46,186 201,174,40,29 206,179,30,19 206,178 # 6th row # re µe µn µb sigma # a0 µN µp phi0 Na Ans Key: 167,166 6,212,40,29 11,217,30,19 11,216 Key: 171,170 45,212,40,29 50,217,30,19 50,216 Key: 172,173 84,212,40,29 89,217,30,19 89,216 Key: 168,169 123,212,40,29 128,217,30,19 128,216 Key: 177,176 162,212,40,29 167,217,30,19 167,216 Key: 26 196,199,40,29 201,204,30,19 201,203 # 7th row # lc = # lcp e F Rk Vm Exe Key: 175,174 6,242,40,29 11,247,30,19 11,246 Key: 180 45,242,40,29 50,247,30,19 50,246 Key: 181 84,242,40,29 89,247,30,19 89,246 Key: 182 123,242,40,29 128,247,30,19 128,246 Key: 178 162,242,40,29 167,247,30,19 167,246 Key: -3,149 196,236,40,29 201,241,30,19 201,240 --- NEW FILE: EasyCalc2.layout --- # EasyCalc standard skin 2 (PocketPC) # Skin rectangle coordinates x1,y1,x2,y2 Skin: 0,0,240,268 # Description of the display area: x1,y1 xscale yscale fg_color bg_color # With xscale = 0, screen width is 216 dots (only value used for now). # Do not touch yscale either for now. Display: 10,13 0 3 a3b39d 0b2327 # Active elements: num x1,y1,l,h (on screen) x1_off,y1_off x1_on,y1_on (in the gif) Annunciator: 1 8,6,22,7 50,268 -1,-1 # Shift indicator (no selection) Annunciator: 2 34,6,16,7 20,268 20,275 # Degree indicator Annunciator: 3 53,6,16,7 35,268 35,275 # Radian indicator Annunciator: 4 72,6,21,7 30,268 30,275 # Gradian indicator Annunciator: 5 97,6,16,7 71,268 71,275 # Decimal indicator Annunciator: 6 116,6,15,7 86,268 86,275 # Octal indicator Annunciator: 7 134,6,13,7 100,268 100,275 # Binary indicator Annunciator: 8 150,6,16,7 112,268 112,275 # Hexadecimal indicator Annunciator: 9 4,16,6,7 155,268 155,275 # Result scroll left indicator Annunciator: 10 227,16,6,7 160,268 160,275 # Result scroll right indicator Annunciator: 11 205,6,6,7 0,268 0,275 # Skin 1 indicator Annunciator: 12 212,6,6,7 5,268 5,275 # Skin 2 indicator Annunciator: 13 219,6,6,7 10,268 10,275 # Skin 3 indicator Annunciator: 14 226,6,6,7 15,268 15,275 # Graph indicator Annunciator: 15 170,6,7,7 139,268 139,275 # Var list indicator Annunciator: 16 178,6,6,7 145,268 145,275 # User fct list indicator Annunciator: 17 185,6,6,7 150,268 150,275 # Calc fct list indicator Annunciator: 18 226,26,7,7 127,268 127,275 # Result Menu indicator Annunciator: 19 226,34,7,7 133,268 133,275 # History Menu indicator # Keys on the calculator gif: # num[, shifted_num] x1_sel,y1_sel,l_sel,h_sel (selection zone) x1_off,y1_off,l,h x1_on,y1_on # with num and shifted_num as follows: # -5 -> shift // Note: practice is to put -4,-4 to ensure the same shift key can toggle on/off the shift state # -4 -> dot // decimal dot # -3 -> EXE // run evaluation # -2 -> bckspc // back space. Note: if accessed through shift, will leave shift on to be able to do several in a row # -1 -> clr // clear input and result fields # 0 -> 0,"0" # 1 -> 1,"1" # 2 -> 2,"2" # 3 -> 3,"3" # 4 -> 4,"4" # 5 -> 5,"5" # 6 -> 6,"6" # 7 -> 7,"7" # 8 -> 8,"8" # 9 -> 9,"9" # 10 -> A,"A" # 11 -> B,"B" # 12 -> C,"C" # 13 -> D,"D" # 14 -> E,"E" # 15 -> F,"F" # 16 -> And,"&" # 17 -> Or,"|" # 18 -> Xor,"^" # 19 -> Shl,"<<" # 20 -> Shr,">>" # 21 -> Plus,"+" # 22 -> Minus,"-" # 23 -> Neg,"-" # 24 -> Mult,"*" # 25 -> Divide,"/" # 26 -> Ans,"ans" # 27 -> OpBr,"(" # 28 -> Pow,"^" # 29 -> Log,"log" # 30 -> Ln,"ln" # 31 -> Inv,"^(-1)" # 32 -> Sq1,"^(1/" # 33 -> Sqr,"^2" # 34 -> Sqrt,"sqrt" # 35 -> Sin,"sin" # 36 -> Cos,"cos" # 37 -> Tan,"tan" # 38 -> Exp,"exp" # 39 -> Pi,"pi" # 40 -> Degrees,"°" # 41 -> Minutes,"'" # 42 -> Magnitude,"abs" # 43 -> Angle,"angle" # 44 -> complex_i,"i" # 45 -> e,"e" # 46 -> Coln,":" # 47 -> ClBr,")" # 48 -> EE,"E" # 49 -> asin # 50 -> acos # 51 -> atan # 52 -> sinh # 53 -> cosh # 54 -> tanh # 55 -> asinh # 56 -> acosh # 57 -> atanh # 58 -> 10^ # 59 -> log2 # 60 -> 2^ # 61 -> fact # 62 -> ncr # 63 -> npr # 64 -> round # 65 -> trunc # 66 -> ceil # 67 -> floor # 68 -> gamma # 69 -> beta # 70 -> rand # 71 -> fsimps # 72 -> real # 73 -> imag # 74 -> conj # 75 -> exp(i* # 76 -> fzero # 77 -> fvalue # 78 -> fmin # 79 -> fmax # 80 -> fd_dx // d/dx # 81 -> fromberg // integ # 82 -> fd2_dx // d2/dx # 83 -> ()=" # 84 -> " # 85 -> x # 86 -> list # 87 -> median # 88 -> mean # 89 -> sum # 90 -> lmin // min # 91 -> lmax // max # 92 -> prod # 93 -> variance # 94 -> stddev # 95 -> dim # 96 -> [ # 97 -> matrix # 98 -> identity # 99 -> det # 100 -> qrs # 101 -> rref # 102 -> qrq # 103 -> qrr # 104 -> fintersect # 105 -> ] # 106 -> qBinomial # 107 -> qBeta # 108 -> qChiSq # 109 -> qF # 110 -> qPoisson # 111 -> qStudentt # 112 -> qWeibull # 113 -> qNormal # 114 -> range # 115 -> rNorm # 116 -> find # 117 -> sample # 118 -> filter # 119 -> conv # 120 -> fft # 121 -> ifft # 122 -> prevprime # 123 -> isprime # 124 -> nextprime # 125 -> gcd # 126 -> lcm # 127 -> phi # 128 -> gcdex # 129 -> chinese # 130 -> modinv # 131 -> modpow # 132 -> factor # 133 -> besseli # 134 -> besselj # 135 -> besselk # 136 -> bessely # 137 -> ellc1 # 138 -> ellc2 # 139 -> elli1 # 140 -> elli2 # 141 -> euler # 142 -> cn # 143 -> dn # 144 -> sn # 145 -> igamma # 146 -> ibeta # 147 -> erf # 148 -> erfc # 149 -> = # 150 -> Inf // Infinity constant # 151 -> % // modulo operator # 152 -> complex_j,"j" # 153 -> // Speed of light in vacuum (m s-1) c=299792458 # 154 -> // Newtonian constant of gravitation (m3 kg-1 s-2) G=6.67428E-11 # 155 -> // Standard gravitational acc. (N kg-1) g=9.80665 # 156 -> // Electron mass (kg) me=9.10938215E-31 # 157 -> // Proton mass (kg) mp=1.672621637E-27 # 158 -> // Neutron mass (kg) mn=1.67492729E-27 # 159 -> // Unified Atomic mass unit (kg) u=1.660538782E-27 # 160 -> // Planck constant (J s) h=6.62606896-34 # 161 -> // Boltzmann constant (J K-1) k=1.380 6504-23 # 162 -> // Magnetic permeability - vacuum (magnetic constant) (H m-1) µ0=1.2566370614E-6 # 163 -> // Dielectric permittivity (electric constant) (F m-1) e0=8.854187817E-12 # 164 -> // Fine structure constant alpha=7.2973525376E-3 # 165 -> // Rydberg constant (m-1) Rinf=10973731.568527 # 166 -> // Classical electron radius (m) re=2.8179402894E-15 # 167 -> // Bohr radius (m) a0=5.2917720859E-11 # 168 -> // Fluxoid quantum (magnetic flux quantum) (W b) phi0=2.067833667E-15 # 169 -> // Bohr magneton (J T-1) µb=9.27400915E-24 # 170 -> // Electron magnetic moment (J T-1) µe=-9.28476377E-24 # 171 -> // Nuclear magneton (J T-1) µN=5.05078324E-27 # 172 -> // Proton magnetic moment (J T-1) µp=1.410606662E-26 # 173 -> // Neutron magnetic moment (J T-1) µn=-9.6623641E-27 # 174 -> // Compton wavelength (electron) (m) lc=2.4263102175E-12 # 175 -> // Compton wavelength (proton) (m) lcp=1.3214098446E-15 # 176 -> // Stefan-Boltzmann constant (W m-2 K-4) sigma=5.670400E-8 # 177 -> // Avogadro's constant (mol-1) Na=6.02214179E+23 # 178 -> // Ideal gas volume at STP (m3 mol-1) Vm=2.2413996E-2 # 179 -> // Universal molar gas constant (J mol-1 K-1) R=8.314472 # 180 -> // Electron charge (elementary charge) (C) e=1.602176487E-19 # 181 -> // Faraday constant (C mol-1) F=96485.3399 # 182 -> // Quantum Hall resistance = von Klitzing constant (Ohm) Rk=25812.807 # 183 -> >= # 184 -> <= # 185 -> == # 186 -> ; # # 1st row # shift isprime CLR # shift % n! angle & bckspc key: -5,-5 6,70,32,22 11,75,22,12 11,74 key: 151,123 45,70,32,22 50,75,22,12 50,74 key: 61 84,70,32,22 89,75,22,12 89,74 Key: 43 123,70,32,22 128,75,22,12 128,74 Key: 16 162,70,32,22 167,75,22,12 167,74 Key: -2,-1 201,70,32,22 206,75,22,12 206,74 # 2nd row # gcdex nextprime C(r,n)=ncr '(conjugate) ^(xor) >> # factor prevprime A(r,n)=npr j |(or) << Key: 132,128 6,97,32,22 11,102,22,12 11,101 Key: 122,124 45,97,32,22 50,102,22,12 50,101 Key: 63,62 84,97,32,22 89,102,22,12 89,101 Key: 152,41 123,97,32,22 128,102,22,12 128,101 Key: 17,18 162,97,32,22 167,102,22,12 167,101 Key: 19,20 201,97,32,22 206,102,22,12 206,101 # 3rd row # lcm phi modinv trunc ceil # gcd chinese modpow round floor [ Key: 125,126 6,124,40,29 11,129,30,19 11,128 Key: 129,127 45,124,40,29 50,129,30,19 50,128 Key: 131,130 84,124,40,29 89,129,30,19 89,128 Key: 64,65 123,124,40,29 128,129,30,19 128,128 Key: 67,66 162,124,32,22 167,129,22,12 167,128 Key: 96 201,124,32,22 206,129,22,12 206,128 # 4th row # qF qWeibull qStudentt qPoisson rnorm # qBinomial qBeta qChiSq qNormal rand ] Key: 106,109 6,154,40,29 11,159,30,19 11,158 Key: 107,112 45,154,40,29 50,159,30,19 50,158 Key: 108,111 84,154,40,29 89,159,30,19 89,158 Key: 113,110 123,154,40,29 128,159,30,19 128,158 Key: 70,115 162,154,32,22 167,159,22,12 167,158 Key: 105 201,149,32,22 206,154,22,12 206,153 # 5th row # matrix median prod lmin stddev # list mean sum lmax variance ] Key: 86,97 6,183,40,29 11,188,30,19 11,187 Key: 88,87 45,183,40,29 50,188,30,19 50,187 Key: 89,92 84,183,40,29 89,188,30,19 89,187 Key: 91,90 123,183,40,29 128,188,30,19 128,187 Key: 93,94 162,183,40,29 167,188,30,19 167,187 Key: 46 201,174,40,29 206,179,30,19 206,178 # 6th row # det qrs qrr '(orthogonal) # identity rref qrq 1/x dim Ans Key: 98,99 6,212,40,29 11,217,30,19 11,216 Key: 101,100 45,212,40,29 50,217,30,19 50,216 Key: 102,103 84,212,40,29 89,217,30,19 89,216 Key: 31,41 123,212,40,29 128,217,30,19 128,216 Key: 95 162,212,40,29 167,217,30,19 167,216 Key: 26 196,199,40,29 201,204,30,19 201,203 # 7th row # sample ifft = # range find filter conv fft Exe Key: 114 6,242,40,29 11,247,30,19 11,246 Key: 116,117 45,242,40,29 50,247,30,19 50,246 Key: 118 84,242,40,29 89,247,30,19 89,246 Key: 119 123,242,40,29 128,247,30,19 128,246 Key: 120,121 162,242,40,29 167,247,30,19 167,246 Key: -3,149 196,236,40,29 201,241,30,19 201,240 |
From: Mapi B. <ma...@us...> - 2009-12-24 16:40:35
|
Update of /cvsroot/easycalc/PPCport/system - UI In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv17761 Modified Files: EasyCalc.cpp EasyCalc.gif EasyCalc.h EasyCalc.layout EasyCalcppc.aps EasyCalcppc.rc resourceppc.h Skin.cpp Skin.h StateManager.cpp StateManager.h Log Message: 1.25f, full skin support Index: EasyCalc.layout =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalc.layout,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** EasyCalc.layout 16 Nov 2009 22:18:41 -0000 1.9 --- EasyCalc.layout 24 Dec 2009 16:40:25 -0000 1.10 *************** *** 76,246 **** # 37 -> Tan,"tan" # 38 -> Exp,"exp" ! # 39 -> Fact,"fact" ! # 40 -> Pi,"pi" ! # 41 -> Degrees,"°" ! # 42 -> Minutes,"'" ! # 43 -> Magnitude,"abs" ! # 44 -> Angle,"angle" ! # 45 -> complex_i,"i" ! # 46 -> e,"e" ! # 47 -> Coln,":" ! # 48 -> ClBr,")" ! # 49 -> EE,"E" ! # 50 -> asin ! # 51 -> acos ! # 52 -> atan ! # 53 -> sinh ! # 54 -> cosh ! # 55 -> tanh ! # 56 -> asinh ! # 57 -> acosh ! # 58 -> atanh ! # 59 -> log ! # 60 -> 10^ ! # 61 -> log2 ! # 62 -> 2^ ! # 63 -> fact ! # 64 -> ncr ! # 65 -> npr ! # 66 -> round ! # 67 -> trunc ! # 68 -> ceil ! # 69 -> floor ! # 70 -> gamma ! # 71 -> beta ! # 72 -> rand ! # 73 -> rNorm ! # 74 -> real ! # 75 -> imag ! # 76 -> conj ! # 77 -> exp(i* ! # 78 -> fzero ! # 79 -> fvalue ! # 80 -> fmin ! # 81 -> fmax ! # 82 -> fd_dx // d/dx ! # 83 -> fromberg // integ ! # 84 -> fd2_dx // d2/dx ! # 85 -> ()=" ! # 86 -> " ! # 87 -> x ! # 88 -> list ! # 89 -> median ! # 90 -> mean ! # 91 -> sum ! # 92 -> lmin // min ! # 93 -> lmax // max ! # 94 -> prod ! # 95 -> variance ! # 96 -> stddev ! # 97 -> dim ! # 98 -> [ ! # 99 -> matrix ! # 100 -> identity ! # 101 -> det ! # 102 -> qrs ! # 103 -> rref ! # 104 -> qrq ! # 105 -> qrr ! # 106 -> [ // x[] ! # 107 -> ] ! # 108 -> qBinomial ! # 109 -> qBeta ! # 110 -> qChiSq ! # 111 -> qF ! # 112 -> qPoisson ! # 113 -> qStudentt ! # 114 -> qWeibull ! # 115 -> qNormal ! # 116 -> range ! # 117 -> rNorm ! # 118 -> find ! # 119 -> sample ! # 120 -> filter ! # 121 -> conv ! # 122 -> fft ! # 123 -> ifft ! # 124 -> prevprime ! # 125 -> isprime ! # 126 -> nextprime ! # 127 -> gcd ! # 128 -> lcm ! # 129 -> phi ! # 130 -> gcdex ! # 131 -> chinese ! # 132 -> modinv ! # 133 -> modpow ! # 134 -> factor ! # 135 -> besseli ! # 136 -> besselj ! # 137 -> besselk ! # 138 -> bessely ! # 139 -> ellc1 ! # 140 -> ellc2 ! # 141 -> elli1 ! # 142 -> elli2 ! # 143 -> euler ! # 144 -> cn ! # 145 -> dn ! # 146 -> sn ! # 147 -> igamma ! # 148 -> ibeta ! # 149 -> erf ! # 150 -> erfc ! # 151 -> = ! # 152 -> Inf // Infinity constant # # 1st row # shift sqr x_pow_y abs z_conj CLR # shift sqrt sqrt_yth real imag bckspc ! key: -5,-5 6,70,32,22 11,75,22,12 11,74 ! key: 34,33 45,70,32,22 50,75,22,12 50,74 ! key: 32,28 84,70,32,22 89,75,22,12 89,74 ! Key: 74,43 123,70,32,22 128,75,22,12 128,74 ! Key: 75,76 162,70,32,22 167,75,22,12 167,74 ! Key: -2,-1 201,70,32,22 206,75,22,12 206,74 # 2nd row # e^(ix) 2^x e^x 10^x [ ] # EE log2 ln log ( ) ! Key: 49,77 6,97,32,22 11,102,22,12 11,101 ! Key: 61,62 45,97,32,22 50,102,22,12 50,101 ! Key: 30,38 84,97,32,22 89,102,22,12 89,101 ! Key: 29,60 123,97,32,22 128,102,22,12 128,101 ! Key: 27,98 162,97,32,22 167,102,22,12 167,101 ! Key: 48,107 201,97,32,22 206,102,22,12 206,101 # 3rd row # D E F 1/x atan # 7 8 9 / tan ! Key: 7,13 6,127,40,29 11,132,30,19 11,131 ! Key: 8,14 53,127,40,29 58,132,30,19 58,131 ! Key: 9,15 101,127,40,29 106,132,30,19 106,131 Key: 25,31 148,127,40,29 153,132,30,19 153,131 ! Key: 37,52 201,124,32,22 206,129,22,12 206,128 # 3.5 row # asin # sin ! Key: 35,50 201,149,32,22 206,154,22,12 206,153 # 4th row # A B C ° acos # 4 5 6 * cos ! Key: 4,10 6,163,40,29 11,168,30,19 11,167 ! Key: 5,11 53,163,40,29 58,168,30,19 58,167 ! Key: 6,12 101,163,40,29 106,168,30,19 106,167 ! Key: 24,41 148,163,40,29 153,168,30,19 153,167 ! Key: 36,51 201,174,32,22 201,179,22,12 201,178 # 5th row # i e pi ' # 1 2 3 - ANS ! Key: 1,45 6,199,40,29 11,204,30,19 11,203 ! Key: 2,46 53,199,40,29 58,204,30,19 58,203 ! Key: 3,40 101,199,40,29 106,204,30,19 106,203 ! Key: 22,42 148,199,40,29 153,204,30,19 153,203 ! Key: 26 196,199,40,29 201,204,30,19 201,203 # 6th row ! # +Inf x : = # 0 -/+ . + EXE ! Key: 0,152 6,236,40,29 11,241,30,19 11,240 ! Key: 23,87 53,236,40,29 58,241,30,19 58,240 ! Key: -4,47 101,236,40,29 106,241,30,19 106,240 ! Key: 21 148,236,40,29 153,241,30,19 153,240 ! Key: -3,151 196,236,40,29 201,241,30,19 201,240 --- 76,280 ---- # 37 -> Tan,"tan" # 38 -> Exp,"exp" ! # 39 -> Pi,"pi" ! # 40 -> Degrees,"°" ! # 41 -> Minutes,"'" ! # 42 -> Magnitude,"abs" ! # 43 -> Angle,"angle" ! # 44 -> complex_i,"i" ! # 45 -> e,"e" ! # 46 -> Coln,":" ! # 47 -> ClBr,")" ! # 48 -> EE,"E" ! # 49 -> asin ! # 50 -> acos ! # 51 -> atan ! # 52 -> sinh ! # 53 -> cosh ! # 54 -> tanh ! # 55 -> asinh ! # 56 -> acosh ! # 57 -> atanh ! # 58 -> 10^ ! # 59 -> log2 ! # 60 -> 2^ ! # 61 -> fact ! # 62 -> ncr ! # 63 -> npr ! # 64 -> round ! # 65 -> trunc ! # 66 -> ceil ! # 67 -> floor ! # 68 -> gamma ! # 69 -> beta ! # 70 -> rand ! # 71 -> fsimps ! # 72 -> real ! # 73 -> imag ! # 74 -> conj ! # 75 -> exp(i* ! # 76 -> fzero ! # 77 -> fvalue ! # 78 -> fmin ! # 79 -> fmax ! # 80 -> fd_dx // d/dx ! # 81 -> fromberg // integ ! # 82 -> fd2_dx // d2/dx ! # 83 -> ()=" ! # 84 -> " ! # 85 -> x ! # 86 -> list ! # 87 -> median ! # 88 -> mean ! # 89 -> sum ! # 90 -> lmin // min ! # 91 -> lmax // max ! # 92 -> prod ! # 93 -> variance ! # 94 -> stddev ! # 95 -> dim ! # 96 -> [ ! # 97 -> matrix ! # 98 -> identity ! # 99 -> det ! # 100 -> qrs ! # 101 -> rref ! # 102 -> qrq ! # 103 -> qrr ! # 104 -> fintersect ! # 105 -> ] ! # 106 -> qBinomial ! # 107 -> qBeta ! # 108 -> qChiSq ! # 109 -> qF ! # 110 -> qPoisson ! # 111 -> qStudentt ! # 112 -> qWeibull ! # 113 -> qNormal ! # 114 -> range ! # 115 -> rNorm ! # 116 -> find ! # 117 -> sample ! # 118 -> filter ! # 119 -> conv ! # 120 -> fft ! # 121 -> ifft ! # 122 -> prevprime ! # 123 -> isprime ! # 124 -> nextprime ! # 125 -> gcd ! # 126 -> lcm ! # 127 -> phi ! # 128 -> gcdex ! # 129 -> chinese ! # 130 -> modinv ! # 131 -> modpow ! # 132 -> factor ! # 133 -> besseli ! # 134 -> besselj ! # 135 -> besselk ! # 136 -> bessely ! # 137 -> ellc1 ! # 138 -> ellc2 ! # 139 -> elli1 ! # 140 -> elli2 ! # 141 -> euler ! # 142 -> cn ! # 143 -> dn ! # 144 -> sn ! # 145 -> igamma ! # 146 -> ibeta ! # 147 -> erf ! # 148 -> erfc ! # 149 -> = ! # 150 -> Inf // Infinity constant ! # 151 -> % // modulo operator ! # 152 -> complex_j,"j" ! # 153 -> // Speed of light in vacuum (m s-1) c=299792458 ! # 154 -> // Newtonian constant of gravitation (m3 kg-1 s-2) G=6.67428E-11 ! # 155 -> // Standard gravitational acc. (N kg-1) g=9.80665 ! # 156 -> // Electron mass (kg) me=9.10938215E-31 ! # 157 -> // Proton mass (kg) mp=1.672621637E-27 ! # 158 -> // Neutron mass (kg) mn=1.67492729E-27 ! # 159 -> // Unified Atomic mass unit (kg) u=1.660538782E-27 ! # 160 -> // Planck constant (J s) h=6.62606896-34 ! # 161 -> // Boltzmann constant (J K-1) k=1.380 6504-23 ! # 162 -> // Magnetic permeability - vacuum (magnetic constant) (H m-1) µ0=1.2566370614E-6 ! # 163 -> // Dielectric permittivity (electric constant) (F m-1) e0=8.854187817E-12 ! # 164 -> // Fine structure constant alpha=7.2973525376E-3 ! # 165 -> // Rydberg constant (m-1) Rinf=10973731.568527 ! # 166 -> // Classical electron radius (m) re=2.8179402894E-15 ! # 167 -> // Bohr radius (m) a0=5.2917720859E-11 ! # 168 -> // Fluxoid quantum (magnetic flux quantum) (W b) phi0=2.067833667E-15 ! # 169 -> // Bohr magneton (J T-1) µb=9.27400915E-24 ! # 170 -> // Electron magnetic moment (J T-1) µe=-9.28476377E-24 ! # 171 -> // Nuclear magneton (J T-1) µN=5.05078324E-27 ! # 172 -> // Proton magnetic moment (J T-1) µp=1.410606662E-26 ! # 173 -> // Neutron magnetic moment (J T-1) µn=-9.6623641E-27 ! # 174 -> // Compton wavelength (electron) (m) lc=2.4263102175E-12 ! # 175 -> // Compton wavelength (proton) (m) lcp=1.3214098446E-15 ! # 176 -> // Stefan-Boltzmann constant (W m-2 K-4) sigma=5.670400E-8 ! # 177 -> // Avogadro's constant (mol-1) Na=6.02214179E+23 ! # 178 -> // Ideal gas volume at STP (m3 mol-1) Vm=2.2413996E-2 ! # 179 -> // Universal molar gas constant (J mol-1 K-1) R=8.314472 ! # 180 -> // Electron charge (elementary charge) (C) e=1.602176487E-19 ! # 181 -> // Faraday constant (C mol-1) F=96485.3399 ! # 182 -> // Quantum Hall resistance = von Klitzing constant (Ohm) Rk=25812.807 ! # 183 -> >= ! # 184 -> <= ! # 185 -> == ! # 186 -> ; # # 1st row # shift sqr x_pow_y abs z_conj CLR # shift sqrt sqrt_yth real imag bckspc ! key: -5,-5 6,70,32,22 11,75,22,12 11,74 ! key: 34,33 45,70,32,22 50,75,22,12 50,74 ! key: 32,28 84,70,32,22 89,75,22,12 89,74 ! Key: 72,42 123,70,32,22 128,75,22,12 128,74 ! Key: 73,74 162,70,32,22 167,75,22,12 167,74 ! Key: -2,-1 201,70,32,22 206,75,22,12 206,74 # 2nd row # e^(ix) 2^x e^x 10^x [ ] # EE log2 ln log ( ) ! Key: 48,75 6,97,32,22 11,102,22,12 11,101 ! Key: 59,60 45,97,32,22 50,102,22,12 50,101 ! Key: 30,38 84,97,32,22 89,102,22,12 89,101 ! Key: 29,58 123,97,32,22 128,102,22,12 128,101 ! Key: 27,96 162,97,32,22 167,102,22,12 167,101 ! Key: 47,105 201,97,32,22 206,102,22,12 206,101 # 3rd row # D E F 1/x atan # 7 8 9 / tan ! Key: 7,13 6,127,40,29 11,132,30,19 11,131 ! Key: 8,14 53,127,40,29 58,132,30,19 58,131 ! Key: 9,15 101,127,40,29 106,132,30,19 106,131 Key: 25,31 148,127,40,29 153,132,30,19 153,131 ! Key: 37,51 201,124,32,22 206,129,22,12 206,128 # 3.5 row # asin # sin ! Key: 35,49 201,149,32,22 206,154,22,12 206,153 # 4th row # A B C ° acos # 4 5 6 * cos ! Key: 4,10 6,163,40,29 11,168,30,19 11,167 ! Key: 5,11 53,163,40,29 58,168,30,19 58,167 ! Key: 6,12 101,163,40,29 106,168,30,19 106,167 ! Key: 24,40 148,163,40,29 153,168,30,19 153,167 ! Key: 36,50 201,174,32,22 201,179,22,12 201,178 # 5th row # i e pi ' # 1 2 3 - ANS ! Key: 1,44 6,199,40,29 11,204,30,19 11,203 ! Key: 2,45 53,199,40,29 58,204,30,19 58,203 ! Key: 3,39 101,199,40,29 106,204,30,19 106,203 ! Key: 22,41 148,199,40,29 153,204,30,19 153,203 ! Key: 26 196,199,40,29 201,204,30,19 201,203 # 6th row ! # +Inf x : " = # 0 -/+ . + EXE ! Key: 0,150 6,236,40,29 11,241,30,19 11,240 ! Key: 23,85 53,236,40,29 58,241,30,19 58,240 ! Key: -4,46 101,236,40,29 106,241,30,19 106,240 ! Key: 21,84 147,236,40,29 153,241,30,19 153,240 ! Key: -3,149 196,236,40,29 201,241,30,19 201,240 Index: EasyCalc.h =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalc.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** EasyCalc.h 15 Dec 2009 21:39:18 -0000 1.8 --- EasyCalc.h 24 Dec 2009 16:40:25 -0000 1.9 *************** *** 106,110 **** // Version of the state file #define STATE_VERSION_ORIG 1 ! #define STATE_VERSION 3 /* Magic number and version number for the state file. --- 106,110 ---- // Version of the state file #define STATE_VERSION_ORIG 1 ! #define STATE_VERSION 4 /* Magic number and version number for the state file. *************** *** 152,155 **** --- 152,157 ---- extern LibLang *libLang; extern int g_systUserLangId; // Detected language of the system user + extern HWND g_hwndE; // Handle to the edit control input area. + extern void *g_cedit2_obj; // Input area subclassing object. extern StateManager *stateMgr; #endif *************** *** 167,170 **** --- 169,174 ---- void ErrFatalDisplayIf(int cond, TCHAR *msg); + void shell_clBracket(void); + void LstEditSetLabel(int listNb, TCHAR *label); void LstEditSetRow(int rowNb, int value, TCHAR *cell1, TCHAR *cell2, TCHAR *cell3); Index: EasyCalcppc.aps =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalcppc.aps,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 Binary files /tmp/cvsK4Y0Cp and /tmp/cvsPn0JCx differ Index: EasyCalc.cpp =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalc.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** EasyCalc.cpp 15 Dec 2009 21:39:18 -0000 1.9 --- EasyCalc.cpp 24 Dec 2009 16:40:25 -0000 1.10 *************** *** 68,72 **** #define MAX_LOADSTRING 100 ! #define EASYCALC_APPVERSION _T("1.25e") #define WM_APP_ENDVMENU (WM_APP+1) --- 68,72 ---- #define MAX_LOADSTRING 100 ! #define EASYCALC_APPVERSION _T("1.25f") [...1966 lines suppressed...] + if (text[j] == char1) + k++; + else if (text[j] == char2) + k--; + } + + if (k) + goto exit; + else { + cur_skin->select_input_text(NULL, j, j+1); + BrH=1; + BrH_timer = SetTimer(NULL, 0, 400, matchBracket_timeout); + } + } else if (BrH == 1) { + // Restore cursor position + cur_skin->select_input_text(NULL, start, start); + exit: + BrH=0; + } + } Index: Skin.h =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/Skin.h,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** Skin.h 15 Dec 2009 21:39:18 -0000 1.10 --- Skin.h 24 Dec 2009 16:40:25 -0000 1.11 *************** *** 89,93 **** TOGRAD }resSelection; ! #define SELECTION_COUNT 11 #define RESULTAREA_SIZE 128 --- 89,93 ---- TOGRAD }resSelection; ! #define SELECTION_COUNT 13 #define RESULTAREA_SIZE 128 *************** *** 129,146 **** BITMAPINFOHEADER *skin_header; HBITMAP skin_dib; ! unsigned char *disp_bitmap; int disp_bytesperline; bool display_enabled; // Enable or disable screen repaints. - TCHAR dispResult[RESULTAREA_SIZE]; // Contains the result area string - TCHAR work_dispResult[RESULTAREA_SIZE]; // Working area for pow results - int result_len; // Length of the result area string - bool result_pow; // Signals that we are mixing small and big fonts (exponential display) - bool result_size_recompute; // Ask for recalculation of result_size - SIZE result_size; // Result "would-be" size on display without clipping - int scroll_result; // DT_LEFT if scrolled left (left align), DT_RIGHT if scrolled right (right align) TCHAR inputText[INPUTAREA_SIZE]; // Used to get the input area string int pow_pos; // Current position when writing power text. ! void *cedit2_obj; // Input area subclassing object. ! HWND hwndE; // The handle to the edit control input area. bool landscape; --- 129,141 ---- BITMAPINFOHEADER *skin_header; HBITMAP skin_dib; ! unsigned char *disp_bitmap; // Source bitmap to clear display parts ! HBITMAP result_hbitmap; // Handle to bitmap for clearing result int disp_bytesperline; bool display_enabled; // Enable or disable screen repaints. TCHAR inputText[INPUTAREA_SIZE]; // Used to get the input area string int pow_pos; // Current position when writing power text. ! bool result_size_recompute; // Ask for recalculation of result_size ! SIZE result_size; // Result "would-be" size on display without clipping ! TCHAR work_dispResult[RESULTAREA_SIZE]; // Working area for pow results bool landscape; *************** *** 212,214 **** --- 207,211 ---- }; + void skin_init(void); + #endif \ No newline at end of file Index: StateManager.cpp =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/StateManager.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** StateManager.cpp 15 Dec 2009 21:39:18 -0000 1.6 --- StateManager.cpp 24 Dec 2009 16:40:25 -0000 1.7 *************** *** 10,16 **** // Set interface and calculator options to their defaults stateFile = NULL; ! state.skinName[0][0] = 0; ! state.skinName[1][0] = 0; ! state.skinName[2][0] = 0; state.cur_skin_nb = 0; _tcscpy(state.langName, _T("en")); // Language = english by default --- 10,16 ---- // Set interface and calculator options to their defaults stateFile = NULL; ! _tcscpy(state.skinName[0], _T("EasyCalc")); ! _tcscpy(state.skinName[1], _T("EasyCalc2")); ! _tcscpy(state.skinName[2], _T("EasyCalc3")); state.cur_skin_nb = 0; _tcscpy(state.langName, _T("en")); // Language = english by default *************** *** 25,28 **** --- 25,34 ---- StateManager::~StateManager (void) { + if (stateMgrDB != NULL) + delete stateMgrDB; + if (stateMgrHistDB != NULL) + delete stateMgrHistDB; + if (stateMgrSolvDB != NULL) + delete stateMgrSolvDB; } *************** *** 125,128 **** --- 131,138 ---- state.matrixName[0] = _T('\0'); // Fall through migration steps ... + case 1: + case 2: // Versions 2,3 to 4 + _tcscpy(state.skinName[1], _T("EasyCalc2")); + _tcscpy(state.skinName[2], _T("EasyCalc3")); } Index: EasyCalcppc.rc =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalcppc.rc,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** EasyCalcppc.rc 15 Dec 2009 21:39:18 -0000 1.8 --- EasyCalcppc.rc 24 Dec 2009 16:40:25 -0000 1.9 *************** *** 30,38 **** // ! IDD_RES_MENU DIALOG 65, 10, 82, 100 STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_BORDER FONT 8, "MS Shell Dlg" BEGIN ! LISTBOX IDC_LIST_RESM,0,0,82,100,NOT WS_BORDER | WS_VSCROLL | WS_TABSTOP END --- 30,38 ---- // ! IDD_RES_MENU DIALOG 65, 10, 82, 112 STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_BORDER FONT 8, "MS Shell Dlg" BEGIN ! LISTBOX IDC_LIST_RESM,0,0,82,112,NOT WS_BORDER | WS_VSCROLL | WS_TABSTOP END *************** *** 102,110 **** END ! IDD_LARGE_MENU DIALOG 30, 10, 102, 117 STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_BORDER FONT 8, "MS Shell Dlg" BEGIN ! LISTBOX IDC_LIST_LARGE,0,0,102,117,LBS_DISABLENOSCROLL | NOT WS_BORDER | WS_VSCROLL | WS_GROUP | WS_TABSTOP END --- 102,110 ---- END ! IDD_LARGE_MENU DIALOG 30, 10, 102, 112 STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_BORDER FONT 8, "MS Shell Dlg" BEGIN ! LISTBOX IDC_LIST_LARGE,0,0,102,112,LBS_DISABLENOSCROLL | NOT WS_BORDER | WS_VSCROLL | WS_GROUP | WS_TABSTOP END *************** *** 126,138 **** BEGIN LTEXT "Skins",IDC_TITLE,4,3,63,8 ! COMBOBOX IDC_COMBO_SKIN1,9,32,48,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP ! COMBOBOX IDC_COMBO_SKIN2,9,51,48,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP ! COMBOBOX IDC_COMBO_SKIN3,9,70,48,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP ! LTEXT "Skin 1",IDC_SKIN1,62,34,39,10 ! LTEXT "Skin 2",IDC_SKIN2,62,53,39,10 ! LTEXT "Skin 3",IDC_SKIN3,62,72,39,10 ! COMBOBOX IDC_SKINVAL,72,87,21,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP ! LTEXT "Default skin",IDC_SKIN,10,90,58,8 ! CONTROL "SIP1",IDC_SIP,"SIPPREF",NOT WS_VISIBLE,121,85,14,14 END --- 126,138 ---- BEGIN LTEXT "Skins",IDC_TITLE,4,3,63,8 ! COMBOBOX IDC_COMBO_SKIN1,9,18,70,80,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP ! COMBOBOX IDC_COMBO_SKIN2,9,37,70,80,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP ! COMBOBOX IDC_COMBO_SKIN3,9,56,70,80,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP ! LTEXT "Skin 1",IDC_SKIN1,84,20,39,10 ! LTEXT "Skin 2",IDC_SKIN2,84,39,39,10 ! LTEXT "Skin 3",IDC_SKIN3,84,58,39,10 ! COMBOBOX IDC_SKINVAL,72,73,21,40,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP ! LTEXT "Current skin",IDC_SKIN,10,76,58,8 ! CONTROL "SIP1",IDC_SIP,"SIPPREF",NOT WS_VISIBLE,121,71,14,14 END *************** *** 166,174 **** END ! IDD_SLIM_MENU DIALOG 40, 10, 72, 117 STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_BORDER FONT 8, "MS Shell Dlg" BEGIN ! LISTBOX IDC_LIST_SLIM,0,0,72,117,LBS_DISABLENOSCROLL | NOT WS_BORDER | WS_VSCROLL | WS_GROUP | WS_TABSTOP END --- 166,174 ---- END ! IDD_SLIM_MENU DIALOG 40, 10, 72, 112 STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_BORDER FONT 8, "MS Shell Dlg" BEGIN ! LISTBOX IDC_LIST_SLIM,0,0,72,112,LBS_DISABLENOSCROLL | NOT WS_BORDER | WS_VSCROLL | WS_GROUP | WS_TABSTOP END *************** *** 340,343 **** --- 340,348 ---- GUIDELINES DESIGNINFO BEGIN + IDD_RES_MENU, DIALOG + BEGIN + BOTTOMMARGIN, 100 + END + IDD_SOLVER_CONFIG, DIALOG BEGIN *************** *** 371,375 **** IDD_LARGE_MENU, DIALOG BEGIN ! BOTTOMMARGIN, 116 END --- 376,380 ---- IDD_LARGE_MENU, DIALOG BEGIN ! BOTTOMMARGIN, 121 END *************** *** 392,395 **** --- 397,405 ---- END + IDD_SLIM_MENU, DIALOG + BEGIN + BOTTOMMARGIN, 117 + END + IDD_ABOUTBOX, DIALOG BEGIN *************** *** 522,525 **** --- 532,536 ---- BEGIN MENUITEM "About...", IDM_HELP_ABOUT + MENUITEM "Help", IDM_HELP_HELP END END Index: StateManager.h =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/StateManager.h,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** StateManager.h 16 Nov 2009 22:18:41 -0000 1.6 --- StateManager.h 24 Dec 2009 16:40:25 -0000 1.7 *************** *** 11,16 **** #define FILENAMELEN 256 typedef struct { ! TCHAR skinName[3][FILENAMELEN]; TCHAR langName[FILENAMELEN]; int cur_skin_nb; --- 11,19 ---- #define FILENAMELEN 256 + // Number of skins that one can load and access + #define NB_SKINS 3 + typedef struct { ! TCHAR skinName[NB_SKINS][FILENAMELEN]; TCHAR langName[FILENAMELEN]; int cur_skin_nb; Index: EasyCalc.gif =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/EasyCalc.gif,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 Binary files /tmp/cvs9Kgkrv and /tmp/cvszX9RxD differ Index: resourceppc.h =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/resourceppc.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** resourceppc.h 15 Dec 2009 21:39:18 -0000 1.8 --- resourceppc.h 24 Dec 2009 16:40:25 -0000 1.9 *************** *** 140,143 **** --- 140,145 ---- #define ID_Menu 32804 #define IDM_EDIT_DATAMANAGER 32805 + #define ID_HELP_HELP 32806 + #define IDM_HELP_HELP 32807 #define IDM_OK 40000 #define IDM_HELP 40001 *************** *** 154,158 **** #define _APS_NO_MFC 1 #define _APS_NEXT_RESOURCE_VALUE 152 ! #define _APS_NEXT_COMMAND_VALUE 32806 #define _APS_NEXT_CONTROL_VALUE 1145 #define _APS_NEXT_SYMED_VALUE 112 --- 156,160 ---- #define _APS_NO_MFC 1 #define _APS_NEXT_RESOURCE_VALUE 152 ! #define _APS_NEXT_COMMAND_VALUE 32808 #define _APS_NEXT_CONTROL_VALUE 1145 #define _APS_NEXT_SYMED_VALUE 112 Index: Skin.cpp =================================================================== RCS file: /cvsroot/easycalc/PPCport/system - UI/Skin.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** Skin.cpp 15 Dec 2009 21:39:18 -0000 1.10 --- Skin.cpp 24 Dec 2009 16:40:25 -0000 1.11 *************** *** 52,55 **** --- 52,70 ---- static unsigned char *skin_bitmap_data[1]; + static TCHAR g_dispResult[RESULTAREA_SIZE]; // Contains the result area string + static int g_result_len; // Length of the result area string + static bool g_result_pow; // Signals that we are mixing small and big fonts (exponential display) + static int g_scroll_result; // DT_LEFT if scrolled left (left align), DT_RIGHT if scrolled right (right align) + + /*------------------------------------------------------------------------------- + - Initialisation of globals. - + -------------------------------------------------------------------------------*/ + void skin_init (void) { + *g_dispResult = 0; // Empty string + g_result_len = 0; + g_result_pow = false; + g_scroll_result = DT_RIGHT; + } + /*------------------------------------------------------------------------------- - Constructor and destructor. - *************** *** 65,77 **** skin_dib = NULL; disp_bitmap = NULL; keymap = NULL; keymap_length = 0; - *dispResult = 0; // Empty string - result_len = 0; result_size_recompute = true; - result_pow = false; - scroll_result = DT_RIGHT; - cedit2_obj = NULL; - hwndE = NULL; hFontBig_display = hFontSmall_display = hFont_input = NULL; display_enabled = true; --- 80,87 ---- skin_dib = NULL; disp_bitmap = NULL; + result_hbitmap = NULL; keymap = NULL; keymap_length = 0; result_size_recompute = true; hFontBig_display = hFontSmall_display = hFont_input = NULL; display_enabled = true; *************** *** 79,86 **** Skin::~Skin() { ! if (cedit2_obj != NULL) { ! unsubclassEdit(hwndE, cedit2_obj); ! cedit2_obj = NULL; } } --- 89,122 ---- Skin::~Skin() { ! if (keylist != NULL) { ! mfree(keylist); ! keylist = NULL; ! } ! if (skin_header != NULL) { ! mfree(skin_header); ! skin_header = NULL; ! } ! if (disp_bitmap != NULL) { ! mfree(disp_bitmap); ! disp_bitmap = NULL; ! } ! if (skin_dib != NULL) { ! DeleteObject(skin_dib); ! skin_dib = NULL; ! } ! if (skin_bitmap != NULL) { ! mfree(skin_bitmap); ! skin_bitmap = NULL; } + if (result_hbitmap != NULL) { + DeleteObject(result_hbitmap); + result_hbitmap = NULL; + } + if (hFontBig_display != NULL) + DeleteObject(hFontBig_display); + if (hFontSmall_display != NULL) + DeleteObject(hFontSmall_display); + if (hFont_input != NULL) + DeleteObject(hFont_input); } *************** *** 286,296 **** bool prev_landscape = landscape; - // If no skin specified, load the default one. - if (skinname[0] == 0) { - // fallback_on_1st_builtin_skin: - // _tcscpy(skinname, skin_name[0]);_T("%s\\%s.%s") - _tcscpy(skinname, _T("EasyCalc")); - } - /*************************/ /* Load skin description */ --- 322,325 ---- *************** *** 560,565 **** /* (Re)build the display bitmap */ /********************************/ ! if (disp_bitmap != NULL) mfree(disp_bitmap); int lcd_w, lcd_h; --- 589,600 ---- /* (Re)build the display bitmap */ /********************************/ ! if (disp_bitmap != NULL) { mfree(disp_bitmap); + disp_bitmap = NULL; + } + if (result_hbitmap != NULL) { + DeleteObject(result_hbitmap); + result_hbitmap = NULL; + } int lcd_w, lcd_h; *************** *** 579,582 **** --- 614,619 ---- // TODO - handle memory allocation failure memset(disp_bitmap, 255, size); + // Prepare bitmap to clear result area + result_hbitmap = CreateBitmap(display_w, 18 * magnification, 1, 1, disp_bitmap); return (0); *************** *** 628,632 **** skin_height = height; skin_y = 0; ! return skin_bitmap != NULL; } --- 665,669 ---- skin_height = height; skin_y = 0; ! return (skin_bitmap != NULL); } *************** *** 740,744 **** if (skin_type == IMGTYPE_MONO) { skin_dib = CreateBitmap(skin_width, skin_height, 1, 1, skin_bitmap); ! skin_header = NULL; return; } --- 777,782 ---- if (skin_type == IMGTYPE_MONO) { skin_dib = CreateBitmap(skin_width, skin_height, 1, 1, skin_bitmap); ! mfree(skin_bitmap); ! skin_bitmap = NULL; return; } *************** *** 863,867 **** // Not found, search within the keys *skey = -1; ! *ckey = 0; for (i=0 ; i<nkeys ; i++) { SkinKey *k = keylist + i; --- 901,905 ---- // Not found, search within the keys *skey = -1; ! *ckey = KEY_NONE; for (i=0 ; i<nkeys ; i++) { SkinKey *k = keylist + i; *************** *** 1116,1127 **** return; ! HBITMAP bitmap = CreateBitmap(display_w, display_h, 1, 1, disp_bitmap); ! HGDIOBJ oldObject = SelectObject(memdc, bitmap); COLORREF old_bg = SetBkColor(hdc, display_bg); COLORREF old_fg = SetTextColor(hdc, display_fg); ! BitBlt(hdc, display_loc.x, display_loc.y, display_w, display_h, memdc, 0, 0, SRCCOPY); ! DeleteObject(bitmap); ! if (*dispResult != 0) ! if (result_pow) paint_resultpow(hdc); else --- 1154,1163 ---- return; ! HGDIOBJ oldObject = SelectObject(memdc, result_hbitmap); COLORREF old_bg = SetBkColor(hdc, display_bg); COLORREF old_fg = SetTextColor(hdc, display_fg); ! BitBlt(hdc, display_loc.x, display_loc.y, display_w, 18 * magnification, memdc, 0, 0, SRCCOPY); ! if (*g_dispResult != 0) ! if (g_result_pow) paint_resultpow(hdc); else *************** *** 1149,1166 **** void Skin::create_input_area (HWND hWnd_p, HINSTANCE hinst) { DWORD dwStyle = WS_VISIBLE | WS_CHILD | ES_MULTILINE | ES_AUTOVSCROLL | ES_LEFT; ! if (hwndE != NULL) { ! BOOL res = MoveWindow(hwndE, display_loc.x, display_loc.y + 18 * magnification, display_w, 30 * magnification, TRUE); } else { ! // hwndE = CreateWindow(_T("EDIT2"), NULL, dwStyle, ! hwndE = CreateWindow(_T("EDIT"), NULL, dwStyle, ! display_loc.x, display_loc.y + 18 * magnification, ! display_w, 30 * magnification, ! hWnd_p, NULL, hinst, NULL); ! cedit2_obj = subclassEdit(hWnd_p, hwndE); } ! Edit_SetExtendedStyle(hwndE, 0xFFFFFFFF, Edit_GetExtendedStyle(hwndE) | ES_EX_FOCUSBORDERDISABLED); if (hFont_input == NULL) { --- 1185,1202 ---- void Skin::create_input_area (HWND hWnd_p, HINSTANCE hinst) { DWORD dwStyle = WS_VISIBLE | WS_CHILD | ES_MULTILINE | ES_AUTOVSCROLL | ES_LEFT; ! if (g_hwndE != NULL) { ! BOOL res = MoveWindow(g_hwndE, display_loc.x, display_loc.y + 18 * magnification, display_w, 30 * magnification, TRUE); } else { ! // g_hwndE = CreateWindow(_T("EDIT2"), NULL, dwStyle, ! g_hwndE = CreateWindow(_T("EDIT"), NULL, dwStyle, ! display_loc.x, display_loc.y + 18 * magnification, ! display_w, 30 * magnification, ! hWnd_p, NULL, hinst, NULL); ! g_cedit2_obj = subclassEdit(hWnd_p, g_hwndE); } ! Edit_SetExtendedStyle(g_hwndE, 0xFFFFFFFF, Edit_GetExtendedStyle(g_hwndE) | ES_EX_FOCUSBORDERDISABLED); if (hFont_input == NULL) { *************** *** 1173,1184 **** hFont_input = CreateFontIndirect(&lf); } ! long res = SendMessage (hwndE, WM_SETFONT, (WPARAM) hFont_input, (LPARAM) TRUE); // No softline break character when getting the text. ! res = SendMessage (hwndE, EM_FMTLINES, FALSE, 0); //TCHAR buf[100]; ! //int nchar = GetClassName(hwndE, buf, 100); //print_result(hWnd_p, buf); ! SetFocus(hwndE); } --- 1209,1220 ---- hFont_input = CreateFontIndirect(&lf); } ! long res = SendMessage (g_hwndE, WM_SETFONT, (WPARAM) hFont_input, (LPARAM) TRUE); // No softline break character when getting the text. ! res = SendMessage (g_hwndE, EM_FMTLINES, FALSE, 0); //TCHAR buf[100]; ! //int nchar = GetClassName(g_hwndE, buf, 100); //print_result(hWnd_p, buf); ! SetFocus(g_hwndE); } *************** *** 1192,1196 **** HWND hwnd_edit = (HWND) hwnd; if (hwnd_edit == NULL) ! hwnd_edit = hwndE; long res = SendMessage (hwnd_edit, action, (WPARAM) 0, (LPARAM) -1); res = SendMessage (hwnd_edit, EM_SCROLLCARET, (WPARAM) 0, (LPARAM) 0); --- 1228,1232 ---- HWND hwnd_edit = (HWND) hwnd; if (hwnd_edit == NULL) ! hwnd_edit = g_hwndE; long res = SendMessage (hwnd_edit, action, (WPARAM) 0, (LPARAM) -1); res = SendMessage (hwnd_edit, EM_SCROLLCARET, (WPARAM) 0, (LPARAM) 0); *************** *** 1204,1208 **** HWND hwnd_edit = (HWND) hwnd; if (hwnd_edit == NULL) ! hwnd_edit = hwndE; long res = SendMessage (hwnd_edit, EM_SETSEL, (WPARAM) 0, (LPARAM) -1); res = SendMessage (hwnd_edit, EM_SCROLLCARET, (WPARAM) 0, (LPARAM) 0); --- 1240,1244 ---- HWND hwnd_edit = (HWND) hwnd; if (hwnd_edit == NULL) ! hwnd_edit = g_hwndE; long res = SendMessage (hwnd_edit, EM_SETSEL, (WPARAM) 0, (LPARAM) -1); res = SendMessage (hwnd_edit, EM_SCROLLCARET, (WPARAM) 0, (LPARAM) 0); *************** *** 1216,1220 **** HWND hwnd_edit = (HWND) hwnd; if (hwnd_edit == NULL) ! hwnd_edit = hwndE; long res = SendMessage (hwnd_edit, EM_SETSEL, (WPARAM) start, (LPARAM) end); res = SendMessage (hwnd_edit, EM_SCROLLCARET, (WPARAM) 0, (LPARAM) 0); --- 1252,1256 ---- HWND hwnd_edit = (HWND) hwnd; if (hwnd_edit == NULL) ! hwnd_edit = g_hwndE; long res = SendMessage (hwnd_edit, EM_SETSEL, (WPARAM) start, (LPARAM) end); res = SendMessage (hwnd_edit, EM_SCROLLCARET, (WPARAM) 0, (LPARAM) 0); *************** *** 1229,1233 **** HWND hwnd_edit = (HWND) hwnd; if (hwnd_edit == NULL) ! hwnd_edit = hwndE; long res = SendMessage (hwnd_edit, EM_GETSEL, (WPARAM) start, (LPARAM) end); } --- 1265,1269 ---- HWND hwnd_edit = (HWND) hwnd; if (hwnd_edit == NULL) ! hwnd_edit = g_hwndE; long res = SendMessage (hwnd_edit, EM_GETSEL, (WPARAM) start, (LPARAM) end); } *************** *** 1240,1244 **** HWND hwnd_edit = (HWND) hwnd; if (hwnd_edit == NULL) ! hwnd_edit = hwndE; unsigned long pos; --- 1276,1280 ---- HWND hwnd_edit = (HWND) hwnd; if (hwnd_edit == NULL) ! hwnd_edit = g_hwndE; unsigned long pos; *************** *** 1254,1258 **** HWND hwnd_edit = (HWND) hwnd; if (hwnd_edit == NULL) ! hwnd_edit = hwndE; long res = SendMessage (hwnd_edit, EM_SETSEL, (WPARAM) pos, (LPARAM) pos); --- 1290,1294 ---- HWND hwnd_edit = (HWND) hwnd; if (hwnd_edit == NULL) ! hwnd_edit = g_hwndE; long res = SendMessage (hwnd_edit, EM_SETSEL, (WPARAM) pos, (LPARAM) pos); *************** *** 1267,1271 **** HWND hwnd_edit = (HWND) hwnd; if (hwnd_edit == NULL) ! hwnd_edit = hwndE; unsigned long start, end; --- 1303,1307 ---- HWND hwnd_edit = (HWND) hwnd; if (hwnd_edit == NULL) ! hwnd_edit = g_hwndE; unsigned long start, end; *************** *** 1287,1291 **** HWND hwnd_edit = (HWND) hwnd; if (hwnd_edit == NULL) ! hwnd_edit = hwndE; long res = SendMessage (hwnd_edit, EM_REPLACESEL, (WPARAM) TRUE, (LPARAM) text); } --- 1323,1327 ---- HWND hwnd_edit = (HWND) hwnd; if (hwnd_edit == NULL) ! hwnd_edit = g_hwndE; long res = SendMessage (hwnd_edit, EM_REPLACESEL, (WPARAM) TRUE, (LPARAM) text); } *************** *** 1298,1302 **** HWND hwnd_edit = (HWND) hwnd; if (hwnd_edit == NULL) ! hwnd_edit = hwndE; BOOL res = SetWindowText(hwnd_edit, text); } --- 1334,1338 ---- HWND hwnd_edit = (HWND) hwnd; if (hwnd_edit == NULL) ! hwnd_edit = g_hwndE; BOOL res = SetWindowText(hwnd_edit, text); } *************** *** 1306,1310 **** ********************************************************************************/ TCHAR *Skin::get_input_text() { ! int res = GetWindowText(hwndE, inputText, INPUTAREA_SIZE); return (inputText); } --- 1342,1346 ---- ********************************************************************************/ TCHAR *Skin::get_input_text() { ! int res = GetWindowText(g_hwndE, inputText, INPUTAREA_SIZE); return (inputText); } *************** *** 1316,1326 **** // Save the text and call the main method //_tcscpy(dispResult, res_text); ! result_len = _tcslen(res_text); ! if (result_len >= RESULTAREA_SIZE) { ! result_len = RESULTAREA_SIZE - 1; } ! _tcsncpy(dispResult, res_text, result_len); ! dispResult[result_len] = _T('\0'); ! result_pow = false; // Just a mono font result HDC hdc = GetDC((HWND) hWnd_p); --- 1352,1362 ---- // Save the text and call the main method //_tcscpy(dispResult, res_text); ! g_result_len = _tcslen(res_text); ! if (g_result_len >= RESULTAREA_SIZE) { ! g_result_len = RESULTAREA_SIZE - 1; } ! _tcsncpy(g_dispResult, res_text, g_result_len); ! g_dispResult[g_result_len] = _T('\0'); ! g_result_pow = false; // Just a mono font result HDC hdc = GetDC((HWND) hWnd_p); *************** *** 1333,1339 **** ********************************************************************************/ void Skin::print_result (HDC hdc) { - HBITMAP bitmap = CreateBitmap(display_w, 18 * magnification, 1, 1, disp_bitmap); HDC memdc = CreateCompatibleDC(hdc); ! HGDIOBJ oldObject = SelectObject(memdc, bitmap); COLORREF old_bg = SetBkColor(hdc, display_bg); COLORREF old_fg = SetTextColor(hdc, display_fg); --- 1369,1374 ---- ********************************************************************************/ void Skin::print_result (HDC hdc) { HDC memdc = CreateCompatibleDC(hdc); ! HGDIOBJ oldObject = SelectObject(memdc, result_hbitmap); COLORREF old_bg = SetBkColor(hdc, display_bg); COLORREF old_fg = SetTextColor(hdc, display_fg); *************** *** 1341,1348 **** SelectObject(memdc, oldObject); // Set back default object DeleteDC(memdc); - DeleteObject(bitmap); result_size_recompute = true; // Recalculate result_size in paint_result() ! scroll_result = DT_RIGHT; paint_result(hdc); } --- 1376,1382 ---- SelectObject(memdc, oldObject); // Set back default object DeleteDC(memdc); result_size_recompute = true; // Recalculate result_size in paint_result() ! g_scroll_result = DT_RIGHT; paint_result(hdc); } *************** *** 1370,1381 **** if (result_size_recompute) { ! GetTextExtentPoint32(hdc, dispResult, result_len, &result_size); result_size_recompute = false; } // Display text - scroll result is either DT_LEFT or DT_RIGHT ! DrawText(hdc, dispResult, -1, &rc, scroll_result | DT_BOTTOM | DT_SINGLELINE | DT_NOPREFIX); ! if (result_len > 0) { // Handle scroll annunciators when necessary if (result_size.cx > display_w) { ! if (scroll_result == DT_RIGHT) { // Light the scroll left annunciator shell_scroll_annunciators(ANNVAL_SCR_LEFT); } else { // Light the scroll right annunciator --- 1404,1416 ---- if (result_size_recompute) { ! GetTextExtentPoint32(hdc, g_dispResult, g_result_len, &result_size); result_size_recompute = false; } // Display text - scroll result is either DT_LEFT or DT_RIGHT ! DrawText(hdc, g_dispResult, -1, &rc, ! g_scroll_result | DT_BOTTOM | DT_SINGLELINE | DT_NOPREFIX); ! if (g_result_len > 0) { // Handle scroll annunciators when necessary if (result_size.cx > display_w) { ! if (g_scroll_result == DT_RIGHT) { // Light the scroll left annunciator shell_scroll_annunciators(ANNVAL_SCR_LEFT); } else { // Light the scroll right annunciator *************** *** 1403,1419 **** // Save the text and call the appropriate method //_tcscpy(dispResult, res_text); ! result_len = _tcslen(res_text); ! if (result_len >= RESULTAREA_SIZE) { ! result_len = RESULTAREA_SIZE - 1; } ! _tcsncpy(dispResult, res_text, result_len); ! dispResult[result_len] = _T('\0'); HDC hdc = GetDC((HWND) hWnd_p); if (_tcschr(res_text, _T('^')) == NULL) { ! result_pow = false; // Just a mono font result print_result(hdc); } else { ! result_pow = true; // Special routine to mix fonts print_resultpow(hdc); } --- 1438,1454 ---- // Save the text and call the appropriate method //_tcscpy(dispResult, res_text); ! g_result_len = _tcslen(res_text); ! if (g_result_len >= RESULTAREA_SIZE) { ! g_result_len = RESULTAREA_SIZE - 1; } ! _tcsncpy(g_dispResult, res_text, g_result_len); ! g_dispResult[g_result_len] = _T('\0'); HDC hdc = GetDC((HWND) hWnd_p); if (_tcschr(res_text, _T('^')) == NULL) { ! g_result_pow = false; // Just a mono font result print_result(hdc); } else { ! g_result_pow = true; // Special routine to mix fonts print_resultpow(hdc); } *************** *** 1425,1431 **** ********************************************************************************/ void Skin::print_resultpow (HDC hdc) { - HBITMAP bitmap = CreateBitmap(display_w, 18 * magnification, 1, 1, disp_bitmap); HDC memdc = CreateCompatibleDC(hdc); ! HGDIOBJ oldObject = SelectObject(memdc, bitmap); COLORREF old_bg = SetBkColor(hdc, display_bg); COLORREF old_fg = SetTextColor(hdc, display_fg); --- 1460,1465 ---- ********************************************************************************/ void Skin::print_resultpow (HDC hdc) { HDC memdc = CreateCompatibleDC(hdc); ! HGDIOBJ oldObject = SelectObject(memdc, result_hbitmap); COLORREF old_bg = SetBkColor(hdc, display_bg); COLORREF old_fg = SetTextColor(hdc, display_fg); *************** *** 1433,1440 **** SelectObject(memdc, oldObject); // Set back default object DeleteDC(memdc); - DeleteObject(bitmap); result_size_recompute = true; // Recalculate result_size in paint_resultpow() ! scroll_result = DT_RIGHT; paint_resultpow(hdc); } --- 1467,1473 ---- SelectObject(memdc, oldObject); // Set back default object DeleteDC(memdc); result_size_recompute = true; // Recalculate result_size in paint_resultpow() ! g_scroll_result = DT_RIGHT; paint_resultpow(hdc); } *************** *** 1466,1470 **** // result_size.cx will get computed by the method, but // result_size.cy will be correct at least. ! GetTextExtentPoint32(hdc, dispResult, result_len, &result_size); result_size.cx = 0; --- 1499,1503 ---- // result_size.cx will get computed by the method, but // result_size.cy will be correct at least. ! GetTextExtentPoint32(hdc, g_dispResult, g_result_len, &result_size); result_size.cx = 0; *************** *** 1472,1483 **** } pow_pos = 0; ! _tcscpy(work_dispResult, dispResult); // Use a work area, since text will be altered paint_resultpow_rec(hdc, false, work_dispResult); // Start with normal text. if (result_size_recompute) // Was left at -1 to provoke recomputation of result_size.cx result_size_recompute = false; ! if (result_len > 0) { // Handle scroll annunciators when necessary if (result_size.cx > display_w) { ! if (scroll_result == DT_RIGHT) { // Light the scroll left annunciator shell_scroll_annunciators(ANNVAL_SCR_LEFT); } else { // Light the scroll right annunciator --- 1505,1516 ---- } pow_pos = 0; ! _tcscpy(work_dispResult, g_dispResult); // Use a work area, since text will be altered paint_resultpow_rec(hdc, false, work_dispResult); // Start with normal text. if (result_size_recompute) // Was left at -1 to provoke recomputation of result_size.cx result_size_recompute = false; ! if (g_result_len > 0) { // Handle scroll annunciators when necessary if (result_size.cx > display_w) { ! if (g_scroll_result == DT_RIGHT) { // Light the scroll left annunciator shell_scroll_annunciators(ANNVAL_SCR_LEFT); } else { // Light the scroll right annunciator *************** *** 1504,1508 **** if (expon) *expon = NULL; // Skip '^' ! if (scroll_result == DT_LEFT) // Display the selected part first in current font size. A NULL is in *expon or at end. paint_result_piece(hdc, smallf, text, _tcslen(text)); --- 1537,1541 ---- if (expon) *expon = NULL; // Skip '^' ! if (g_scroll_result == DT_LEFT) // Display the selected part first in current font size. A NULL is in *expon or at end. paint_result_piece(hdc, smallf, text, _tcslen(text)); *************** *** 1524,1528 **** // If aligned right, // print text on the right of expoff first, if there is one. ! if (*(expoff+1) && (scroll_result == DT_RIGHT)) paint_resultpow_rec(hdc, false, expoff+1); // Print exponent, without enclosing () --- 1557,1561 ---- // If aligned right, // print text on the right of expoff first, if there is one. ! if (*(expoff+1) && (g_scroll_result == DT_RIGHT)) paint_resultpow_rec(hdc, false, expoff+1); // Print exponent, without enclosing () *************** *** 1532,1536 **** // If aligned left, // print text on the right of expoff after, if there is one. ! if (*(expoff+1) && (scroll_result == DT_LEFT)) paint_resultpow_rec(hdc, false, expoff+1); } else { // Find * or / maybe --- 1565,1569 ---- // If aligned left, // print text on the right of expoff after, if there is one. ! if (*(expoff+1) && (g_scroll_result == DT_LEFT)) paint_resultpow_rec(hdc, false, expoff+1); } else { // Find * or / maybe *************** *** 1540,1544 **** expoff = _tcschr(expon, _T('/')); if (expoff) { ! if (scroll_result == DT_RIGHT) // If aligned right, // print text after on the right first, including * or / paint_resultpow_rec(hdc, false, expoff); --- 1573,1577 ---- expoff = _tcschr(expon, _T('/')); if (expoff) { ! if (g_scroll_result == DT_RIGHT) // If aligned right, // print text after on the right first, including * or / paint_resultpow_rec(hdc, false, expoff); *************** *** 1548,1552 **** // Print expon string in small chars. paint_result_piece(hdc, true, expon, _tcslen(expon)); ! if (expoff && (scroll_result == DT_LEFT)) { // If aligned left, // print text on the right after, including * or / --- 1581,1585 ---- // Print expon string in small chars. paint_result_piece(hdc, true, expon, _tcslen(expon)); ! if (expoff && (g_scroll_result == DT_LEFT)) { // If aligned left, // print text on the right after, including * or / *************** *** 1557,1561 **** } } ! if (scroll_result == DT_RIGHT) // Display the selected part after in current font size. A NULL is in *expon or at end. paint_result_piece(hdc, smallf, text, _tcslen(text)); --- 1590,1594 ---- } } ! if (g_scroll_result == DT_RIGHT) // Display the selected part after in current font size. A NULL is in *expon or at end. paint_result_piece(hdc, smallf, text, _tcslen(text)); *************** *** 1602,1605 **** --- 1635,1639 ---- if (!GetTextExtentPoint(hdc, res_piece, len, &sz)) { // Error ! Stop here. + SelectObject(hdc, oldFont); // Set back default object return; } *************** *** 1610,1614 **** // Print the object at its place, and calculate the place for a next piece. RECT rc; ! if (scroll_result == DT_RIGHT) { if (pow_pos + sz.cx < display_w) { // Do not go beyond display area limits. rc.left = display_loc.x + display_w - pow_pos - sz.cx; --- 1644,1648 ---- // Print the object at its place, and calculate the place for a next piece. RECT rc; ! if (g_scroll_result == DT_RIGHT) { if (pow_pos + sz.cx < display_w) { // Do not go beyond display area limits. rc.left = display_loc.x + display_w - pow_pos - sz.cx; *************** *** 1640,1646 **** } if (smallf) { // Small is aligned on top, normal is on bottom. ! DrawText(hdc, res_piece, -1, &rc, scroll_result | DT_TOP | DT_SINGLELINE | DT_NOPREFIX); } else { ! DrawText(hdc, res_piece, -1, &rc, scroll_result | DT_BOTTOM | DT_SINGLELINE | DT_NOPREFIX); } --- 1674,1680 ---- } if (smallf) { // Small is aligned on top, normal is on bottom. ! DrawText(hdc, res_piece, -1, &rc, g_scroll_result | DT_TOP | DT_SINGLELINE | DT_NOPREFIX); } else { ! DrawText(hdc, res_piece, -1, &rc, g_scroll_result | DT_BOTTOM | DT_SINGLELINE | DT_NOPREFIX); } *************** *** 1652,1659 **** ********************************************************************************/ void Skin::scroll_result_left (HWND hWnd) { - HBITMAP bitmap = CreateBitmap(display_w, 18 * magnification, 1, 1, disp_bitmap); HDC hdc = GetDC(hWnd); HDC memdc = CreateCompatibleDC(hdc); ! HGDIOBJ oldObject = SelectObject(memdc, bitmap); COLORREF old_bg = SetBkColor(hdc, display_bg); --- 1686,1692 ---- ********************************************************************************/ void Skin::scroll_result_left (HWND hWnd) { HDC hdc = GetDC(hWnd); HDC memdc = CreateCompatibleDC(hdc); ! HGDIOBJ oldObject = SelectObject(memdc, result_hbitmap); COLORREF old_bg = SetBkColor(hdc, display_bg); *************** *** 1663,1670 **** SelectObject(memdc, oldObject); // Set back default object DeleteDC(memdc); - DeleteObject(bitmap); ! scroll_result = DT_LEFT; ! if (result_pow) paint_resultpow(hdc); else --- 1696,1702 ---- SelectObject(memdc, oldObject); // Set back default object DeleteDC(memdc); ! g_scroll_result = DT_LEFT; ! if (g_result_pow) paint_resultpow(hdc); else *************** *** 1677,1684 **** ********************************************************************************/ void Skin::scroll_result_right (HWND hWnd) { - HBITMAP bitmap = CreateBitmap(display_w, 18 * magnification, 1, 1, disp_bitmap); HDC hdc = GetDC(hWnd); HDC memdc = CreateCompatibleDC(hdc); ! HGDIOBJ oldObject = SelectObject(memdc, bitmap); COLORREF old_bg = SetBkColor(hdc, display_bg); --- 1709,1715 ---- ********************************************************************************/ void Skin::scroll_result_right (HWND hWnd) { HDC hdc = GetDC(hWnd); HDC memdc = CreateCompatibleDC(hdc); ! HGDIOBJ oldObject = SelectObject(memdc, result_hbitmap); COLORREF old_bg = SetBkColor(hdc, display_bg); *************** *** 1688,1695 **** SelectObject(memdc, oldObject); // Set back default object DeleteDC(memdc); - DeleteObject(bitmap); ! scroll_result = DT_RIGHT; ! if (result_pow) paint_resultpow(hdc); else --- 1719,1725 ---- SelectObject(memdc, oldObject); // Set back default object DeleteDC(memdc); ! g_scroll_result = DT_RIGHT; ! if (g_result_pow) paint_resultpow(hdc); else *************** *** 1702,1706 **** ********************************************************************************/ TCHAR *Skin::get_result (void) { ! return (dispResult); } --- 1732,1736 ---- ********************************************************************************/ TCHAR *Skin::get_result (void) { ! return (g_dispResult); } *************** *** 1709,1718 **** ********************************************************************************/ void Skin::clipCopy_result (void) { ! if (*dispResult != 0) { ! int len = (_tcslen(dispResult) + 1)*sizeof(TCHAR); // Number of bytes + 1 // Get the clipboard and put data in there HGLOBAL h = GlobalAlloc(GMEM_MOVEABLE, len); void *p = GlobalLock(h); ! memcpy(p, dispResult, len); GlobalUnlock(h); OpenClipboard(NULL); --- 1739,1748 ---- ********************************************************************************/ void Skin::clipCopy_result (void) { ! if (*g_dispResult != 0) { ! int len = (_tcslen(g_dispResult) + 1)*sizeof(TCHAR); // Number of bytes + 1 // Get the clipboard and put data in there HGLOBAL h = GlobalAlloc(GMEM_MOVEABLE, len); void *p = GlobalLock(h); ! memcpy(p, g_dispResult, len); GlobalUnlock(h); OpenClipboard(NULL); |