Printing, cString fixes

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@14407 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
fedor 2002-09-06 19:31:00 +00:00
parent 6b3b2819df
commit 7fea2291bb
7 changed files with 60 additions and 15 deletions

View file

@ -1,3 +1,17 @@
2002-09-06 Adam Fedor <fedor@gnu.org>
* Headers/gnustep/gui/NSPrintInfo.h: Add print option.
* Source/NSPrintOperation.m ([-_printPaginateWithInfo:knowsRange:):
Use it.
(-_rectForPage:info:xpage:ypage:): Correct xpage/ypage calc.
(-_adjustPagesFirst:last:info:): Likewise.
* Source/NSStringDrawing.m (setupSpecialRun): Set base.
* Source/NSSound.m (-getDataFromFileAtPath:): Use
fileSystemRepresentation.
* Source/NSView.m (-beginPage:label:bBox:fonts:): Use
lossyCString.
2002-09-06 Fred Kiefer <FredKiefer@gmx.de> 2002-09-06 Fred Kiefer <FredKiefer@gmx.de>
* Headers/gnustep/gui/NSColorPanel.h * Headers/gnustep/gui/NSColorPanel.h

View file

@ -162,6 +162,13 @@ APPKIT_EXPORT NSString *NSPrintTopMargin;
APPKIT_EXPORT NSString *NSPrintVerticalPagination; APPKIT_EXPORT NSString *NSPrintVerticalPagination;
APPKIT_EXPORT NSString *NSPrintVerticallyCentered; APPKIT_EXPORT NSString *NSPrintVerticallyCentered;
//
// Additional (GNUstep) keys
//
/** Set to <code>Rows</code> to print row by row, set to <code>Columns</code>
to print column by column */
APPKIT_EXPORT NSString *NSPrintPageDirection;
// //
// Print Job Disposition Values // Print Job Disposition Values
// //

View file

@ -68,6 +68,7 @@ typedef struct _page_info_t {
int nup; /* Number up pages to print on a sheet */ int nup; /* Number up pages to print on a sheet */
double lastWidth, lastHeight; double lastWidth, lastHeight;
NSPrintingOrientation orient; NSPrintingOrientation orient;
int pageDirection; /* NSPrintPageDirection */
} page_info_t; } page_info_t;
@interface NSPrintOperation (Private) @interface NSPrintOperation (Private)
@ -771,19 +772,36 @@ scaleRect(NSRect rect, double scale)
{ {
info->nupScale = 2.0 / (float)info->nup; info->nupScale = 2.0 / (float)info->nup;
} }
if ([[dict objectForKey: NSPrintPageDirection] isEqual: @"Columns"])
info->pageDirection = 1;
else
info->pageDirection = 0;
} }
/* Our personnel method to calculate the print rect for the specified page. /* Our personnel method to calculate the print rect for the specified page.
Note, we assume this function is called in order from our first to last Note, we assume this function is called in order from our first to last
page. The returned pageRect is in the view's coordinate system page. The returned pageRect is in the view's coordinate system
*/ */
- (NSRect) _rectForPage: (int)page info: (page_info_t *)info - (NSRect) _rectForPage: (int)page info: (page_info_t *)info
xpage: (int *)xptr
ypage: (int *)yptr
{ {
int xpage, ypage; int xpage, ypage;
NSRect pageRect; NSRect pageRect;
xpage = (page - 1) % info->xpages; if (info->pageDirection == 1)
ypage = (page - 1) % info->ypages; {
xpage = (page - 1) / info->ypages;
ypage = (page - 1) % info->ypages;
}
else
{
xpage = (page - 1) % info->xpages;
ypage = (page - 1) / info->xpages;
}
*xptr = xpage;
*yptr = ypage;
if (xpage == 0) if (xpage == 0)
info->lastWidth = 0; info->lastWidth = 0;
if (ypage == 0) if (ypage == 0)
@ -803,7 +821,7 @@ scaleRect(NSRect rect, double scale)
last: (int)last last: (int)last
info: (page_info_t *)info info: (page_info_t *)info
{ {
int i; int i, xpage, ypage;
double hlimit, wlimit; double hlimit, wlimit;
NSRect pageRect; NSRect pageRect;
hlimit = [_view heightAdjustLimit]; hlimit = [_view heightAdjustLimit];
@ -811,7 +829,7 @@ scaleRect(NSRect rect, double scale)
for (i = first; i <= last; i++) for (i = first; i <= last; i++)
{ {
float newVal, limitVal; float newVal, limitVal;
pageRect = [self _rectForPage: i info: info]; pageRect = [self _rectForPage: i info: info xpage: &xpage ypage: &ypage];
limitVal = NSMaxY(pageRect) - hlimit * NSHeight(pageRect); limitVal = NSMaxY(pageRect) - hlimit * NSHeight(pageRect);
[_view adjustPageHeightNew: &newVal [_view adjustPageHeightNew: &newVal
top: NSMinY(pageRect) top: NSMinY(pageRect)
@ -826,8 +844,10 @@ scaleRect(NSRect rect, double scale)
limit: limitVal]; limit: limitVal];
if (newVal < NSMaxX(pageRect)) if (newVal < NSMaxX(pageRect))
pageRect.size.width = MAX(newVal, limitVal) - NSMinX(pageRect); pageRect.size.width = MAX(newVal, limitVal) - NSMinX(pageRect);
info->lastWidth = NSMaxX(pageRect)*(info->pageScale*info->printScale); if (info->pageDirection == 0 || ypage == info->ypages - 1)
info->lastHeight = NSMaxY(pageRect)*(info->pageScale*info->printScale); info->lastWidth = NSMaxX(pageRect)*(info->pageScale*info->printScale);
if (info->pageDirection == 1 || xpage == info->xpages - 1)
info->lastHeight = NSMaxY(pageRect)*(info->pageScale*info->printScale);
} }
return pageRect; return pageRect;
} }

View file

@ -235,7 +235,8 @@ afCloseFile(file); \
return NO; \ return NO; \
} }
if ((file = afOpenFile([path cString], "r", NULL)) == AF_NULL_FILEHANDLE) if ((file = afOpenFile([path fileSystemRepresentation], "r", NULL))
== AF_NULL_FILEHANDLE)
{ {
return NO; return NO;
} }

