#ifndef DEPENDENCY_PRINTER //stubs void sub__printimage(int32 i){ return; } #else void sub__printimage(int32 i){ #ifdef QB64_WINDOWS static LPSTR szPrinterName=NULL; DWORD dwNameLen; HDC dc; DOCINFO di; uint32 w,h; int32 x,y; int32 i2; BITMAPFILEHEADER bmfHeader; BITMAPINFOHEADER bi; img_struct *s,*s2; if (i>=0){ validatepage(i); s=&img[page[i]]; }else{ x=-i; if (x>=nextimg){error(258); return;} s=&img[x]; if (!s->valid){error(258); return;} } if (!szPrinterName) szPrinterName=(LPSTR)malloc(65536); dwNameLen=65536; GetDefaultPrinter(szPrinterName,&dwNameLen); if((dc=CreateDC(TEXT("WINSPOOL"),szPrinterName,NULL,NULL))==NULL) goto failed; ZeroMemory(&di,sizeof(DOCINFO)); di.cbSize=sizeof(DOCINFO); di.lpszDocName=TEXT("Document"); if(StartDoc(dc,&di)<=0){DeleteDC(dc); goto failed;} if(StartPage(dc)<=0){EndDoc(dc); DeleteDC(dc); goto failed;} w=GetDeviceCaps(dc,HORZRES); h=GetDeviceCaps(dc,VERTRES); i2=func__newimage(w,h,32,1); if (i2==-1){EndDoc(dc); DeleteDC(dc); goto failed;} s2=&img[-i2]; sub__dontblend(i2,1); sub__putimage(NULL,NULL,NULL,NULL,i,i2,NULL,NULL,NULL,NULL,8+32); ZeroMemory(&bi,sizeof(BITMAPINFOHEADER)); bi.biSize = sizeof(BITMAPINFOHEADER); bi.biWidth = w; bi.biHeight = h; bi.biPlanes = 1; bi.biBitCount = 32; bi.biCompression = BI_RGB; bi.biSizeImage = 0; bi.biXPelsPerMeter = 0; bi.biYPelsPerMeter = 0; bi.biClrUsed = 0; bi.biClrImportant = 0; for (y=0;yoffset32+(y*w),(BITMAPINFO*)&bi, DIB_RGB_COLORS); } sub__freeimage(i2,1); if(EndPage(dc)<=0){EndDoc(dc); DeleteDC(dc); goto failed;} if(EndDoc(dc)<=0){DeleteDC(dc); goto failed;} DeleteDC(dc); failed:; #endif } #endif