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 TMaddress 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 . *