    FOREIGN MODULE sun_dc_pr;

    IMPORT
        sun_dc_path,
        java_lang,
        java_io;

    TYPE

      PathDasher* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + sun_dc_path.PathConsumer)
                    STATIC
                      PROCEDURE Init*(p0 : sun_dc_path.PathConsumer) : PathDasher,CONSTRUCTOR;
                      PROCEDURE classFinalize!();
                    END;

      PathFiller* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + sun_dc_path.PathConsumer)
                    STATIC
                      EOFILL* = 1;
                      NZFILL* = 2;
                      MAX_PATH* = 1000000;
                      TILE_IS_ALL_0* = 0;
                      TILE_IS_ALL_1* = 1;
                      TILE_IS_GENERAL* = 2;
                      maxPathF* = 1000000.0;
                      PROCEDURE Init*() : PathFiller,CONSTRUCTOR;
                      PROCEDURE classFinalize!();
                      PROCEDURE validHiCoord*(p0 : SHORTREAL) : BOOLEAN;
                      PROCEDURE validLoCoord*(p0 : SHORTREAL) : BOOLEAN;
                    END;

      PathStroker* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + sun_dc_path.PathConsumer)
                     STATIC
                       ROUND* = 10;
                       SQUARE* = 20;
                       BUTT* = 30;
                       BEVEL* = 40;
                       MITER* = 50;
                       PROCEDURE Init*(p0 : sun_dc_path.PathConsumer) : PathStroker,CONSTRUCTOR;
                       PROCEDURE classFinalize!();
                     END;

      PRError* = POINTER TO EXTENSIBLE RECORD (java_lang.RuntimeException)
                 STATIC
                   UNEX_setUsage* = "setUsage: unexpected";
                   UNEX_setFillMode* = "setFillMode: unexpected";
                   UNEX_setPenDiameter* = "setPenDiameter: unexpected";
                   UNEX_setPenT4* = "setPenT4: unexpected";
                   UNEX_setPenDisplacement* = "setPenDisplacement: unexpected";
                   UNEX_setPenFitting* = "setPenFitting: unexpected";
                   UNEX_setCaps* = "setCaps: unexpected";
                   UNEX_setCorners* = "setCorners: unexpected";
                   UNEX_setDash* = "setDash: unexpected";
                   UNEX_setDashT4* = "setDashT4: unexpected";
                   UNEX_beginPath* = "beginPath: unexpected";
                   UNEX_beginSubpath* = "beginSubpath: unexpected";
                   UNEX_appendCubic* = "appendCubic: unexpected";
                   UNEX_appendLine* = "appendLine: unexpected";
                   UNEX_appendQuadratic* = "appendQuadratic: unexpected";
                   UNEX_closedSubpath* = "closedSubpath: unexpected";
                   UNEX_endPath* = "endPath: unexpected";
                   UNEX_useProxy* = "useProxy: unexpected";
                   UNEX_setOutputConsumer* = "setOutputConsumer: unexpected";
                   UNEX_setOutputT6* = "setOutputT6: unexpected";
                   UNEX_getAlphaBox* = "getAlphaBox: unexpected";
                   UNEX_setOutputArea* = "setOutputArea: unexpected";
                   UNEX_getTileState* = "getTileState: unexpected";
                   UNEX_writeAlpha* = "writeAlpha: unexpected";
                   UNEX_nextTile* = "nextTile: unexpected";
                   UNK_usage* = "setUsage: unknown usage type";
                   UNK_fillmode* = "setFillMode: unknown fill mode";
                   BAD_pendiam* = "setPenDiameter: Invalid pen diameter";
                   BAD_pent4* = "setPenT4: invalid pen transformation";
                   BAD_pent4_singular* = "setPenT4: invalid pen transformation (singular)";
                   BAD_penfit* = "setPenFitting: invalid pen fitting specification";
                   UNK_caps* = "setCaps: unknown cap type";
                   UNK_corners* = "setCorners: unknown corner type";
                   BAD_miterlimit* = "setCorners: invalid miter limit";
                   BAD_dashpattern* = "setDash: invalid dash pattern";
                   BAD_dasht4* = "setDashT4: invalid dash transformation";
                   BAD_dasht4_singular* = "setDashT4: invalid dash transformation (singular)";
                   BAD_pathbox* = "beginPath: invalid path box";
                   BAD_outputt6* = "setOutputT6: invalid output transformation";
                   BAD_outputt6_singular* = "setOutputT6: invalid output transformation (singular)";
                   BAD_boxdest* = "getAlphaBox: invalid box destination array";
                   BAD_outputarea* = "setOutputArea: invalid output area";
                   BAD_alphadest* = "writeAlpha: invalid alpha destination array and/or strides";
                   DUMMY* = "";
                   PROCEDURE Init*() : PRError,CONSTRUCTOR;
                   PROCEDURE Init*(p0 : java_lang.String) : PRError,CONSTRUCTOR;
                 END;

      PRException* = POINTER TO EXTENSIBLE RECORD (java_lang.Exception)
                     STATIC
                       BAD_COORD_setOutputArea* = "setOutputArea: alpha coordinate out of bounds";
                       ALPHA_ARRAY_SHORT* = "writeAlpha: alpha destination array too short";
                       DUMMY* = "";
                       PROCEDURE Init*() : PRException,CONSTRUCTOR;
                       PROCEDURE Init*(p0 : java_lang.String) : PRException,CONSTRUCTOR;
                     END;

      Rasterizer* = POINTER TO EXTENSIBLE RECORD (java_lang.Object)
                    STATIC
                      EOFILL* = 1;
                      NZFILL* = 2;
                      STROKE* = 3;
                      ROUND* = 10;
                      SQUARE* = 20;
                      BUTT* = 30;
                      BEVEL* = 40;
                      MITER* = 50;
                      TILE_SIZE* : INTEGER;
                      TILE_SIZE_L2S* : INTEGER;
                      MAX_ALPHA* = 1000000;
                      MAX_MITER* = 10;
                      MAX_WN* = 63;
                      TILE_IS_ALL_0* = 0;
                      TILE_IS_ALL_1* = 1;
                      TILE_IS_GENERAL* = 2;
                      PROCEDURE Init*() : Rasterizer,CONSTRUCTOR;
                    END;

    PROCEDURE (self:PathDasher) appendCubic*(p0 : SHORTREAL;
                                             p1 : SHORTREAL;
                                             p2 : SHORTREAL;
                                             p3 : SHORTREAL;
                                             p4 : SHORTREAL;
                                             p5 : SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:PathDasher) appendLine*(p0 : SHORTREAL;
                                            p1 : SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:PathDasher) appendQuadratic*(p0 : SHORTREAL;
                                                 p1 : SHORTREAL;
                                                 p2 : SHORTREAL;
                                                 p3 : SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:PathDasher) beginPath*(),NEW,EXTENSIBLE;

    PROCEDURE (self:PathDasher) beginSubpath*(p0 : SHORTREAL;
                                              p1 : SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:PathDasher) closedSubpath*(),NEW,EXTENSIBLE;

    PROCEDURE (self:PathDasher) endPath*(),NEW,EXTENSIBLE;

    PROCEDURE (self:PathDasher) finalize!(),EXTENSIBLE;

    PROCEDURE (self:PathDasher) getCPathConsumer*() : LONGINT,NEW,EXTENSIBLE;

    PROCEDURE (self:PathDasher) reset*(),NEW,EXTENSIBLE;

    PROCEDURE (self:PathDasher) setDash*(IN  p0 : ARRAY OF SHORTREAL;
                                             p1 : SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:PathDasher) setDashT4*(IN  p0 : ARRAY OF SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:PathDasher) setOutputConsumer*(p0 : sun_dc_path.PathConsumer),NEW,EXTENSIBLE;

    PROCEDURE (self:PathDasher) setOutputT6*(IN  p0 : ARRAY OF SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:PathDasher) useProxy*(p0 : sun_dc_path.FastPathProducer),NEW,EXTENSIBLE;

    PROCEDURE (self:PathFiller) appendCubic*(p0 : SHORTREAL;
                                             p1 : SHORTREAL;
                                             p2 : SHORTREAL;
                                             p3 : SHORTREAL;
                                             p4 : SHORTREAL;
                                             p5 : SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:PathFiller) appendLine*(p0 : SHORTREAL;
                                            p1 : SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:PathFiller) appendQuadratic*(p0 : SHORTREAL;
                                                 p1 : SHORTREAL;
                                                 p2 : SHORTREAL;
                                                 p3 : SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:PathFiller) beginPath*(),NEW,EXTENSIBLE;

    PROCEDURE (self:PathFiller) beginSubpath*(p0 : SHORTREAL;
                                              p1 : SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:PathFiller) closedSubpath*(),NEW,EXTENSIBLE;

    PROCEDURE (self:PathFiller) endPath*(),NEW,EXTENSIBLE;

    PROCEDURE (self:PathFiller) finalize!(),EXTENSIBLE;

    PROCEDURE (self:PathFiller) getAlphaBox*(IN  p0 : ARRAY OF INTEGER),NEW,EXTENSIBLE;

    PROCEDURE (self:PathFiller) getCPathConsumer*() : LONGINT,NEW,EXTENSIBLE;

    PROCEDURE (self:PathFiller) getTileState*() : INTEGER,NEW,EXTENSIBLE;

    PROCEDURE (self:PathFiller) nextTile*(),NEW,EXTENSIBLE;

    PROCEDURE (self:PathFiller) reset*(),NEW,EXTENSIBLE;

    PROCEDURE (self:PathFiller) setFillMode*(p0 : INTEGER),NEW,EXTENSIBLE;

    PROCEDURE (self:PathFiller) setOutputArea*(p0 : SHORTREAL;
                                               p1 : SHORTREAL;
                                               p2 : INTEGER;
                                               p3 : INTEGER),NEW,EXTENSIBLE;

    PROCEDURE (self:PathFiller) useProxy*(p0 : sun_dc_path.FastPathProducer),NEW,EXTENSIBLE;

    PROCEDURE (self:PathFiller) writeAlpha*(IN  p0 : ARRAY OF BYTE;
                                                p1 : INTEGER;
                                                p2 : INTEGER;
                                                p3 : INTEGER),NEW,EXTENSIBLE;

    PROCEDURE (self:PathFiller) writeAlpha*(IN  p0 : ARRAY OF CHAR;
                                                p1 : INTEGER;
                                                p2 : INTEGER;
                                                p3 : INTEGER),NEW,EXTENSIBLE;

    PROCEDURE (self:PathStroker) appendCubic*(p0 : SHORTREAL;
                                              p1 : SHORTREAL;
                                              p2 : SHORTREAL;
                                              p3 : SHORTREAL;
                                              p4 : SHORTREAL;
                                              p5 : SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:PathStroker) appendLine*(p0 : SHORTREAL;
                                             p1 : SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:PathStroker) appendQuadratic*(p0 : SHORTREAL;
                                                  p1 : SHORTREAL;
                                                  p2 : SHORTREAL;
                                                  p3 : SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:PathStroker) beginPath*(),NEW,EXTENSIBLE;

    PROCEDURE (self:PathStroker) beginSubpath*(p0 : SHORTREAL;
                                               p1 : SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:PathStroker) closedSubpath*(),NEW,EXTENSIBLE;

    PROCEDURE (self:PathStroker) endPath*(),NEW,EXTENSIBLE;

    PROCEDURE (self:PathStroker) finalize!(),EXTENSIBLE;

    PROCEDURE (self:PathStroker) getCPathConsumer*() : LONGINT,NEW,EXTENSIBLE;

    PROCEDURE (self:PathStroker) reset*(),NEW,EXTENSIBLE;

    PROCEDURE (self:PathStroker) setCaps*(p0 : INTEGER),NEW,EXTENSIBLE;

    PROCEDURE (self:PathStroker) setCorners*(p0 : INTEGER;
                                             p1 : SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:PathStroker) setOutputConsumer*(p0 : sun_dc_path.PathConsumer),NEW,EXTENSIBLE;

    PROCEDURE (self:PathStroker) setOutputT6*(IN  p0 : ARRAY OF SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:PathStroker) setPenDiameter*(p0 : SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:PathStroker) setPenFitting*(p0 : SHORTREAL;
                                                p1 : INTEGER),NEW,EXTENSIBLE;

    PROCEDURE (self:PathStroker) setPenT4*(IN  p0 : ARRAY OF SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:PathStroker) useProxy*(p0 : sun_dc_path.FastPathProducer),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) appendCubic*(p0 : SHORTREAL;
                                             p1 : SHORTREAL;
                                             p2 : SHORTREAL;
                                             p3 : SHORTREAL;
                                             p4 : SHORTREAL;
                                             p5 : SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) appendLine*(p0 : SHORTREAL;
                                            p1 : SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) appendQuadratic*(p0 : SHORTREAL;
                                                 p1 : SHORTREAL;
                                                 p2 : SHORTREAL;
                                                 p3 : SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) beginPath*(),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) beginPath*(IN  p0 : ARRAY OF SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) beginSubpath*(p0 : SHORTREAL;
                                              p1 : SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) closedSubpath*(),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) endPath*(),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) getAlphaBox*(IN  p0 : ARRAY OF INTEGER),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) getTileState*() : INTEGER,NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) nextTile*(),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) reset*(),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) setCaps*(p0 : INTEGER),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) setCorners*(p0 : INTEGER;
                                            p1 : SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) setDash*(IN  p0 : ARRAY OF SHORTREAL;
                                             p1 : SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) setDashT4*(IN  p0 : ARRAY OF SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) setOutputArea*(p0 : SHORTREAL;
                                               p1 : SHORTREAL;
                                               p2 : INTEGER;
                                               p3 : INTEGER),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) setPenDiameter*(p0 : SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) setPenDisplacement*(p0 : SHORTREAL;
                                                    p1 : SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) setPenFitting*(p0 : SHORTREAL;
                                               p1 : INTEGER),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) setPenT4*(IN  p0 : ARRAY OF SHORTREAL),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) setUsage*(p0 : INTEGER),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) useProxy*(p0 : sun_dc_path.FastPathProducer),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) writeAlpha*(IN  p0 : ARRAY OF BYTE;
                                                p1 : INTEGER;
                                                p2 : INTEGER;
                                                p3 : INTEGER),NEW,EXTENSIBLE;

    PROCEDURE (self:Rasterizer) writeAlpha*(IN  p0 : ARRAY OF CHAR;
                                                p1 : INTEGER;
                                                p2 : INTEGER;
                                                p3 : INTEGER),NEW,EXTENSIBLE;

    END sun_dc_pr.