/***** * * Michael Riff * RPN software version 1.0 Oktob 2013. * * Diese Datei definiert die Routinen die Eingabewerte und Ergebnisse der * Ausführung von Eingelesenen Berechnugen. * * Version 1.3 : 08 Feb 2014 * Added check of status returned by FormatX2Str. * * Version 1.7: 06 June 2016 * Adaptations to compile the code with CodeWarrior and suppress warnings. *****/ #ifdef MAC_UI #include #include extern OSErr erreur; Str255 title = "\pGraphik Seite "; // Initialisation does not work with C compiler (only C++ Compiler) short lineHeight; Str255 txtBuffer; extended80 xValueBuf; long double ldBuf; extern Str255 sValueDst; // Définies dans UX_StdLib.c extern NumberParts *partsTbl; extern NumFormatString formatRecF; extern WindowPtr WinDoc; extern FontInfo infoTxt; Rect dispRect; #endif void showPage(char *layout) { #ifndef MAC_UI printf("\n\nGraphik Seite %s\n",layout); #else unsigned char length; if (WinDoc != FrontWindow()) { SelectWindow(WinDoc); SetPort(WinDoc); } EraseRect(&dispRect); GetFontInfo(&infoTxt); lineHeight = infoTxt.ascent + infoTxt.descent + infoTxt.leading; MoveTo(6, 10); for(length = 0; 0!=layout[length]; ++length); BlockMove(layout, title+14, length); *title = 14+length; DrawString(title); MoveTo(4, WinDoc->pnLoc.v+2*lineHeight); #endif } void startGrFile(double *Daten,int numValues) { #ifndef MAC_UI printf("Eingaben: %f %f %f %f\n",Daten[1],Daten[2],Daten[3],Daten[4]); printf("Anzahl der berechneten Werte: %d\n", numValues); #else if (WinDoc != FrontWindow()) { SelectWindow(WinDoc); SetPort(WinDoc); } MoveTo(4, 10+lineHeight); BlockMove("Eingaben: ", txtBuffer+1, 10); ldBuf = (long double)Daten[1]; ldtox80 (&ldBuf, &xValueBuf); erreur = FormatX2Str(&xValueBuf, &formatRecF, partsTbl, sValueDst); if (erreur) { ParamText("\pDisplay","\p1 FormatStr2X",sValueDst,"\perror"); StopAlert(128, NULL); } BlockMove((char*)sValueDst+1, txtBuffer+11, sValueDst[0]); txtBuffer[0] = 10 + sValueDst[0] +1; txtBuffer[txtBuffer[0]] = ' '; ldBuf = (long double)Daten[2]; ldtox80 (&ldBuf, &xValueBuf); erreur = FormatX2Str(&xValueBuf, &formatRecF, partsTbl, sValueDst); if (erreur) { ParamText("\pDisplay","\p2 FormatStr2X",sValueDst,"\perror"); StopAlert(128, NULL); } BlockMove((char*)sValueDst+1, txtBuffer+txtBuffer[0]+1, sValueDst[0]); txtBuffer[0] += sValueDst[0] +1; txtBuffer[txtBuffer[0]] = ' '; ldBuf = (long double)Daten[3]; ldtox80 (&ldBuf, &xValueBuf); erreur = FormatX2Str(&xValueBuf, &formatRecF, partsTbl, sValueDst); if (erreur) { ParamText("\pDisplay","\p3 FormatStr2X",sValueDst,"\perror"); StopAlert(128, NULL); } BlockMove((char*)sValueDst+1, txtBuffer+txtBuffer[0]+1, sValueDst[0]); txtBuffer[0] += sValueDst[0] +1; txtBuffer[txtBuffer[0]] = ' '; ldBuf = (long double)Daten[4]; ldtox80 (&ldBuf, &xValueBuf); erreur = FormatX2Str(&xValueBuf, &formatRecF, partsTbl, sValueDst); if (erreur) { ParamText("\pDisplay","\p4 FormatStr2X",sValueDst,"\perror"); StopAlert(128, NULL); } BlockMove((char*)sValueDst+1, txtBuffer+txtBuffer[0]+1, sValueDst[0]); txtBuffer[0] += sValueDst[0]; DrawString(txtBuffer); MoveTo(4, WinDoc->pnLoc.v+lineHeight); BlockMove("Anzahl der berechneten Werte: ", txtBuffer+1, 30); NumToString(numValues, sValueDst); BlockMove((char*)sValueDst+1, txtBuffer+31, sValueDst[0]); txtBuffer[0] = 30 + sValueDst[0]; DrawString(txtBuffer); MoveTo(4, WinDoc->pnLoc.v+lineHeight); #endif } void addGrValue(float value) { #ifndef MAC_UI printf("%f\t",value); #else ldBuf = (long double)value; ldtox80(&ldBuf, &xValueBuf); erreur = FormatX2Str(&xValueBuf, &formatRecF, partsTbl, sValueDst); if (erreur) { ParamText("\pDisplay","\p5 FormatStr2X",sValueDst,"\perror"); StopAlert(128, NULL); } ++(sValueDst[0]); sValueDst[sValueDst[0]] = '\t'; DrawString(sValueDst); MoveTo(4, WinDoc->pnLoc.v+lineHeight); #endif } #ifndef MAC_UI #ifndef SPRACHE void endGrFile() { printf("\n0\t1\t2\t3\t4\t5\t6\t7\t8\t9\n"); printf("Abt\t+\t-\t+\t-\t+\t-\t+\t-\t_\n"); #else void endGrFile(int status) { if (status == 0) { printf("\n0\t-\t4\t\tminus\tpoint\t\n"); } else { printf("\n0\t1\t2\t3\t4\t5\t6\t7\t8\t9\n"); } #endif printf("\n\n"); } #ifdef SPRACHE void startGrFile2(int Param,char *txt,double *Daten,int numValues) { switch (Param) { case 1: printf("%s\t%f\t%f\t%f\n",txt,Daten[2],Daten[3],Daten[4]); break; case 2: printf("%f\t%s\t%f\t%f\n",Daten[1],txt,Daten[3],Daten[4]); break; case 3: printf("%f\t%f\t%s\t%f\n",Daten[1],Daten[2],txt,Daten[4]); break; case 4: printf("%f\t%f\t%f\t%s\n",Daten[1],Daten[2],Daten[3],txt); break; } printf("Anzahl der berechneten Werte: %d\n",numValues); } #endif #endif