Changeset 16451

Show
Ignore:
Timestamp:
02/17/06 06:07:29 (3 years ago)
Author:
jackburton
Message:

more work in progress. This code has been sitting on some forgotten hard drive for some time already

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • haiku/trunk/src/kits/interface/PrintJob.cpp

    r16449 r16451  
    2727 
    2828 
     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 ? 
     32struct _page_header_ { 
     33        char padding[52]; 
     34}; 
     35 
     36 
    2937static BMessenger *sPrintServer = NULL; 
    3038 
     
    5664        if (job_name != NULL) 
    5765                fPrintJobName = strdup(job_name); 
     66        fCurrentPageHeader = new _page_header_; 
    5867} 
    5968 
     
    6271{ 
    6372        free(fPrintJobName); 
     73        delete fCurrentPageHeader; 
    6474} 
    6575 
     
    99109         
    100110        AddSetupSpec(); 
     111 
     112        fCurrentPageHeaderOffset = fSpoolFile->Position(); 
     113        fSpoolFile->Write(fCurrentPageHeader, sizeof(_page_header_)); 
    101114} 
    102115 
     
    318331BPrintJob::PrinterType(void *) const 
    319332{ 
    320  
    321333        if (!EnsureValidMessenger()) 
    322334                return B_COLOR_PRINTER; // default 
     
    351363        view->EndPicture(); 
    352364         
    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        } 
    354372} 
    355373 
     
    368386BPrintJob::HandlePageSetup(BMessage *setup) 
    369387{ 
     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; 
    370397} 
    371398 
     
    400427BPrintJob::EndLastPage() 
    401428{ 
     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); 
    402436} 
    403437 
     
    447481        if (!EnsureValidMessenger()) 
    448482                return; 
    449  
    450483         
    451484        BMessage message(PSRV_GET_DEFAULT_SETTINGS);