123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- /* $Id$ */
-
- package org.apache.fop.render.intermediate;
-
- import java.awt.Color;
- import java.awt.Point;
- import java.io.IOException;
-
- import org.apache.fop.traits.RuleStyle;
-
- /**
- * Used primarily by {@link BorderPainter}, implementations are created for rendering
- * primitive graphical operations.
- *
- */
- public interface GraphicsPainter {
-
- /**
- * Draws a border line.
- * @param x1 X coordinate of the upper left corner
- * of the line's bounding rectangle (in millipoints)
- * @param y1 start Y coordinate of the upper left corner
- * of the line's bounding rectangle (in millipoints)
- * @param x2 end X coordinate of the lower right corner
- * of the line's bounding rectangle (in millipoints)
- * @param y2 end y coordinate of the lower right corner
- * of the line's bounding rectangle (in millipoints)
- * @param horz true if it is a horizontal line
- * @param startOrBefore true if the line is the start or end edge of a border box
- * @param style the border style
- * @param color the border color
- * @throws IOException if an I/O error occurs
- */
- void drawBorderLine(int x1, int y1, int x2, int y2,
- boolean horz, boolean startOrBefore, int style, Color color) throws IOException;
-
- /**
- * Draws a line/rule.
- * @param start start point (coordinates in millipoints)
- * @param end end point (coordinates in millipoints)
- * @param width width of the line
- * @param color the line color
- * @param style the rule style
- * @throws IOException if an I/O error occurs
- */
- void drawLine(Point start, Point end,
- int width, Color color, RuleStyle style) throws IOException;
-
- /**
- * Moves the cursor to the given coordinate.
- * @param x the X coordinate (in millipoints)
- * @param y the Y coordinate (in millipoints)
- * @throws IOException if an I/O error occurs
- */
- void moveTo(int x, int y) throws IOException;
-
- /**
- * Draws a line from the current cursor position to the given coordinates.
- * @param x the X coordinate (in millipoints)
- * @param y the Y coordinate (in millipoints)
- * @throws IOException if an I/O error occurs
- */
- void lineTo(int x, int y) throws IOException;
-
- /**
- * Draws an arc on the ellipse centered at (cx, cy) with width width and height height
- * from start angle startAngle (with respect to the x-axis counter-clockwise)
- * to the end angle endAngle.
- * The ellipses major axis are assumed to coincide with the coordinate axis.
- * The current position MUST coincide with the starting position on the ellipse.
- * @param startAngle the start angle
- * @param endAngle the end angle
- * @param cx the x coordinate of the ellipse center
- * @param cy the y coordinate of the ellipse center
- * @param width the extent of the ellipse in the x direction
- * @param height the extent of the ellipse in the y direction
- * @throws IOException if an I/O error occurs
- */
- void arcTo(final double startAngle, final double endAngle, final int cx, final int cy,
- final int width, final int height) throws IOException;
-
- /**
- * Rotate the coordinate frame
- * @param angle angle in radians to rotate the coordinate frame
- * @throws IOException if an I/O error occurs
- */
- void rotateCoordinates(double angle) throws IOException;
-
- /**
- * Translate the coordinate frame
- * @param xTranslate translation in the x direction
- * @param yTranslate translation in the y direction
- * @throws IOException if an I/O error occurs
- */
- void translateCoordinates(int xTranslate, int yTranslate) throws IOException;
-
- /**
- * Scale the coordinate frame
- * @param xScale scale factor in the x direction
- * @param yScale scale factor in the y direction
- * @throws IOException if an I/O error occurs
- */
- void scaleCoordinates(float xScale, float yScale) throws IOException;
-
- /**
- * Closes the current path.
- * @throws IOException if an I/O error occurs
- */
- void closePath() throws IOException;
-
- /**
- * Reduces the current clipping region to the current path.
- * @throws IOException if an I/O error occurs
- */
- void clip() throws IOException;
-
- /**
- * Save the graphics state on the stack.
- * @throws IOException if an I/O error occurs
- */
- void saveGraphicsState() throws IOException;
-
- /**
- * Restore the last graphics state from the stack.
- * @throws IOException if an I/O error occurs
- */
- void restoreGraphicsState() throws IOException;
- }
|