| /********************************************************************** |
| * Copyright (c) 2005, 2014 IBM Corporation, Ericsson |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * IBM - Initial API and implementation |
| * Bernd Hufmann - Updated for TMF |
| **********************************************************************/ |
| |
| package org.eclipse.tracecompass.tmf.ui.views.uml2sd.drawings; |
| |
| /** |
| * Interface for a graphical context. |
| * |
| * @version 1.0 |
| * @author sveyrier |
| * |
| */ |
| public interface IGC { |
| |
| /** |
| * Set the current line style |
| * |
| * @param style the new line style |
| */ |
| void setLineStyle(int style); |
| |
| /** |
| * Returns current the line style used in the graphical context |
| * |
| * @return the current line style |
| */ |
| int getLineStyle(); |
| |
| /** |
| * Returns the contents x coordinate that is at the upper left corner of the view |
| * |
| * @return the contents x coordinate |
| */ |
| int getContentsX(); |
| |
| /** |
| * Returns the contents y coordinate that is at the upper left corner of the view |
| * |
| * @return the contents y coordinate |
| */ |
| int getContentsY(); |
| |
| /** |
| * Returns the contents visible width |
| * |
| * @return the contents width |
| */ |
| int getVisibleWidth(); |
| |
| /** |
| * Returns the contents visible height |
| * |
| * @return the contents height |
| */ |
| int getVisibleHeight(); |
| |
| /** |
| * Translates the given contents x coordinate into view x coordinate |
| * |
| * @param x the x coordinate to translate |
| * @return the corresponding view x coordinate |
| */ |
| int contentsToViewX(int x); |
| |
| /** |
| * Translates the given contents y coordinate into view y coordinate |
| * |
| * @param y the y coordinate to translate |
| * @return the corresponding view y coordinate |
| */ |
| int contentsToViewY(int y); |
| |
| /** |
| * Draws a line, using the foreground color, between the points (x1, y1) and (x2, y2). |
| * |
| * @param x1 the first point's x coordinate |
| * @param y1 the first point's y coordinate |
| * @param x2 the second point's x coordinate |
| * @param y2 the second point's y coordinate |
| */ |
| void drawLine(int x1, int y1, int x2, int y2); |
| |
| /** |
| * Draws the outline of the rectangle specified by the arguments, using the receiver's foreground color. The left |
| * and right edges of the rectangle are at x and x + width. The top and bottom edges are at y and y + height. |
| * |
| * @param x the x coordinate of the rectangle to be drawn |
| * @param y the y coordinate of the rectangle to be drawn |
| * @param width the width of the rectangle to be drawn |
| * @param height the height of the rectangle to be drawn |
| */ |
| void drawRectangle(int x, int y, int width, int height); |
| |
| /** |
| * Draws a rectangle, based on the specified arguments, which has the appearance of the platform's focus rectangle |
| * if the platform supports such a notion, and otherwise draws a simple rectangle in the receiver's foreground |
| * color. |
| * |
| * @param x the x coordinate of the rectangle |
| * @param y the y coordinate of the rectangle |
| * @param width the width of the rectangle |
| * @param height the height of the rectangle |
| */ |
| void drawFocus(int x, int y, int width, int height); |
| |
| /** |
| * Fills the interior of the closed polygon which is defined by the specified array of integer coordinates, using |
| * the receiver's background color. The array contains alternating x and y values which are considered to represent |
| * points which are the vertices of the polygon. Lines are drawn between each consecutive pair, and between the |
| * first pair and last pair in the array. |
| * |
| * @param points an array of alternating x and y values which are the vertices of the polygon |
| */ |
| void fillPolygon(int[] points); |
| |
| /** |
| * Draws the closed polygon which is defined by the specified array of integer coordinates, using the receiver's |
| * foreground color. The array contains alternating x and y values which are considered to represent points which |
| * are the vertices of the polygon. Lines are drawn between each consecutive pair, and between the first pair and |
| * last pair in the array. |
| * |
| * @param points an array of alternating x and y values which are the vertices of the polygon |
| */ |
| void drawPolygon(int[] points); |
| |
| /** |
| * Fills the interior of the rectangle specified by the arguments, using the receiver's background color. |
| * |
| * @param x the x coordinate of the rectangle to be filled |
| * @param y the y coordinate of the rectangle to be filled |
| * @param width the width of the rectangle to be filled |
| * @param height the height of the rectangle to be filled |
| */ |
| void fillRectangle(int x, int y, int width, int height); |
| |
| /** |
| * Fills the interior of the specified rectangle with a gradient sweeping from left to right or top to bottom |
| * progressing from the graphical context gradient color to its background color. |
| * |
| * @param x the x coordinate of the rectangle to be filled |
| * @param y the y coordinate of the rectangle to be filled |
| * @param width the width of the rectangle to be filled, may be negative (inverts direction of gradient if |
| * horizontal) |
| * @param height the height of the rectangle to be filled, may be negative (inverts direction of gradient if |
| * horizontal) |
| * @param vertical if true sweeps from top to bottom, else sweeps from left to right |
| */ |
| void fillGradientRectangle(int x, int y, int width, int height, boolean vertical); |
| |
| /** |
| * Returns the given string width in pixels |
| * |
| * @param name the string |
| * @return the string width |
| */ |
| int textExtent(String name); |
| |
| /** |
| * Draws the given string, using the receiver's current font and foreground color. Tab expansion and carriage return |
| * processing are performed. If trans is true, then the background of the rectangular area where the text is being |
| * drawn will not be modified, otherwise it will be filled with the receiver's background color. |
| * |
| * @param string the string to be drawn |
| * @param x the x coordinate of the top left corner of the rectangular area where the text is to be drawn |
| * @param y the y coordinate of the top left corner of the rectangular area where the text is to be drawn |
| * @param trans if true the background will be transparent, otherwise it will be opaque |
| */ |
| void drawText(String string, int x, int y, boolean trans); |
| |
| /** |
| * Draws the given string, using the receiver's current font and foreground color. Tab expansion and carriage return |
| * processing are performed. The background of the rectangular area where the text is being drawn will be filled |
| * with the receiver's background color. |
| * |
| * @param string the string to be drawn |
| * @param x the x coordinate of the top left corner of the rectangular area where the text is to be drawn |
| * @param y the y coordinate of the top left corner of the rectangular area where the text is to be drawn |
| */ |
| void drawText(String string, int x, int y); |
| |
| /** |
| * Fills the interior of an oval, within the specified rectangular area, with the receiver's background color. |
| * |
| * @param x the x coordinate of the upper left corner of the oval to be filled |
| * @param y the y coordinate of the upper left corner of the oval to be filled |
| * @param width the width of the oval to be filled |
| * @param height the width of the oval to be filled |
| */ |
| void fillOval(int x, int y, int width, int height); |
| |
| /** |
| * Returns current the background color used in the graphical context |
| * |
| * @return the background color |
| */ |
| IColor getBackground(); |
| |
| /** |
| * Returns current the background color used in the graphical context |
| * |
| * @return the background color |
| */ |
| IColor getForeground(); |
| |
| /** |
| * Set the graphical context foreground color |
| * |
| * @param color the foreground color |
| */ |
| void setBackground(IColor color); |
| |
| /** |
| * Set the graphical context background color |
| * |
| * @param color the background color |
| */ |
| void setForeground(IColor color); |
| |
| /** |
| * Set the color to use when filling regions using gradient. The color will progess from the given color to the |
| * current background color |
| * |
| * @param color the gardiient color to use |
| */ |
| void setGradientColor(IColor color); |
| |
| /** |
| * Set the line width to use for drawing |
| * |
| * @param width the line width |
| */ |
| void setLineWidth(int width); |
| |
| /** |
| * Returns the current graphical context line width used for drawing |
| * |
| * @return the line width |
| */ |
| int getLineWidth(); |
| |
| /** |
| * Returns the LineDotD style constant |
| * |
| * @return the constant value |
| */ |
| int getLineDotStyle(); |
| |
| /** |
| * Returns the LineDash style constant |
| * |
| * @return the constant |
| */ |
| int getLineDashStyle(); |
| |
| /** |
| * Returns the LineSolid style constant |
| * |
| * @return the constant |
| */ |
| int getLineSolidStyle(); |
| |
| /** |
| * Draws the given string centered into the given rectangle. If the string cannot fit in the rectangle area, the |
| * string is truncated. If trans is true, then the background of the rectangular area where the text is being drawn |
| * will not be modified, otherwise it will be filled with the receiver's background color. |
| * |
| * @param name the string to draw |
| * @param x the x coordinate of the rectangle to draw the string |
| * @param y the y coordinate of the rectangle to draw the string |
| * @param width the width of the rectangle to draw the string |
| * @param height the height of the rectangle to draw the string |
| * @param trans if true the background will be transparent, otherwise it will be opaque |
| */ |
| void drawTextTruncatedCentred(String name, int x, int y, int width, int height, boolean trans); |
| |
| /** |
| * Draws the given string into the given rectangle (left justify) If the string cannot fit in the rectangle area, |
| * the string is truncated. If trans is true, then the background of the rectangular area where the text is being |
| * drawn will not be modified, otherwise it will be filled with the receiver's background color. |
| * |
| * @param name The text to put in the rectangle |
| * @param x the x coordinate of the rectangle to draw the string |
| * @param y the y coordinate of the rectangle to draw the string |
| * @param width the width of the rectangle to draw the string |
| * @param height the height of the rectangle to draw the string |
| * @param trans if true the background will be transparent, otherwise it will be opaque |
| */ |
| void drawTextTruncated(String name, int x, int y, int width, int height, boolean trans); |
| |
| /** |
| * Copies a the source image into a (potentially different sized) rectangular area in the graphical context. If the |
| * source image has smaller sizes, then the source area will be stretched to fit the destination area as it is |
| * copied. |
| * |
| * @param image the image to draw |
| * @param x the x coordinate in the destination to copy to |
| * @param y the y coordinate in the destination to copy to |
| * @param maxWith the width in pixels of the destination rectangle |
| * @param maxHeight the height in pixels of the destination rectangle |
| */ |
| void drawImage(IImage image, int x, int y, int maxWith, int maxHeight); |
| |
| /** |
| * Draws the outline of a circular or elliptical arc within the specified rectangular area. The resulting arc begins |
| * at startAngle and extends for arcAngle degrees, using the current color. Angles are interpreted such that 0 |
| * degrees is at the 3 o'clock position. A positive value indicates a counter-clockwise rotation while a negative |
| * value indicates a clockwise rotation. The center of the arc is the center of the rectangle whose origin is (x, y) |
| * and whose size is specified by the width and height arguments. The resulting arc covers an area width + 1 pixels |
| * wide by height + 1 pixels tall. |
| * |
| * @param x the x coordinate of the upper-left corner of the arc to be drawn |
| * @param y the y coordinate of the upper-left corner of the arc to be drawn |
| * @param width the width of the arc to be drawn |
| * @param height the height of the arc to be drawn |
| * @param startAngle the beginning angle |
| * @param endAngle the ending angle |
| */ |
| void drawArc(int x, int y, int width, int height, int startAngle, int endAngle); |
| |
| /** |
| * Set the current font used in the graphical context |
| * |
| * @param font the font to use |
| */ |
| void setFont(IFont font); |
| |
| /** |
| * Returns the font height given font |
| * |
| * @param font The font to check for |
| * @return the the font height |
| */ |
| int getFontHeight(IFont font); |
| |
| /** |
| * Returns the average character width for the given font |
| * |
| * @param font The font to check for |
| * @return the average width |
| */ |
| int getFontWidth(IFont font); |
| |
| /** |
| * Creates a color with the given RGB values |
| * |
| * @param r the red component |
| * @param g the green component |
| * @param b the blue component |
| * @return the color |
| */ |
| IColor createColor(int r, int g, int b); |
| |
| /** |
| * Returns the zoom factor applied in both x and y directions when drawing |
| * |
| * @return the zoom factor |
| */ |
| float getZoom(); |
| |
| /** |
| * Draws text with focus style. |
| * |
| * @param focus <code>true</code> if item has focus else <code>false</code> |
| */ |
| void setDrawTextWithFocusStyle(boolean focus); |
| } |