#include <windows.h>#include "machine.h"#include "stack-c.h"#include "version.h"#include "scigraphic.h"#include "wgraph.h"#include "Messages.h"#include "Warnings.h"#include "Errors.h"Include dependency graph for FigureToPrint.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.
Functions | |
| BOOL | FigureToPrint (int figurenumber, BOOL Postscript) |
| int | CopyPrint (struct BCG *ScilabGC) |
| void | PrintPs (struct BCG *ScilabGC) |
Definition at line 44 of file FigureToPrint.c.
00045 { 00046 int xPage, yPage; 00047 static DOCINFO di = {sizeof (DOCINFO), MSG_SCIMSG12, NULL}; 00048 BOOL bError = FALSE; 00049 HDC hDCfromhWnd=NULL; 00050 HDC printer=NULL; 00051 LPGW lpgw; 00052 ABORTPROC lpfnAbortProc; 00053 DLGPROC lpfnPrintDlgProc; 00054 static PRINTDLG pd; 00055 HWND hwnd; 00056 RECT rect,RectRestore; 00057 PRINT pr; 00058 00059 integer SaveCurrentWindow=0; 00060 00061 SaveCurrentWindow=GetCurrentFigureWindows(); 00062 00063 Setscig_buzyState(TRUE); 00064 00065 SetCurrentFigureWindows (ScilabGC->CurWindow); 00066 00067 lpgw = ScilabGC->lpgw; 00068 hwnd = ScilabGC->CWindow; 00069 hDCfromhWnd=TryToGetDC (hwnd); 00070 00071 printer = (HDC)GetPrinterDC(); 00072 00073 if (NULL == printer) 00074 { 00075 /* Redessine si Cancel Impression */ 00076 GetClientRect (hwnd, &RectRestore); 00077 scig_replay_hdc ('W', ScilabGC->CurWindow, hDCfromhWnd,RectRestore.right - RectRestore.left, RectRestore.bottom - RectRestore.top, 1); 00078 Setscig_buzyState(FALSE); 00079 return TRUE; /* abort */ 00080 } 00081 00082 pr.hdcPrn = printer; 00083 xPage = GetDeviceCaps (pr.hdcPrn, HORZRES); 00084 yPage = GetDeviceCaps (pr.hdcPrn, VERTRES); 00085 00086 GetClientRect (hwnd, &rect); 00087 SetLastError (0); 00088 if (SetWindowLong (hwnd, 4, (LONG) ((LP_PRINT) & pr)) == 0 && GetLastError () != 0) 00089 { 00090 sciprint (MSG_ERROR34); 00091 Setscig_buzyState(FALSE); 00092 return TRUE; 00093 } 00094 if (SetWindowLong(ScilabGC->hWndParent, 4, (LONG) ((LP_PRINT) & pr)) == 0 && GetLastError () != 0) 00095 { 00096 sciprint (MSG_ERROR34); 00097 Setscig_buzyState(FALSE); 00098 return TRUE; 00099 } 00100 PrintRegister ((LP_PRINT) & pr); 00101 EnableWindow (hwnd, FALSE); 00102 00103 pr.bUserAbort = FALSE; 00104 lpfnPrintDlgProc = (DLGPROC) MyGetProcAddress ("PrintDlgProc",PrintDlgProc); 00105 lpfnAbortProc = (ABORTPROC) MyGetProcAddress ("PrintAbortProc",PrintAbortProc); 00106 pr.hDlgPrint = CreateDialogParam (hdllInstance, "PrintDlgBox", hwnd, lpfnPrintDlgProc, (LPARAM) lpgw->Title); 00107 SetAbortProc (pr.hdcPrn, lpfnAbortProc); 00108 00109 if (StartDoc (pr.hdcPrn, &di) > 0) 00110 { 00111 if (StartPage (pr.hdcPrn) > 0) 00112 { 00113 int scalef = 1; 00114 SetMapMode (pr.hdcPrn, MM_TEXT); 00115 SetBkMode (pr.hdcPrn, TRANSPARENT); 00116 SetTextAlign (pr.hdcPrn, TA_LEFT | TA_BOTTOM); 00117 scalef = (int) (10.0 * ((double) xPage * yPage) / (6800.0 * 4725.0)); 00118 GetClientRect (hwnd, &RectRestore); 00119 /* Evite bug lorsque l'on selectionne la fenetre & que l'on imprime apres */ 00120 scig_replay_hdc ('P', ScilabGC->CurWindow, hDCfromhWnd,RectRestore.right - RectRestore.left, RectRestore.bottom - RectRestore.top, 1); 00121 WindowsPrintScreen = 1; 00122 Printer_XRes = GetDeviceCaps (pr.hdcPrn, LOGPIXELSX); 00123 Printer_YRes = GetDeviceCaps (pr.hdcPrn, LOGPIXELSY); 00124 scig_replay_hdc ('P', ScilabGC->CurWindow, printer,xPage, yPage, scalef); 00125 WindowsPrintScreen = 0; 00126 /* Redessine à l'ecran apres l'impression */ 00127 scig_replay_hdc ('W', ScilabGC->CurWindow,hDCfromhWnd,RectRestore.right - RectRestore.left, RectRestore.bottom - RectRestore.top, 1); 00128 if (EndPage (pr.hdcPrn) > 0) EndDoc (pr.hdcPrn); 00129 else bError = TRUE; 00130 } 00131 } 00132 else bError = TRUE; 00133 00134 if (!pr.bUserAbort) 00135 { 00136 EnableWindow (hwnd, TRUE); 00137 DestroyWindow (pr.hDlgPrint); 00138 } 00139 if (printer) {DeleteDC (printer); printer=NULL;} 00140 SetWindowLong (hwnd, 4, (LONG) (0L)); 00141 SetWindowLong (ScilabGC->hWndParent, 4, (LONG) (0L)); 00142 PrintUnregister ((LP_PRINT) & pr); 00143 00144 ReleaseDC (hwnd, hDCfromhWnd); 00145 SetCurrentFigureWindows (SaveCurrentWindow); 00146 00147 Setscig_buzyState(FALSE); 00148 InvalidateRect(hwnd,NULL,TRUE); 00149 00150 return bError || pr.bUserAbort; 00151 }
| BOOL FigureToPrint | ( | int | figurenumber, | |
| BOOL | Postscript | |||
| ) |
Definition at line 22 of file FigureToPrint.c.
References CopyPrint(), FALSE, getWindowXgcNumber(), NULL, PrintPs(), and TRUE.
Referenced by C2F().
00023 { 00024 BOOL bOK=FALSE; 00025 struct BCG *ScilabGC=NULL; 00026 ScilabGC = getWindowXgcNumber (figurenumber); 00027 00028 if (ScilabGC) 00029 { 00030 if (Postscript) 00031 { 00032 PrintPs (ScilabGC); 00033 } 00034 else 00035 { 00036 CopyPrint (ScilabGC); 00037 } 00038 bOK=TRUE; 00039 } 00040 else bOK=FALSE; 00041 return bOK; 00042 }
Here is the call graph for this function:

