Home | History | Annotate | Download | only in gscripts
      1 /*
      2  * Copyright (C) 2010 The Android Open Source Project
      3  *
      4  * Licensed under the Eclipse Public License, Version 1.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.eclipse.org/org/documents/epl-v10.php
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.ide.eclipse.adt.editors.layout.gscripts;
     18 
     19 /**
     20  * Represents a graphical context that rules can use to draw on the canvas.
     21  * <p/>
     22  * The wrapper GC is only valid during the context of a paint operation.
     23  * This means {@link IViewRule}s should not cache this object and call it at
     24  * just about any time, it is only valid during a call that actually receives
     25  * the GC wrapper.
     26  */
     27 public interface IGraphics {
     28 
     29     /**
     30      * Registers a color using 0x00rrggbb where each component is
     31      * 0..0xFF.
     32      * <p/>
     33      * Transparency is handled separately using {@link #setAlpha(int)}.
     34      * <p/>
     35      * If the same color is registered twice, the same object will
     36      * be returned.
     37      */
     38     IColor registerColor(int rgb);
     39 
     40     /**
     41      * Returns the height, in pixels, of the default font.
     42      */
     43     int getFontHeight();
     44 
     45     /**
     46      * Sets the foreground color. The foreground color is used
     47      * for drawing operations including when text is drawn.
     48      */
     49     void setForeground(IColor color);
     50 
     51     /**
     52      * Sets the background color. The background color is used
     53      * for fill operations.
     54      */
     55     void setBackground(IColor color);
     56 
     57     /**
     58      * Sets the receiver's alpha value which must be
     59      * between 0 (transparent) and 255 (opaque).
     60      * <p>
     61      * This operation requires the operating system's advanced
     62      * graphics subsystem which may not be available on some
     63      * platforms.
     64      *
     65      * @return False if the GC doesn't support alpha.
     66      */
     67     boolean setAlpha(int alpha);
     68 
     69     /**
     70      * A line style for {@link IGraphics#setLineStyle(LineStyle)}.
     71      */
     72     enum LineStyle {
     73         /** Style for solid lines. */
     74         LINE_SOLID,
     75         /** Style for dashed lines. */
     76         LINE_DASH,
     77         /** Style for dotted lines. */
     78         LINE_DOT,
     79         /** Style for alternating dash-dot lines. */
     80         LINE_DASHDOT,
     81         /** Style for dash-dot-dot lines. */
     82         LINE_DASHDOTDOT
     83     }
     84 
     85     /**
     86      * Sets the current line style.
     87      */
     88     void setLineStyle(LineStyle style);
     89 
     90     /**
     91      * Sets the width that will be used when drawing lines.
     92      * The operation is ignored if <var>width</var> is less than 1.
     93      */
     94     void setLineWidth(int width);
     95 
     96     /**
     97      * Draws a line between 2 points, using the current foreground
     98      * color and alpha.
     99      */
    100     void drawLine(int x1, int y1, int x2, int y2);
    101     /**
    102      * Draws a line between 2 points, using the current foreground
    103      * color and alpha.
    104      */
    105     void drawLine(Point p1, Point p2);
    106 
    107     /**
    108      * Draws a rectangle outline between 2 points, using the current
    109      * foreground color and alpha.
    110      */
    111     void drawRect(int x1, int y1, int x2, int y2);
    112     /**
    113      * Draws a rectangle outline between 2 points, using the current
    114      * foreground color and alpha.
    115      */
    116     void drawRect(Point p1, Point p2);
    117     /**
    118      * Draws a rectangle outline between 2 points, using the current
    119      * foreground color and alpha.
    120      */
    121     void drawRect(Rect r);
    122 
    123     /**
    124      * Fills a rectangle outline between 2 points, using the current
    125      * background color and alpha.
    126      */
    127     void fillRect(int x1, int y1, int x2, int y2);
    128     /**
    129      * Fills a rectangle outline between 2 points, using the current
    130      * background color and alpha.
    131      */
    132     void fillRect(Point p1, Point p2);
    133     /**
    134      * Fills a rectangle outline between 2 points, using the current
    135      * background color and alpha.
    136      */
    137     void fillRect(Rect r);
    138 
    139     /**
    140      * Draws the given string, using the current foreground color.
    141      * No tab expansion or carriage return processing will be performed.
    142      *
    143      * @param string the string to be drawn.
    144      * @param x the x coordinate of the top left corner of the text.
    145      * @param y the y coordinate of the top left corner of the text.
    146      */
    147     void drawString(String string, int x, int y);
    148 
    149     /**
    150      * Draws the given string, using the current foreground color.
    151      * No tab expansion or carriage return processing will be performed.
    152      *
    153      * @param string the string to be drawn.
    154      * @param topLeft the top left corner of the text.
    155      */
    156     void drawString(String string, Point topLeft);
    157 }
    158