View file

@ -287,6 +287,7 @@ setupSpecialRun(GSTextRun *run, unsigned length, unichar *chars, unsigned pos,
run->baseline = [run->cell cellBaselineOffset].y; run->baseline = [run->cell cellBaselineOffset].y;
run->height = run->glyphs[0].adv.height; run->height = run->glyphs[0].adv.height;
run->width = run->glyphs[0].adv.width; run->width = run->glyphs[0].adv.width;
run->base = 0;
// Unset the normale fields // Unset the normale fields
run->font = nil; run->font = nil;
run->bg = nil; run->bg = nil;

View file

@ -2847,13 +2847,13 @@ static NSView* findByTag(NSView *view, int aTag, unsigned *level)
if (aString == nil) if (aString == nil)
aString = [[NSNumber numberWithInt: ordinalNum] description]; aString = [[NSNumber numberWithInt: ordinalNum] description];
DPSPrintf(ctxt, "%%%%Page: %s %d\n", [aString cString], ordinalNum); DPSPrintf(ctxt, "%%%%Page: %s %d\n", [aString lossyCString], ordinalNum);
if (NSIsEmptyRect(pageRect) == NO) if (NSIsEmptyRect(pageRect) == NO)
DPSPrintf(ctxt, "%%%%PageBoundingBox: %d %d %d %d\n", DPSPrintf(ctxt, "%%%%PageBoundingBox: %d %d %d %d\n",
(int)NSMinX(pageRect), (int)NSMinY(pageRect), (int)NSMinX(pageRect), (int)NSMinY(pageRect),
(int)NSMaxX(pageRect), (int)NSMaxY(pageRect)); (int)NSMaxX(pageRect), (int)NSMaxY(pageRect));
if (fontNames) if (fontNames)
DPSPrintf(ctxt, "%%%%PageFonts: %s\n", [fontNames cString]); DPSPrintf(ctxt, "%%%%PageFonts: %s\n", [fontNames lossyCString]);
DPSPrintf(ctxt, "%%%%BeginPageSetup\n"); DPSPrintf(ctxt, "%%%%BeginPageSetup\n");
} }
@ -2882,13 +2882,13 @@ static NSView* findByTag(NSView *view, int aTag, unsigned *level)
DPSPrintf(ctxt, "%%!PS-Adobe-3.0 EPSF-3.0\n"); DPSPrintf(ctxt, "%%!PS-Adobe-3.0 EPSF-3.0\n");
else else
DPSPrintf(ctxt, "%%!PS-Adobe-3.0\n"); DPSPrintf(ctxt, "%%!PS-Adobe-3.0\n");
DPSPrintf(ctxt, "%%%%Title: %s\n", [aTitle cString]); DPSPrintf(ctxt, "%%%%Title: %s\n", [aTitle lossyCString]);
DPSPrintf(ctxt, "%%%%Creator: %s\n", [anApplication cString]); DPSPrintf(ctxt, "%%%%Creator: %s\n", [anApplication lossyCString]);
DPSPrintf(ctxt, "%%%%CreationDate: %s\n", DPSPrintf(ctxt, "%%%%CreationDate: %s\n",
[[dateCreated description] cString]); [[dateCreated description] lossyCString]);
DPSPrintf(ctxt, "%%%%For: %s\n", [user cString]); DPSPrintf(ctxt, "%%%%For: %s\n", [user lossyCString]);
if (fontNames) if (fontNames)
DPSPrintf(ctxt, "%%%%DocumentFonts: %s\n", [fontNames cString]); DPSPrintf(ctxt, "%%%%DocumentFonts: %s\n", [fontNames lossyCString]);
else else
DPSPrintf(ctxt, "%%%%DocumentFonts: (atend)\n"); DPSPrintf(ctxt, "%%%%DocumentFonts: (atend)\n");

View file

@ -279,6 +279,8 @@ NSString *NSPrintHorizontalPagination = @"PrintHorizontalPagination";
NSString *NSPrintVerticalPagination = @"PrintVerticalPagination"; NSString *NSPrintVerticalPagination = @"PrintVerticalPagination";
NSString *NSPrintVerticallyCentered = @"PrintVerticallyCentered"; NSString *NSPrintVerticallyCentered = @"PrintVerticallyCentered";
NSString *NSPrintPageDirection = @"NSPrintPageDirection";
// Print Job Disposition Values // Print Job Disposition Values
NSString *NSPrintCancelJob = @"PrintCancelJob"; NSString *NSPrintCancelJob = @"PrintCancelJob";
NSString *NSPrintFaxJob = @"PrintFaxJob"; NSString *NSPrintFaxJob = @"PrintFaxJob";