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); |