Changeset 16451
- Timestamp:
- 02/17/06 06:07:29 (3 years ago)
- Files:
-
- 1 modified
-
haiku/trunk/src/kits/interface/PrintJob.cpp (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
haiku/trunk/src/kits/interface/PrintJob.cpp
r16449 r16451 27 27 28 28 29 // TODO: No clue at the moment 30 // We'll need to find out examining a r5 spool file 31 // Maybe the Print kit team found out already ? 32 struct _page_header_ { 33 char padding[52]; 34 }; 35 36 29 37 static BMessenger *sPrintServer = NULL; 30 38 … … 56 64 if (job_name != NULL) 57 65 fPrintJobName = strdup(job_name); 66 fCurrentPageHeader = new _page_header_; 58 67 } 59 68 … … 62 71 { 63 72 free(fPrintJobName); 73 delete fCurrentPageHeader; 64 74 } 65 75 … … 99 109 100 110 AddSetupSpec(); 111 112 fCurrentPageHeaderOffset = fSpoolFile->Position(); 113 fSpoolFile->Write(fCurrentPageHeader, sizeof(_page_header_)); 101 114 } 102 115 … … 318 331 BPrintJob::PrinterType(void *) const 319 332 { 320 321 333 if (!EnsureValidMessenger()) 322 334 return B_COLOR_PRINTER; // default … … 351 363 view->EndPicture(); 352 364 353 // TODO: call recursively on every view's children. 365 BView *child = view->ChildAt(0); 366 while (child != NULL) { 367 // TODO: origin and rect should probably 368 // be converted for children views in some way 369 RecurseView(child, origin, picture, rect); 370 child = child->NextSibling(); 371 } 354 372 } 355 373 … … 368 386 BPrintJob::HandlePageSetup(BMessage *setup) 369 387 { 388 if (fSetupMessage != NULL && setup != fSetupMessage && setup != NULL) 389 delete fSetupMessage; 390 391 if (setup->HasRect(PSRV_FIELD_PRINTABLE_RECT)) 392 setup->FindRect(PSRV_FIELD_PRINTABLE_RECT, &fUsableSize); 393 if (setup->HasRect(PSRV_FIELD_PAPER_RECT)) 394 setup->FindRect(PSRV_FIELD_PAPER_RECT, &fPaperSize); 395 396 fSetupMessage = setup; 370 397 } 371 398 … … 400 427 BPrintJob::EndLastPage() 401 428 { 429 if (fSpoolFile == NULL) 430 return; 431 432 fCurrentHeader.page_count++; 433 fSpoolFile->Seek(fCurrentPageHeaderOffset, SEEK_SET); 434 fSpoolFile->Write(fCurrentPageHeader, sizeof(_page_header_)); 435 fSpoolFile->Seek(0, SEEK_END); 402 436 } 403 437 … … 447 481 if (!EnsureValidMessenger()) 448 482 return; 449 450 483 451 484 BMessage message(PSRV_GET_DEFAULT_SETTINGS);
