FigureToPrint.h File Reference

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


Function Documentation

int CopyPrint ( 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 }


Generated on Sun Mar 4 15:57:22 2007 for Scilab [trunk] by  doxygen 1.5.1