Here is the caller graph for this function:

| void PrintPs | ( | struct BCG * | ScilabGC | ) |
Definition at line 153 of file FigureToPrint.c.
00154 { 00155 HDC hPrinterDC=NULL; 00156 char *p1; 00157 char ori; 00159 ls.use_printer = 1; 00160 ls.colored = 1; 00161 00162 hPrinterDC=GetPrinterDC(); // Just to Configure Printer 00163 if (hPrinterDC) {DeleteDC(hPrinterDC);hPrinterDC=NULL;} 00164 00166 if ((p1 = getenv ("TMPDIR")) == (char *) 0) 00167 { 00168 sciprint (MSG_WARNING15); 00169 return; 00170 } 00171 sprintf (filename, "%s/scilab-%d", p1, (int) ScilabGC->CurWindow); 00172 00173 dos2win32 (filename, filename1); 00174 00175 scig_toPs (ScilabGC->CurWindow, ls.colored, filename1, "Pos"); 00176 00177 ori =GetPrinterOrientation(); 00178 00179 if (ScilabPsToEps (ori, filename1, filename) == 0) 00180 { 00181 if (gp_printfile (hdllInstance, ScilabGC->hWndParent, filename,(char *) 0) == FALSE) sciprint (MSG_ERROR78); 00182 } 00185 }
1.5.1