Opened 7 years ago

Closed 7 years ago

#95 closed task (fixed)

Printing support

Reported by: diver Owned by:
Priority: major Milestone: GA
Component: general Version: 1.6.0-b22 RC2
Severity: low Keywords:


needs to be checked if it works

Change History (6)

comment:1 Changed 7 years ago by dmik

Turns out to be an Odin problem, as usual. Support form some Unicode APIs was missing. I added them in r 21627 and printing now kind of works with one exception: lines of text are flipped along the horizontal axis on paper. Still can't figure out who's guilty. Must be a usual difference between the PM and Win32 coordinate space orientation (PM has the Y axis going up).

comment:2 Changed 7 years ago by dmik

There are actually many more problems with printing. For example, the Java2DFont demo application uses the native printer dialog instead of its own one (like jEdit). This dialog is implemented by Odin. And there are even two flavors of it: the one that mimics the Win32 dialog (from Wine) and the one that goes from Open32 (more PM-like). The former hangs (pressing Ok does not do anything and does not dismiss it), the later closes, but doesn't print. The second attempt to show it crashes the application.

There are also crashes in the release build despite the fix above.

This needs more investigation.

comment:3 Changed 7 years ago by dmik

Fixed the flipped text issue in r 21628 in Odin: the TextOut?() API family was completely broken there. jEdit prints well now.

comment:4 Changed 7 years ago by dmik

In r287, I fixed a crash that happened in the release build when opening the Print dialog in jEdit and other applications. It was a really nasty one (took some time hard to find).

comment:5 Changed 7 years ago by dmik

Still can't find why the native print dialogs don't work. I have to go deeper into the Java->Odin32->PM pipeline.

comment:6 Changed 7 years ago by dmik

  • Resolution set to fixed
  • Status changed from new to closed

In r 21630 in Odin, I switched the PrintDlg?() API to using the native PM print dialogue instead of the Win32 clone emulated by the Wine code in Odin. This PM print dialogue looks much more native and gives access to all printer settings. Note that after this switch PageSetupDlg?() is a no-op (always returns FALSE) but this API isn't really important as PringDlg?() gives access to page settings as well which should work for all applications.

Now printing support in Java looks quite complete.

Note: See TracTickets for help on using tickets.