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:
Fred Kiefer 2007-04-10 00:30:53 +00:00
parent 82247728ad
commit e3a40d5811
4 changed files with 104 additions and 104 deletions

View file

@ -1,14 +1,22 @@
2007-04-10 Fred Kiefer <FredKiefer@gmx.de>
* Source/NSClipView.m (-setBoundsOrigin:): Use NSView method
scrollRect:by:.
* Source/NSPrintOperation.m (NSView
-_displayPageInRect:atPlacement:withInfo:): Release the temporary matrixes.
* Source/GSEPSPrintOperation.m (_print): Call endPage on the view.
2007-04-05 Xavier Glattard <xavier.glattard@online.fr>
* Headers/AppKit/NSAnimation.h
* Source/NSAnimation.m
* Headers/Additions/GNUstepGUI/GSAnimator.h
* Source/GSAnimator.m
Implementation of NSAnimation and NSViewAnimation classes :
- only NSAnimationNonBlocking mode is implemented
- runLoopModesForAnimating is not used
GSAnimator class is in alpha stage : interface may be changed
See gnustep-examples/GSTest for demos.
* Headers/AppKit/NSAnimation.h
* Source/NSAnimation.m
* Headers/Additions/GNUstepGUI/GSAnimator.h
* Source/GSAnimator.m
Implementation of NSAnimation and NSViewAnimation classes :
- only NSAnimationNonBlocking mode is implemented
- runLoopModesForAnimating is not used
GSAnimator class is in alpha stage : interface may be changed
See gnustep-examples/GSTest for demos.
2007-04-04 Fred Kiefer <FredKiefer@gmx.de>

View file

@ -102,11 +102,12 @@
forKey: @"NSPrintSheetBounds"];
[_view beginDocument];
[_view beginPageInRect: _rect
atPlacement: NSMakePoint(0,0)];
[_view displayRectIgnoringOpacity: _rect];
[_view endPage];
[_view endDocument];
}
@ -123,7 +124,7 @@
eps = [NSString stringWithContentsOfFile: _path];
[_data setData: [eps dataUsingEncoding:NSASCIIStringEncoding]];
[_data setData: [eps dataUsingEncoding: NSASCIIStringEncoding]];
}
return YES;

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:. */
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;
/* 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];
/* Change coordinate system to the new one */
[super setBoundsOrigin: newBounds.origin];
/* Get the rectangle representing intersection in the new
/* 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
intersection.origin.x -= dx;
intersection.origin.y -= dy;
// intersection.size is the same
/* Now mark everything which is outside intersection as
/* 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]];
}
/* 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]];
}
/* 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]];
}
/* 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]];
}
}
/* 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
{

View file

@ -1098,9 +1098,9 @@ scaleRect(NSRect rect, double scale)
{
NSAffineTransformStruct ats = { 1, 0, 0, -1, 0, NSHeight(_bounds) };
NSAffineTransform *matrix, *flip;
flip = [NSAffineTransform new];
matrix = [NSAffineTransform new];
[matrix makeIdentityMatrix];
[matrix prependTransform: _boundsMatrix];
/*
* The flipping process must result in a coordinate system that
@ -1110,6 +1110,8 @@ scaleRect(NSRect rect, double scale)
[flip setTransformStruct: ats];
[matrix prependTransform: flip];
[matrix concat];
RELEASE(flip);
RELEASE(matrix);
yoffset = NSHeight(_frame) - NSMaxY(pageRect);
}
else