[ Home | Other Topics | Mail ]

GX Enhanced 'PICT'


GX Enhanced 'PICT'とは

 QuickDraw GX Ver1.1以降で可能になった QuickDraw GX Pictureを埋め込んだ 'PICT'です。Applicationからは普通の(?) 'PICT'と全く同じに扱えるため、何の修正も無しに現在の 'PICT'を扱える Applicationで QuickDraw GX Pictureを使うことができます。JPEG圧縮した Imageを 'PICT'として扱えるようにした Compressed 'PICT'と同じ手法で実現されています。
 実例でどの様なものか示してみましょう。下の "Hello!"は Times 96 pointを使い時計方向に 25度回転し Gradationをかけたものです。これは QuickDrawの表現能力を超えていますが QuickDraw GXや PostScriptでは簡単に作ることのできる図形です。

 これを GX Enhanced 'PICT' (3K Byte) にしたものです。 表面上は単なる 'PICT'ですので SimpleTextでも表示でき、Word Processor等に貼り込む事も出来ます。QuickDraw GXが描画しますので縦横比を変えたりしても綺麗に表示されますし、StyleWriter等の安価な Image Printerでも綺麗な印刷結果を得ることができます。

 同じものを Illustrator EPSF(32K Byte) で作ってみました。 EPSFはサイズが 75K Byteと大きく、また表示は Bitmap Previewのため縦横比を変えたりすると見るに耐えません。当然印刷には高価な PostScript Printerが必要です。

 ちなみに C++と QuickDraw GXで上の Hello!を作る Programはこんな感じになります。 GX Enhanced 'PICT'の作り方については TechNote を見てください。
 もちろん普通は LightningDraw GX の様な QuickDraw GX対応の Draw Softで作ります。

    void    CGXShellView::FinishCreateSelf()
    {
    gxShape         textClipShape;
    gxShape         ramp;
    gxRectangle     clipShapeBounds;

mShape = GXNewShape(gxPictureType); textClipShape = GXNewText(6,(unsigned char *)"Hello!",nil); SetShapeCommonFont(textClipShape,timesFont); GXSetShapeTextSize(textClipShape,ff(96)); GXSetShapeTextAttributes(textClipShape,gxNoMetricsGridText | gxNoContourGridText); GXSetShapeType(textClipShape,gxPathType); GXMoveShapeTo(textClipShape,ff(50),ff(50)); GXGetShapeBounds(textClipShape,0,&clipShapeBounds); ramp = NewCommonRamp(gxWhite,gxBlack,256,&clipShapeBounds); GXSetPictureParts(mShape,0,0,1,&ramp,nil,nil,nil); GXDisposeShape(ramp); GXSetShapeClip(mShape,textClipShape); GXDisposeShape(textClipShape); GXSetShapeViewPorts(mShape,1,&mViewPort); }


この Pageは MacOS X + Radio UserLand で作っています。