January 90 - MACINTOSH Q & A
MACINTOSH DEVELOPER TECHNICAL SUPPORT
Q I'm drawing into a large offscreen bitmap (PixMap), but anything drawn outside
the 640 by 480 pixel screen area doesn't get written to the PixMap. Why not?
A When you create a new port with OpenPort or OpenCPort the visRgn is
initialized to the rectangular region defined by screenBits.bounds
(IM I:163). If your port has a large portRect, any drawing will be clipped to the
visRgn and you will lose any drawing outside of the screenBits.bounds
To correct this set the visRgn of the port to coincide with your port's portRect
after creating the port.
Also note that OpenPort initializes the clipRgn to a wide-open rectangular region
(-32768, -32768, 32767, 32767). Some operations (i.e.OpenPicture) can fail with
this setup, so you should try setting clipRgn to a smaller rectangle.clipRgn to a
wide-open rectangular region (-32768, -32768, 32767, 32767). Some operations
(i.e.OpenPicture) can fail with this setup, so you should try setting clipRgn to a
Q What is Printing Manager error -8133?
A Printing Manager error -8133 occurs when the PostScript interpreter of the
LaserWriter (or any other PostScript printer) generates a PostScript error.
A description of the PostScript command that caused the error will be displayed
in the status window. This error often occurs when an application is sending
PostScript directly to the printer, and that PostScript contains an error. To debug
this kind a problem, you should look at the PostScript generated by the driver.
To do this, hold down the Command-F key right after clicking okay in the Print
dialog. A file named PostScript0 will be created in the current directory.
Q I'm confused about the changes to FPRead in AFP version 2.0. How do I use
the NewLine mask?
A The difference between AFP 1.1 and AFP 2.0 as far as the NewLine Mask is
concerned is that, in AFP 1.1 the only legal values of Newline Mask are $00 and
$FF, whereas in AFP 2.0, all values of Newline Mask are allowed. The Newline
Mask is logically ANDed with a copy of each byte read. If the result matches the
Newline char, the read terminates. The Newline character is returned as the last
byte of data that was read from the fork.
Q How do I implement file range locking?
A HFS doesn't provide for file-range locking. AppleShare has additional structures
to implement locking, but there is no way for you to implement locking with HFS.
We are working on this limitation.
Q Why does enabling fractional font widths with FractEnable(TRUE) disable Font
A When you call FractEnable(TRUE), you are telling the Printing Manager that you
always want to use the fractional width information in the FOND resource of a
font. This fractional information is specified for a 1 point font, and can be scaled
for any desired size. When you tell the Printing Manager to use this width
information, the normal font width information (stored in the ROM of the
LaserWriter) is ignored. Font Substitution provides the ability to substitute high
quality PostScript fonts for fonts that have no PostScript equivalent. For
example, a document laid out in Geneva will be printed with Helvetica if Font
Substitution is enabled. When this substitution occurs, the Printing Manager
makes adjustments to the intercharacter spacing of the line to make the printed
Helvetica version match the width of the Geneva version displayed on the
screen. When you enable fractional font widths for a document that uses
Geneva, the Printing Manager is being told to print Helvetica characters on the
printer using fractional widths from the Geneva screen font. If the Printing
Manager placed the Helvetica characters using the fractional widths, formatting
problems could occur. For example, some of the Helvetica characters may be
wider than their Geneva equivalents, causing character collisions. To avoid this
problem, the LaserWriter driver disables the Font Substitution option when
fractional fonts ar enabled. This way, WYSIWYG is maintained. If you want to
use fractional fonts, then you should format your document using fonts that
have PostScript versions available on the LaserWriter.
Q Inside Mac says that there is a 3K limit on CopyBits. Is this still true?
A The CopyBits limit is obsolete; there is no longer a 3K limit. The limit depends
on the amount of RAM in your system. CopyBits tries to use the stack to do all
of the copying. In most cases CopyBits is able to copy entire screen shots at
one time. You might run into problems if you don't have enough stack to hold
two times the rowBytes of your source, but even in this case CopyBits will
attempt to find the memory it needs.
Q How do I order an MCP card and software? What do I get when I order it?
A You can order the Macintosh Coprocessor Platform (MCP) card and software
through Apple Software Licensing. The card comes with the MCP platform and
software which contains the appropriate libraries and header files. On the card
is the 68000, ROM (256K), RAM (512K), and the NuBus Logic to drive the card
in both master and slave modes. There is also blank space on the board, left
there for your communications hardware. Basic documentation is also included.
Q Can I get a list of all board IDs?
A No-that information is confidential.
MacDTS registers board ID and functional sResource equates so developers don't use equates
that are already in use, but they can't distribute the list because the
database contains information on unreleased products.
However, even if the list could be distributed, any program that depended on the
information in it would be obsolete as soon as a new board came out.
It is recommended you use the Slot Manager's ability to find certain cards or functions.
That way, you only need to write your code once, and it will work with newer boards.
That's why QuickDraw can find video cards years after it was frozen in ROM.
It does so by calling the Slot Manager and looking for boards that perform the QuickDraw compatible video function.
Q How do you catch a penguin?
A Before we answer that question, perhaps a little biology is in order.
Penguins, by necessity, must be both water and air tight, or they would freeze their little
bergies off in the Antarctic seas. Well, that's a problem if you happen to be warm blooded,
because there's really no way to sweat (since penguins don't have hands, they were never
able to invent Gor-tex®). To handle this problem, they have capillaries in their feet
that swell when warm and act as a radiator.
So, to catch a penguin, all you have to do is chase it across the ice.
The running will heat the penguin, which in turn, will heat the penguin's feet.
Once the penguin gets hot enough, he will stick to the ice (what scientists call "the tongue to the sled effect").
All you have to do then is walk over and pick them up.
PLEASE NOTE: When picking a penguin up we can't overemphasize how critical it is to use slightly warm water to thaw the feet first.
Penguin podiatrists are expensive, and very hard to find.
Q I'd like to write James Brown in jail. Where do I write to?
A You can write the Godfather of Soul at:
James Brown, prisoner ID #155413
Broad Rivers Correctional Institute
4460 Broad Rivers Road
Columbia, SC 29210
Brown is serving concurrent six year and six year & 3 month terms for a wild,
two-state car chase which happened September 24, 1988. He won't be eligible for parole until 1992.