Small error corrections for printing.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@24971 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
fredkiefer 2007-04-10 00:30:53 +00:00
parent a799363d1b
commit 6c03eac7b8
4 changed files with 104 additions and 104 deletions

View file

@ -248,8 +248,8 @@ static inline NSRect integralRect (NSRect rect, NSView *view)
if (_copiesOnScroll && _window && [_window gState])
{
/* Copy the portion of the view that is common before and after
scrolling. Then, document view needs to redraw the remaining
areas. */
scrolling. Then, document view needs to redraw the remaining
areas. */
@ -258,110 +258,99 @@ static inline NSRect integralRect (NSRect rect, NSView *view)
intersection = NSIntersectionRect (originalBounds, newBounds);
/* but we must make sure we only copy from visible rect - we
can't copy bits which have been clipped (ie discarded) */
can't copy bits which have been clipped (ie discarded) */
intersection = NSIntersectionRect (intersection, [self visibleRect]);
/* Copying is done in device space so we only can copy by
integral rects in device space - adjust our copy rect */
integral rects in device space - adjust our copy rect */
intersection = integralRect (intersection, self);
/* At this point, intersection is the rectangle containing the
image we can recycle from the old to the new situation. We
must not make any assumption on its position/size, because it
has been intersected with visible rect, which is an arbitrary
rectangle as far as we know. */
image we can recycle from the old to the new situation. We
must not make any assumption on its position/size, because it
has been intersected with visible rect, which is an arbitrary
rectangle as far as we know. */
if (NSEqualRects (intersection, NSZeroRect))
{
// no recyclable part -- docview should redraw everything
// from scratch
[super setBoundsOrigin: newBounds.origin];
[_documentView setNeedsDisplayInRect:
[self documentVisibleRect]];
}
{
// no recyclable part -- docview should redraw everything
// from scratch
[super setBoundsOrigin: newBounds.origin];
[_documentView setNeedsDisplayInRect:
[self documentVisibleRect]];
}
else
{
/* Copy the intersection to the new position */
NSPoint destPoint = intersection.origin;
float dx = newBounds.origin.x - originalBounds.origin.x;
float dy = newBounds.origin.y - originalBounds.origin.y;
NSRect redrawRect;
/* It is assumed these dx and dy will be integer in device
space because they are the difference of the bounds
origins, both of which should be integers in device space
because of the code at the end of
constrainScrollPoint:. */
destPoint.x -= dx;
destPoint.y -= dy;
{
/* It is assumed these dx and dy will be integer in device
space because they are the difference of the bounds
origins, both of which should be integers in device space
because of the code at the end of
constrainScrollPoint:. */
float dx = newBounds.origin.x - originalBounds.origin.x;
float dy = newBounds.origin.y - originalBounds.origin.y;
NSRect redrawRect;
/* Copy the intersection to the new position */
[self scrollRect: intersection by: NSMakeSize(dx, dy)];
/* Now copy ! */
[self lockFocus];
/* NB: Because of all the previous comments, we are sure the
following is copying an integer rectangle by an integer
amount (`integer' in device space) - which should cause
no problems */
NSCopyBits (0, intersection, destPoint);
[self unlockFocus];
/* Change coordinate system to the new one */
[super setBoundsOrigin: newBounds.origin];
/* Get the rectangle representing intersection in the new
/* Change coordinate system to the new one */
[super setBoundsOrigin: newBounds.origin];
/* Get the rectangle representing intersection in the new
bounds (mainly to keep code readable) */
intersection.origin.x = destPoint.x;
intersection.origin.y = destPoint.y;
// intersection.size is the same
/* Now mark everything which is outside intersection as
intersection.origin.x -= dx;
intersection.origin.y -= dy;
// intersection.size is the same
/* Now mark everything which is outside intersection as
needing to be redrawn by hand. NB: During simple usage -
scrolling in a single direction (left/rigth/up/down) -
and a normal visible rect, only one of the following
rects will be non-empty. */
/* To the left of intersection */
redrawRect = NSMakeRect (NSMinX (_bounds), _bounds.origin.y,
NSMinX (intersection) - NSMinX (_bounds),
_bounds.size.height);
if (NSIsEmptyRect (redrawRect) == NO)
{
[_documentView setNeedsDisplayInRect:
[self convertRect: redrawRect
toView: _documentView]];
}
/* Right */
redrawRect = NSMakeRect (NSMaxX (intersection), _bounds.origin.y,
NSMaxX (_bounds) - NSMaxX (intersection),
_bounds.size.height);
if (NSIsEmptyRect (redrawRect) == NO)
{
[_documentView setNeedsDisplayInRect:
[self convertRect: redrawRect
toView: _documentView]];
}
/* Up (or Down according to whether it's flipped or not) */
redrawRect = NSMakeRect (_bounds.origin.x, NSMinY (_bounds),
_bounds.size.width,
NSMinY (intersection) - NSMinY (_bounds));
if (NSIsEmptyRect (redrawRect) == NO)
{
[_documentView setNeedsDisplayInRect:
[self convertRect: redrawRect
toView: _documentView]];
}
/* Down (or Up) */
redrawRect = NSMakeRect (_bounds.origin.x, NSMaxY (intersection),
_bounds.size.width,
NSMaxY (_bounds) - NSMaxY (intersection));
if (NSIsEmptyRect (redrawRect) == NO)
{
[_documentView setNeedsDisplayInRect:
[self convertRect: redrawRect
toView: _documentView]];
}
}
/* To the left of intersection */
redrawRect = NSMakeRect(NSMinX(_bounds), _bounds.origin.y,
NSMinX(intersection) - NSMinX(_bounds),
_bounds.size.height);
if (NSIsEmptyRect(redrawRect) == NO)
{
[_documentView setNeedsDisplayInRect:
[self convertRect: redrawRect
toView: _documentView]];
}
/* Right */
redrawRect = NSMakeRect(NSMaxX(intersection), _bounds.origin.y,
NSMaxX(_bounds) - NSMaxX(intersection),
_bounds.size.height);
if (NSIsEmptyRect(redrawRect) == NO)
{
[_documentView setNeedsDisplayInRect:
[self convertRect: redrawRect
toView: _documentView]];
}
/* Up (or Down according to whether it's flipped or not) */
redrawRect = NSMakeRect(_bounds.origin.x, NSMinY(_bounds),
_bounds.size.width,
NSMinY(intersection) - NSMinY(_bounds));
if (NSIsEmptyRect(redrawRect) == NO)
{
[_documentView setNeedsDisplayInRect:
[self convertRect: redrawRect
toView: _documentView]];
}
/* Down (or Up) */
redrawRect = NSMakeRect(_bounds.origin.x, NSMaxY(intersection),
_bounds.size.width,
NSMaxY(_bounds) - NSMaxY(intersection));
if (NSIsEmptyRect(redrawRect) == NO)
{
[_documentView setNeedsDisplayInRect:
[self convertRect: redrawRect
toView: _documentView]];
}
}
}
else
{