> print_server beta 3 is around the corner. The cvs repository contains > the latest version. This allows to select a printer from within an > application. The settings which printer an application > uses are persistent, also the page setup and job setup > settings are persistent for each printer. Woa! I should look at these great new features, that are way belong R1 requirements BTW. You've made a great job here. Again! > BPrintJob progresses slowly (not in cvs). Most of its methods are > implemented. > The print job is created, but not in the printer spooler directory and > child views of a view are not added to the job file. I don't fully > understand the semantic of BPrintJob::DrawView(view, rect, point) > with regard to child views. > I can find it out, but it would help if someone could explain how > point and rect influences the rectangle that is passed to child views > via call to BView::Draw(rect). I'm not sure myself, but here a pseudo-code of my understood off DrawView() behavior: draw_view_hierarchy(BView * view, BRect rect) { BView * child; if (!view) return; if (!view->IsVisible()) return; if ((view->Flags() & B_WILL_DRAW) == 0) return; view->SetPrintingMode(true); // Well, should be some protected BView method view->Draw(rect); view->SetPrintingMode(false); if (child = view->ChildAt(0)) { while(child) { draw_one_view(child, rect); child = child->NextSibling(); }; }; } BPrintJob::DrawView(BView * view, BRect rect, BPoint point) { BPicture * picture; view->BeginPicture(new BPicture()); draw_view_hierarchy(view, rect); picture = view->EndPicture(); write_picture_to_spool(picture, point); } In spool job page structure, each flatten bpicture come from one DrawView, I bet. When SpoolPage() comes, it *close* the current page block in the spool job. BTW, give a look at some R5 limitations of DrawView: http://bang.dhs.org/be/bebook/The%20Interface%20Kit/PrintJob.html#DrawView > PrintJobReader for reading data from a print job. It allows to > directly > access the pages of a print job and allows to iterate through the > BPictures of a page. > > The test application DumpPrintJob prints the contents of a print job > using both classes from above. > > The test application Preview that shows the contents of a print job > similarly to the Preview printer. It uses the class PrintJobReader. > > Anyone want to extend it to a preview printer add-on? I'll give a look at this Preview test application to see how much work is needed to mute it to a Preview print driver. BTW, for Preview at least, we should add some support to let know that a specific printer driver addon don't require a transport. Hardcoding this kind of specific right in the Add Printer dialog sounds ugly to me. Some special boolean attribut "transport_aware" in the binary addon file? Not that's that much urgent... -Philippe