drawcontext/src/Figure.i3


 Copyright (c) 2000 California Institute of Technology 
 All rights reserved. See the file COPYRIGHT for a full description. 
 $Id: Figure.i3,v 1.2 2001-09-19 15:30:31 wagner Exp $ 

INTERFACE Figure;
IMPORT VBT;
IMPORT Rd;
IMPORT Rect;
IMPORT Axis;
IMPORT DrawContext;
IMPORT CacheDrawContext;
IMPORT TextSubs;
IMPORT Point;
IMPORT Region;

TYPE
  T <: ROOT;
constructing Figure.Ts

PROCEDURE FromPS(rd: Rd.T; captureResDPI := 720): T;
construct a Figure.T from an eps file

PROCEDURE FromCache(cache: CacheDrawContext.T; static := TRUE): T;
construct a Figure.T from cached drawing commands. if static is TRUE, assumes that cache will never change.

PROCEDURE FromFigure(fig: T; where := Point.Origin;
                     subs: TextSubs.T := NIL): T;
clone a Figure.T. Optionally translating to where, and replacing some text according to subs.

PROCEDURE FromText(text: TEXT := NIL; size := 12): T;
construct a Figure.T containing TEXT text, of size size, attached left-justified at the origin. If text is NIL, return an empty figure.
 using Figure.Ts 

PROCEDURE Plot(fig: T; in: DrawContext.T;
               where := Point.Origin; subs: TextSubs.T := NIL);
plot fig into in, possibly tanslating its origin to where, and optionally replacing some text.

PROCEDURE ToCache(fig: T; static := TRUE): CacheDrawContext.T;
if static is TRUE, assumes that returned cache will never change.

PROCEDURE Size(fig: T; in: DrawContext.T;
               axis := Axis.T.Hor;
               subs: TextSubs.T := NIL): CARDINAL;
return size along axis axis of figure fig, were it to be plotted in in with substitutions subs.

<*OBSOLETE*>PROCEDURE VBTSize(fig: T; vbt: VBT.T;
                  axis := Axis.T.Hor;
                  subs: TextSubs.T := NIL): CARDINAL;
return size along axis axis of figure fig, were it to be plotted in a new VBTDrawContext for vbt with substitutions subs.

PROCEDURE BoundRect(fig: T; in: DrawContext.T;
                    where := Point.Origin;
                    subs: TextSubs.T := NIL): Rect.T;
like Size, but return the whole rectangle

PROCEDURE BoundRegion(fig: T; in: DrawContext.T;
                      where := Point.Origin;
                      subs: TextSubs.T := NIL): Region.T;
like BoundRect, but return a possibly more accurate region.

END Figure.