diff options
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/SwtDrawingStyle.java')
-rw-r--r-- | eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/SwtDrawingStyle.java | 319 |
1 files changed, 319 insertions, 0 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/SwtDrawingStyle.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/SwtDrawingStyle.java new file mode 100644 index 000000000..93a33283c --- /dev/null +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/SwtDrawingStyle.java @@ -0,0 +1,319 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php + * + * 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. + */ + +package com.android.ide.eclipse.adt.internal.editors.layout.gle2; + +import com.android.ide.common.api.DrawingStyle; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.RGB; + +/** + * Description of the drawing styles with specific color, line style and alpha + * definitions. This class corresponds to the more generic {@link DrawingStyle} + * class which defines the drawing styles but does not introduce any specific + * SWT values to the API clients. + * <p> + * TODO: This class should eventually be replaced by a scheme where the color + * constants are instead coming from the theme. + */ +public enum SwtDrawingStyle { + /** + * The style definition corresponding to {@link DrawingStyle#SELECTION} + */ + SELECTION(new RGB(0x00, 0x99, 0xFF), 192, new RGB(0x00, 0x99, 0xFF), 192, 1, SWT.LINE_SOLID), + + /** + * The style definition corresponding to {@link DrawingStyle#GUIDELINE} + */ + GUIDELINE(new RGB(0x00, 0xAA, 0x00), 192, SWT.LINE_SOLID), + + /** + * The style definition corresponding to {@link DrawingStyle#GUIDELINE} + */ + GUIDELINE_SHADOW(new RGB(0x00, 0xAA, 0x00), 192, SWT.LINE_SOLID), + + /** + * The style definition corresponding to {@link DrawingStyle#GUIDELINE_DASHED} + */ + GUIDELINE_DASHED(new RGB(0x00, 0xAA, 0x00), 192, SWT.LINE_CUSTOM), + + /** + * The style definition corresponding to {@link DrawingStyle#DISTANCE} + */ + DISTANCE(new RGB(0xFF, 0x00, 0x00), 192 - 32, SWT.LINE_SOLID), + + /** + * The style definition corresponding to {@link DrawingStyle#GRID} + */ + GRID(new RGB(0xAA, 0xAA, 0xAA), 128, SWT.LINE_SOLID), + + /** + * The style definition corresponding to {@link DrawingStyle#HOVER} + */ + HOVER(null, 0, new RGB(0xFF, 0xFF, 0xFF), 40, 1, SWT.LINE_DOT), + + /** + * The style definition corresponding to {@link DrawingStyle#HOVER} + */ + HOVER_SELECTION(null, 0, new RGB(0xFF, 0xFF, 0xFF), 10, 1, SWT.LINE_DOT), + + /** + * The style definition corresponding to {@link DrawingStyle#ANCHOR} + */ + ANCHOR(new RGB(0x00, 0x99, 0xFF), 96, SWT.LINE_SOLID), + + /** + * The style definition corresponding to {@link DrawingStyle#OUTLINE} + */ + OUTLINE(new RGB(0x88, 0xFF, 0x88), 160, SWT.LINE_SOLID), + + /** + * The style definition corresponding to {@link DrawingStyle#DROP_RECIPIENT} + */ + DROP_RECIPIENT(new RGB(0xFF, 0x99, 0x00), 255, new RGB(0xFF, 0x99, 0x00), 160, 2, + SWT.LINE_SOLID), + + /** + * The style definition corresponding to {@link DrawingStyle#DROP_ZONE} + */ + DROP_ZONE(new RGB(0x00, 0xAA, 0x00), 220, new RGB(0x55, 0xAA, 0x00), 200, 1, SWT.LINE_SOLID), + + /** + * The style definition corresponding to + * {@link DrawingStyle#DROP_ZONE_ACTIVE} + */ + DROP_ZONE_ACTIVE(new RGB(0x00, 0xAA, 0x00), 220, new RGB(0x00, 0xAA, 0x00), 128, 2, + SWT.LINE_SOLID), + + /** + * The style definition corresponding to {@link DrawingStyle#DROP_PREVIEW} + */ + DROP_PREVIEW(new RGB(0xFF, 0x99, 0x00), 255, null, 0, 2, SWT.LINE_CUSTOM), + + /** + * The style definition corresponding to {@link DrawingStyle#RESIZE_PREVIEW} + */ + RESIZE_PREVIEW(new RGB(0xFF, 0x99, 0x00), 255, null, 0, 2, SWT.LINE_SOLID), + + /** + * The style used to show a proposed resize bound which is being rejected (for example, + * because there is no near edge to attach to in a RelativeLayout). + */ + RESIZE_FAIL(new RGB(0xFF, 0x99, 0x00), 255, null, 0, 2, SWT.LINE_CUSTOM), + + /** + * The style definition corresponding to {@link DrawingStyle#HELP} + */ + HELP(new RGB(0xFF, 0xFF, 0xFF), 255, new RGB(0x00, 0x00, 0x00), 128, 1, SWT.LINE_SOLID), + + /** + * The style definition corresponding to {@link DrawingStyle#INVALID} + */ + INVALID(new RGB(0xFF, 0xFF, 0xFF), 255, new RGB(0xFF, 0x00, 0x00), 64, 2, SWT.LINE_SOLID), + + /** + * The style definition corresponding to {@link DrawingStyle#DEPENDENCY} + */ + DEPENDENCY(new RGB(0xFF, 0xFF, 0xFF), 255, new RGB(0xFF, 0xFF, 0x00), 24, 2, SWT.LINE_SOLID), + + /** + * The style definition corresponding to {@link DrawingStyle#CYCLE} + */ + CYCLE(new RGB(0xFF, 0x00, 0x00), 192, null, 0, 1, SWT.LINE_SOLID), + + /** + * The style definition corresponding to {@link DrawingStyle#DRAGGED} + */ + DRAGGED(new RGB(0xFF, 0xFF, 0xFF), 255, new RGB(0x00, 0xFF, 0x00), 16, 2, SWT.LINE_SOLID), + + /** + * The style definition corresponding to {@link DrawingStyle#EMPTY} + */ + EMPTY(new RGB(0xFF, 0xFF, 0x55), 255, new RGB(0xFF, 0xFF, 0x55), 255, 1, SWT.LINE_DASH), + + /** + * The style definition corresponding to {@link DrawingStyle#CUSTOM1} + */ + CUSTOM1(new RGB(0xFF, 0x00, 0xFF), 255, null, 0, 1, SWT.LINE_SOLID), + + /** + * The style definition corresponding to {@link DrawingStyle#CUSTOM2} + */ + CUSTOM2(new RGB(0x00, 0xFF, 0xFF), 255, null, 0, 1, SWT.LINE_DOT); + + /** + * Construct a new style value with the given foreground, background, width, + * linestyle and transparency. + * + * @param stroke A color descriptor for the foreground color, or null if no + * foreground color should be set + * @param fill A color descriptor for the background color, or null if no + * foreground color should be set + * @param lineWidth The line width, in pixels, or 0 if no line width should + * be set + * @param lineStyle The SWT line style - such as {@link SWT#LINE_SOLID}. + * @param strokeAlpha The alpha value of the stroke, an integer in the range 0 to 255 + * where 0 is fully transparent and 255 is fully opaque. + * @param fillAlpha The alpha value of the fill, an integer in the range 0 to 255 + * where 0 is fully transparent and 255 is fully opaque. + */ + private SwtDrawingStyle(RGB stroke, int strokeAlpha, RGB fill, int fillAlpha, int lineWidth, + int lineStyle) { + mStroke = stroke; + mFill = fill; + mLineWidth = lineWidth; + mLineStyle = lineStyle; + mStrokeAlpha = strokeAlpha; + mFillAlpha = fillAlpha; + } + + /** + * Convenience constructor for typical drawing styles, which do not specify + * a fill and use a standard thickness line + * + * @param stroke Stroke color to be used (e.g. for the border/foreground) + * @param strokeAlpha Transparency to use for the stroke; 0 is transparent + * and 255 is fully opaque. + * @param lineStyle The SWT line style - such as {@link SWT#LINE_SOLID}. + */ + private SwtDrawingStyle(RGB stroke, int strokeAlpha, int lineStyle) { + this(stroke, strokeAlpha, null, 255, 1, lineStyle); + } + + /** + * Return the stroke/foreground/border RGB color description to be used for + * this style, or null if none + */ + public RGB getStrokeColor() { + return mStroke; + } + + /** + * Return the fill/background/interior RGB color description to be used for + * this style, or null if none + */ + public RGB getFillColor() { + return mFill; + } + + /** Return the line width to be used for this style */ + public int getLineWidth() { + return mLineWidth; + } + + /** Return the SWT line style to be used for this style */ + public int getLineStyle() { + return mLineStyle; + } + + /** + * Return the stroke alpha value (in the range 0,255) to be used for this + * style + */ + public int getStrokeAlpha() { + return mStrokeAlpha; + } + + /** + * Return the fill alpha value (in the range 0,255) to be used for this + * style + */ + public int getFillAlpha() { + return mFillAlpha; + } + + /** + * Return the corresponding SwtDrawingStyle for the given + * {@link DrawingStyle} + * @param style The style to convert from a {@link DrawingStyle} to a {@link SwtDrawingStyle}. + * @return A corresponding {@link SwtDrawingStyle}. + */ + public static SwtDrawingStyle of(DrawingStyle style) { + switch (style) { + case SELECTION: + return SELECTION; + case GUIDELINE: + return GUIDELINE; + case GUIDELINE_SHADOW: + return GUIDELINE_SHADOW; + case GUIDELINE_DASHED: + return GUIDELINE_DASHED; + case DISTANCE: + return DISTANCE; + case GRID: + return GRID; + case HOVER: + return HOVER; + case HOVER_SELECTION: + return HOVER_SELECTION; + case ANCHOR: + return ANCHOR; + case OUTLINE: + return OUTLINE; + case DROP_ZONE: + return DROP_ZONE; + case DROP_ZONE_ACTIVE: + return DROP_ZONE_ACTIVE; + case DROP_RECIPIENT: + return DROP_RECIPIENT; + case DROP_PREVIEW: + return DROP_PREVIEW; + case RESIZE_PREVIEW: + return RESIZE_PREVIEW; + case RESIZE_FAIL: + return RESIZE_FAIL; + case HELP: + return HELP; + case INVALID: + return INVALID; + case DEPENDENCY: + return DEPENDENCY; + case CYCLE: + return CYCLE; + case DRAGGED: + return DRAGGED; + case EMPTY: + return EMPTY; + case CUSTOM1: + return CUSTOM1; + case CUSTOM2: + return CUSTOM2; + + // Internal error + default: + throw new IllegalArgumentException("Unknown style " + style); + } + } + + /** RGB description of the stroke/foreground/border color */ + private final RGB mStroke; + + /** RGB description of the fill/foreground/interior color */ + private final RGB mFill; + + /** Pixel thickness of the stroke/border */ + private final int mLineWidth; + + /** SWT line style of the border/stroke */ + private final int mLineStyle; + + /** Alpha (in the range 0-255) of the stroke/border */ + private final int mStrokeAlpha; + + /** Alpha (in the range 0-255) of the fill/interior */ + private final int mFillAlpha; +} |