mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-04-23 20:01:11 +00:00
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:
parent
98e6a191af
commit
6539cba2c9
7 changed files with 60 additions and 15 deletions
14
ChangeLog
14
ChangeLog
|
@ -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>
|
||||
|
||||
* Headers/gnustep/gui/NSColorPanel.h
|
||||
|
|
|
@ -162,6 +162,13 @@ APPKIT_EXPORT NSString *NSPrintTopMargin;
|
|||
APPKIT_EXPORT NSString *NSPrintVerticalPagination;
|
||||
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
|
||||
//
|
||||
|
|
|
@ -68,6 +68,7 @@ typedef struct _page_info_t {
|
|||
int nup; /* Number up pages to print on a sheet */
|
||||
double lastWidth, lastHeight;
|
||||
NSPrintingOrientation orient;
|
||||
int pageDirection; /* NSPrintPageDirection */
|
||||
} page_info_t;
|
||||
|
||||
@interface NSPrintOperation (Private)
|
||||
|
@ -771,19 +772,36 @@ scaleRect(NSRect rect, double scale)
|
|||
{
|
||||
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.
|
||||
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
|
||||
*/
|
||||
- (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;
|
||||
NSRect pageRect;
|
||||
|
||||
xpage = (page - 1) % info->xpages;
|
||||
ypage = (page - 1) % info->ypages;
|
||||
if (info->pageDirection == 1)
|
||||
{
|
||||
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)
|
||||
info->lastWidth = 0;
|
||||
if (ypage == 0)
|
||||
|
@ -803,7 +821,7 @@ scaleRect(NSRect rect, double scale)
|
|||
last: (int)last
|
||||
info: (page_info_t *)info
|
||||
{
|
||||
int i;
|
||||
int i, xpage, ypage;
|
||||
double hlimit, wlimit;
|
||||
NSRect pageRect;
|
||||
hlimit = [_view heightAdjustLimit];
|
||||
|
@ -811,7 +829,7 @@ scaleRect(NSRect rect, double scale)
|
|||
for (i = first; i <= last; i++)
|
||||
{
|
||||
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);
|
||||
[_view adjustPageHeightNew: &newVal
|
||||
top: NSMinY(pageRect)
|
||||
|
@ -826,8 +844,10 @@ scaleRect(NSRect rect, double scale)
|
|||
limit: limitVal];
|
||||
if (newVal < NSMaxX(pageRect))
|
||||
pageRect.size.width = MAX(newVal, limitVal) - NSMinX(pageRect);
|
||||
info->lastWidth = NSMaxX(pageRect)*(info->pageScale*info->printScale);
|
||||
info->lastHeight = NSMaxY(pageRect)*(info->pageScale*info->printScale);
|
||||
if (info->pageDirection == 0 || ypage == info->ypages - 1)
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -235,7 +235,8 @@ afCloseFile(file); \
|
|||
return NO; \
|
||||
}
|
||||
|
||||
if ((file = afOpenFile([path cString], "r", NULL)) == AF_NULL_FILEHANDLE)
|
||||
if ((file = afOpenFile([path fileSystemRepresentation], "r", NULL))
|
||||
== AF_NULL_FILEHANDLE)
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
|
|
|
@ -287,6 +287,7 @@ setupSpecialRun(GSTextRun *run, unsigned length, unichar *chars, unsigned pos,
|
|||
run->baseline = [run->cell cellBaselineOffset].y;
|
||||
run->height = run->glyphs[0].adv.height;
|
||||
run->width = run->glyphs[0].adv.width;
|
||||
run->base = 0;
|
||||
// Unset the normale fields
|
||||
run->font = nil;
|
||||
run->bg = nil;
|
||||
|
|
|
@ -2847,13 +2847,13 @@ static NSView* findByTag(NSView *view, int aTag, unsigned *level)
|
|||
|
||||
if (aString == nil)
|
||||
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)
|
||||
DPSPrintf(ctxt, "%%%%PageBoundingBox: %d %d %d %d\n",
|
||||
(int)NSMinX(pageRect), (int)NSMinY(pageRect),
|
||||
(int)NSMaxX(pageRect), (int)NSMaxY(pageRect));
|
||||
if (fontNames)
|
||||
DPSPrintf(ctxt, "%%%%PageFonts: %s\n", [fontNames cString]);
|
||||
DPSPrintf(ctxt, "%%%%PageFonts: %s\n", [fontNames lossyCString]);
|
||||
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");
|
||||
else
|
||||
DPSPrintf(ctxt, "%%!PS-Adobe-3.0\n");
|
||||
DPSPrintf(ctxt, "%%%%Title: %s\n", [aTitle cString]);
|
||||
DPSPrintf(ctxt, "%%%%Creator: %s\n", [anApplication cString]);
|
||||
DPSPrintf(ctxt, "%%%%Title: %s\n", [aTitle lossyCString]);
|
||||
DPSPrintf(ctxt, "%%%%Creator: %s\n", [anApplication lossyCString]);
|
||||
DPSPrintf(ctxt, "%%%%CreationDate: %s\n",
|
||||
[[dateCreated description] cString]);
|
||||
DPSPrintf(ctxt, "%%%%For: %s\n", [user cString]);
|
||||
[[dateCreated description] lossyCString]);
|
||||
DPSPrintf(ctxt, "%%%%For: %s\n", [user lossyCString]);
|
||||
if (fontNames)
|
||||
DPSPrintf(ctxt, "%%%%DocumentFonts: %s\n", [fontNames cString]);
|
||||
DPSPrintf(ctxt, "%%%%DocumentFonts: %s\n", [fontNames lossyCString]);
|
||||
else
|
||||
DPSPrintf(ctxt, "%%%%DocumentFonts: (atend)\n");
|
||||
|
||||
|
|
|
@ -279,6 +279,8 @@ NSString *NSPrintHorizontalPagination = @"PrintHorizontalPagination";
|
|||
NSString *NSPrintVerticalPagination = @"PrintVerticalPagination";
|
||||
NSString *NSPrintVerticallyCentered = @"PrintVerticallyCentered";
|
||||
|
||||
NSString *NSPrintPageDirection = @"NSPrintPageDirection";
|
||||
|
||||
// Print Job Disposition Values
|
||||
NSString *NSPrintCancelJob = @"PrintCancelJob";
|
||||
NSString *NSPrintFaxJob = @"PrintFaxJob";
|
||||
|
|
Loading…
Reference in a new issue