[haiku-bugs] Re: [Haiku] #6761: Wrong positioning printing line of words in different colors

  • From: "pulkomandy" <trac@xxxxxxxxxxxx>
  • Date: Fri, 04 Nov 2016 13:01:41 -0000

#6761: Wrong positioning printing line of words in different colors
----------------------------------+-----------------------
   Reporter:  laplace             |      Owner:  korli
       Type:  bug                 |     Status:  new
   Priority:  normal              |  Milestone:  R1
  Component:  Servers/app_server  |    Version:  R1/alpha2
 Resolution:                      |   Keywords:
 Blocked By:                      |   Blocking:
Has a Patch:  0                   |   Platform:  All
----------------------------------+-----------------------
Changes (by pulkomandy):

 * component:  Applications/StyledEdit => Servers/app_server


Comment:

 I made tests with the "Preview" printer, and it shows the same problem.
 This rules out the PDF printer driver.

 Then I used the DumpPrintJob test to dump the print job. Part of the
 output:

 {{{
 EnterFontState
   SetFontFamily DejaVu Sans
   SetFontStyle Book
   SetFontSize 36.000000
   SetFontShear 90.000000
   SetFontRotation 0.000000
   SetFontSpacing B_BITMAP_SPACING
   SetFontEncoding B_UNICODE_UTF8
   SetFontFace B_REGULAR_FACE
   SetFontFlags none set
   ExitFontState
   SetPenLocation point (3.000000, 80.416016)
   DrawString escapement_nospace 0.000000 escapement_space 0.000000 text:
 RED
   EnterFontState
   SetFontFamily DejaVu Sans
   SetFontStyle Book
   SetFontSize 36.000000
   SetFontShear 90.000000
   SetFontRotation 0.000000
   SetFontSpacing B_BITMAP_SPACING
   SetFontEncoding B_UNICODE_UTF8
   SetFontFace B_REGULAR_FACE
   SetFontFlags none set
   ExitFontState
   SetForeColor color r: 59 g: 177 b: 0
   SetPenLocation point (3.000000, 80.416016)
   DrawString escapement_nospace 0.000000 escapement_space 0.000000 text:
 GREEN
   EnterFontState
   SetFontFamily DejaVu Sans
   SetFontStyle Book
   SetFontSize 36.000000
   SetFontShear 90.000000
   SetFontRotation 0.000000
   SetFontSpacing B_BITMAP_SPACING
   SetFontEncoding B_UNICODE_UTF8
   SetFontFace B_REGULAR_FACE
   SetFontFlags none set
   ExitFontState
   SetForeColor color r: 0 g: 0 b: 0
   SetPenLocation point (3.000000, 80.416016)
   DrawString escapement_nospace 0.000000 escapement_space 0.000000 text:
   EnterFontState
   SetFontFamily DejaVu Sans
   SetFontStyle Book
   SetFontSize 36.000000
   SetFontShear 90.000000
   SetFontRotation 0.000000
   SetFontSpacing B_BITMAP_SPACING
   SetFontEncoding B_UNICODE_UTF8
   SetFontFace B_REGULAR_FACE
   SetFontFlags none set
   ExitFontState
   SetForeColor color r: 36 g: 71 b: 106
   SetPenLocation point (3.000000, 80.416016)
   DrawString escapement_nospace 0.000000 escapement_space 0.000000 text:
 BLUE
 }}}

 Notice how each DrawString is always just after a SetPenLocation. The pen
 locations are always at x=3, so at the left of the window, which is what
 we see in the printed data.

 These are added by http://cgit.haiku-
 os.org/haiku/tree/src/kits/interface/PictureDataWriter.cpp#n456, which
 just uses the given location.

 That location is from http://cgit.haiku-
 os.org/haiku/tree/src/servers/app/ServerWindow.cpp#n3585. It comes from
 the BView through the app_server link, and in the case of BTextView, it is
 simply set to the current PenLocation(), as seen by the BView.

 Notice that the handling of AS_DRAW_STRING for pictures does NOT update
 the pen location, unlike its direct-drawing counterpart. So, the pen stays
 at the start of the line and never advances with the text.

 A possible fix is to set the current view pen location so that it can be
 used for further drawing.

--
Ticket URL: <https://dev.haiku-os.org/ticket/6761#comment:6>
Haiku <https://dev.haiku-os.org>
Haiku - the operating system.

Other related posts: