Fix infinite loop in wxHtmlEasyPrinting page break code.

The code didn't handle cells higher than the page height correctly and entered
an infinite loop when trying to adjust page breaks in their presence, e.g.
when trying to print a very tall image.

Closes #13935.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70528 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2012-02-07 13:02:32 +00:00
parent d7235613f4
commit 846f4568e5
6 changed files with 50 additions and 18 deletions

View File

@@ -95,19 +95,33 @@ public:
/**
This method is used to adjust pagebreak position.
The parameter is variable that contains y-coordinate of page break
The first parameter is a variable that contains the y-coordinate of the page break
(= horizontal line that should not be crossed by words, images etc.).
If this cell cannot be divided into two pieces (each one on another page)
then it moves the pagebreak few pixels up.
then it either moves the pagebreak a few pixels up, if possible, or, if
the cell cannot fit on the page at all, then the cell is forced to
split unconditionally.
Returns @true if pagebreak was modified, @false otherwise.
@param pagebreak
position in pixel of the pagebreak.
@param known_pagebreaks
the list of the previous pagebreaks
@param pageHeight
the height in pixel of the page drawable area
Usage:
@code
while (container->AdjustPagebreak(&p)) {}
while (container->AdjustPagebreak(&p, kp, ph)) {}
@endcode
*/
virtual bool AdjustPagebreak(int* pagebreak,
const wxArrayInt& known_pagebreaks) const;
const wxArrayInt& known_pagebreaks,
int pageHeight) const;
/**
Renders the cell.