dma@mhuxl.UUCP (Diana M. Abelbeck AT&T Technologies, Inc.) (11/07/85)
[] Does anyone know how to "draw" rotated text to the LaserWriter? I don't mean a rotated bitmap, I do that now, I mean a rotated "font". (Landscape and Portrait Mode is not my question here.) MacDraw can do it, and a Quickdraw Picture copied to the clipboard from MacDraw yields the proper result on the LaserWriter with a simple DrawPicture() call. Peeking at the QD Picture results in a type "int" defining the angle of the character rotation in degrees clockwise from 12 o'clock Before the DrawString() is performed and a standard BitMap rotation follows the DrawString() command. Since QD does not handle rotation, my question is how do you create a QD picture without a QD rotate call? This topic only affects the LaserWriter since it is capable of drawing "fonts" (ala high quality) at any angle, all the other output devices draw a bitmap and I already rotate the font on a bitmap. Thanks... Lonnie Ablebeck ihnp4!mhuxl!dma
awd@ut-ngp.UTEXAS (Andrew W. Donoho) (11/09/85)
The May 1985 Software Supplement includes a document called,
"Optimizing Code for the LaserWriter." Along with a lot of other
juicy information about the Macintosh LaserWriter driver, there is a
section called, "QuickDraw Comments for Text Rotation/Justification
and Polygons." This section containts a complete description of how
to rotate text using the LaserWriter. Here is some of what is described
there:
Using the PicComment routine to add comments to a picture, an
application can take advantage of features that a printer might have
which are not directly available in QuickDraw, such as rotated text.
CommentType # data size data description
TextBegin 150 6 bytes TTxtPicRec Begin special text
TextEnd 151 none none End special text
TextCenter 154 8 bytes TTxtCenter Offset for rotation
where TTxtPicRec and TTxtCenter are Pascal records as follows:
TTxtPicRec = PACKED RECORD
tJus: Byte; {0,1,2,3,4:none,left,center,right,fill)
tFlip: Byte; {0,1,2:none,horizontal,vertical}
tRot: Integer; {0..360:degrees of rotation}
tRes: Integer; {"reserved"}
END;
TTxtCenter = PACKED RECORD
yInt: Integer; {Integer part of y offset to center}
yFract: Integer; {Fractional part of y offset to center}
xInt: Integer; {Integer part of x offset to center}
xFract: Integer; {Fractional part of x offset to center}
END;
Then you can call like this to justify and/or flip text:
PicComment(150,6,@TxtPicRec); {set justifying}
DrawString('This text will be justified and flipped.');
PicComment(151,0,NIL); {end the special effects}
To rotate text, try something like this:
PicComment(150,6,@TxtPicRec); {set rotating}
PicCommment(154,8,@TxtCenter); {specify center of rotation}
DrawString('This text will be rotated.');
PicComment(151,0,NIL); {end the special effects}
If you want to do any more than these few minimum things, try reading
the Apple document, it is very useful for anyone using the
LaserWriter.
Darin Adler