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 rectangle.

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
smaller rectangle.

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
Substitution?

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.