
|
[open-beos-printing]
||
[Date Prev]
[10-2002 Date Index]
[Date Next]
||
[Thread Prev]
[10-2002 Thread Index]
[Thread Next]
[open-beos-printing] Re: Print Kit Progress Report
- From: Philippe Houdoin <philippe.houdoin@xxxxxxx>
- To: open-beos-printing@xxxxxxxxxxxxx
- Date: Tue, 22 Oct 2002 19:38:45 +0200 (CEST)
> 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
|

|