SYSTEM 7.0 Q & A
MACINTOSH DEVELOPER TECHNICAL SUPPORT
Q When I use the name and vRefNum returned from FindFolder, I always get a fnfErr from
OpenRFPerm. Why?
A FindFolder returns both a vRefNum and a DirID. They both must be used to identify the folder.
Instead of using OpenRFPerm,which takes only a vRefNum, try HOpenResFile. Avoid using
PBHSetVol! (See Technical Note #140 for more information.)
Q We want to use OpenCPicture
for higher resolution, not for color per se. Can OpenCPicture in System 7.0 be used with
non-Color
as well as Color QuickDraw Macintosh computers?
A Yes, with System 7.0, OpenCPicture
can be used to create extended PICT2 files from all Macintosh computers. Under System 6.0.7 or
later, you must test for 32-Bit QuickDraw before
using OpenCPicture. You can
do this by calling Gestalt with the gestaltQuickDrawVersion selector.
If it returns gestalt32BitQD or greater, then 32-Bit QuickDraw is installed.Q Can the Communications Toolbox be used in a DA? InitCM has to be called and the
manual says it should be called only once.
A Yes, it is all right to call CTB Initialization routines from CODE resources. This includes a DRVR,
cdev, or INIT.
Q Can I use my 8*24 GC card with System 7.0ßx? I was told the GC misbehaves with any
and all nonlinear address mapping, such
as System 7.0 and A/UX. Is this true? Can this be fixed with CODE/INIT patch? Is it
scheduled to be fixed in the near future?
A The 8*24 GC card software version 1.0 is not intended to run in any environment involving virtual
memory management. A VM-compatible version of the GC software will be made available when
System 7.0 is final. Until then, the card can be
used as a video buffer, and System 7.0 preliminary software might run with VM switched off.Q Under what System 7.0 and System 6.0 conditions is it legal to call the QDError function?
A Under System 7.0, QDError can be
called from all Macintosh computers. (System 7.0 supports RGBForeColor, RGBBackColor,
GetForeColor, and GetBackColor for all Macintosh computers as well.) On a non-Color QuickDraw
Macintosh, QDError always returns a "no error." Under System 6.0, QDError cannot be used
for non-Color QuickDraw Macintosh systems.
Q Why do some CopyBits transfer modes produce different results for System 7.0 than for
System 6.0?
A Under System 6.0, the srcOr, srcXor, srcBic, notSrcCopy, notSrcOr, notSrcXor, and notSrcBic
transfer modes do not produce the same effect for a 16- or 32-bit (direct) pixel map as for an 8-bit or
shallower (indexed) pixel map. With Color QuickDraw these classic transfer modes on direct pixel
maps aren't color based; they're pixel value based. Color QuickDraw performs logical operations
corresponding to the transfer mode on the source and destination pixel values to get the resulting
pixel value.For example, say that a multicolored source is being copied onto a black
and white destination using the srcOr transfer mode, and both the source
and destination are 8 bits per pixel. Except in unusual cases, the pixel value for black on an indexed
pixel map has all its bits set, so an 8-bit black pixel has a pixel value of $FF. Similarly, the pixel value
for white has all its bits clear, so an 8-bit white pixel has a pixel value of $00. CopyBits takes each
pixel value of the source and performs a logical OR with the corresponding pixel value of the
destination. Using OR to combine any value with 0 results in the original value, so any pixel value
ORed with the pixel value for white results in the original pixel value. Using OR to combine any
value with 1 results in 1, so any pixel value ORed with the pixel value for black results in the pixel
value for black. The resulting image shows the original image in all areas where the destination
image was white and shows black in all areas where the destination image was black.
Take the same example, but this time make the source and destination 32 bits per pixel. The direct-
color pixel value for black is $00000000 and the
direct-color pixel value for white is $00FFFFFF. CopyBits still performs
a logical OR on the source and destination pixel values, but notice what happens in this case. Using
OR to combine any source pixel value with the pixel value for white results in white, and using OR to
combine any source pixel value with the pixel value for black results in the original color.
The resulting image shows the original image in all areas where the destination image was black and
shows white in all areas where the destination image was white--roughly the opposite of what you see
on an indexed pixel map.
The newer transfer modes addOver, addPin, subOver, subPin, adMax, and adMin work consistently
at all pixel depths, and often, though not always, correspond to the theoretical effect of the old
transfer modes. For example, the adMin mode works similarly to the srcOr mode on both direct and
indexed pixel maps. Also, 1-bit deep source pixel maps work consistently and predictably regardless
of the pixel depth of the destination even with the old transfer modes.
Under System Software 7.0, the old transfer modes now perform by calculating with colors rather
than pixel values. You'll find that transfer modes like srcOr and srcBic work much more consistently
even on
direct pixel maps.
Q Is the Macintosh printing architecture different for System 7.0?
A No changes were made to the printing architecture for System 7.0. Printer drivers were revised for
System 7.0 to support TrueType, to be completely 32-bit clean, and to fix bugs, but the printing
architecture remains the same for System 7.0.Q BitMapToRegion does not work as described in Technical Note #275 for a PixMap with
baseAddr = (NuBus address). Which calls support PixMap 32-bit base addressing with
pmVersion = 4?
A As of System 7.0ß1, BitMapToRgn cannot handle a bitmap whose base address is in the NuBus TM
address space or any bitmap that requires 32-bit addressing. The problem will be fixed for System
7.0's final release. As far as
we know, BitMapToRgn is the only
call that doesn't yet support 32-bit addressed bitmaps.
Q Can the LaserWriter 7.x driver be used with System 6.0?
A Yes! LaserWriter 7.x is compatible with both System 7.0 and System 6.0. It's still prerelease
software, however. Do not ship the preliminary LaserWriter 7.x driver with your application. You'll
be able to ship the final LaserWriter 7 driver with your product as soon as System 7.0 is final. To
use the new LaserWriter driver with an AppleShare print spooler, you need a special LaserPrep,
available on developer CDs and on AppleLink.
Kudos to our readers who care enough to ask us terrific and well-thought-out questions. The answers to these puzzles have
been supplied courtesy of our teams of technical gurus; our thanks to all. Special thanks to Pete "Luke Skywalker"
Alexander, Jim "Im" Beninghaus, Rich Collyer, Guillermo Ortiz, Forrest Tanaka, and Scott "Zz" Zimmerman for the material in this Q & A column. *
Have more questions? Need more answers? Take a look at the new developer technical library on AppleLink
(updated weekly) or the Q & A stack on the disc that comes withdevelop . *