diff options
author | Xavier Ducrohet <xav@google.com> | 2010-01-21 17:55:40 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-01-21 17:55:40 -0800 |
commit | c22b3ca198dcb1d11c1a9cb8e17eb9c66b2afaa5 (patch) | |
tree | 8f67df6b20bfd8912e623924dff331b467cfc28d /tools/layoutlib | |
parent | 4e8e87d905054737dc51ef0ba90f0a0a518be000 (diff) | |
parent | da84d6a1b1c37376d48f92ae59b76f1c891772f6 (diff) | |
download | frameworks_base-c22b3ca198dcb1d11c1a9cb8e17eb9c66b2afaa5.zip frameworks_base-c22b3ca198dcb1d11c1a9cb8e17eb9c66b2afaa5.tar.gz frameworks_base-c22b3ca198dcb1d11c1a9cb8e17eb9c66b2afaa5.tar.bz2 |
am da84d6a1: am 908a8111: Merge "ADT/Layoutlib: Add dash support to stroke." into eclair
Merge commit 'da84d6a1b1c37376d48f92ae59b76f1c891772f6'
* commit 'da84d6a1b1c37376d48f92ae59b76f1c891772f6':
ADT/Layoutlib: Add dash support to stroke.
Diffstat (limited to 'tools/layoutlib')
3 files changed, 92 insertions, 38 deletions
diff --git a/tools/layoutlib/bridge/src/android/graphics/Canvas.java b/tools/layoutlib/bridge/src/android/graphics/Canvas.java index 9111286..8bf5e85 100644 --- a/tools/layoutlib/bridge/src/android/graphics/Canvas.java +++ b/tools/layoutlib/bridge/src/android/graphics/Canvas.java @@ -104,22 +104,35 @@ public class Canvas extends _Original_Canvas { * Creates a new {@link Graphics2D} based on the {@link Paint} parameters. * <p/>The object must be disposed ({@link Graphics2D#dispose()}) after being used. */ - private Graphics2D getNewGraphics(Paint paint, Graphics2D g) { - + private Graphics2D getCustomGraphics(Paint paint) { // make new one + Graphics2D g = getGraphics2d(); g = (Graphics2D)g.create(); + + // configure it g.setColor(new Color(paint.getColor())); int alpha = paint.getAlpha(); float falpha = alpha / 255.f; - if (paint.getStyle() == Style.STROKE) { - g.setStroke(new BasicStroke( - paint.getStrokeWidth(), - paint.getStrokeCap().getJavaCap(), - paint.getStrokeJoin().getJavaJoin(), - paint.getStrokeMiter() - // FIXME: add dash info. - )); + Style style = paint.getStyle(); + if (style == Style.STROKE || style == Style.FILL_AND_STROKE) { + PathEffect e = paint.getPathEffect(); + if (e instanceof DashPathEffect) { + DashPathEffect dpe = (DashPathEffect)e; + g.setStroke(new BasicStroke( + paint.getStrokeWidth(), + paint.getStrokeCap().getJavaCap(), + paint.getStrokeJoin().getJavaJoin(), + paint.getStrokeMiter(), + dpe.getIntervals(), + dpe.getPhase())); + } else { + g.setStroke(new BasicStroke( + paint.getStrokeWidth(), + paint.getStrokeCap().getJavaCap(), + paint.getStrokeJoin().getJavaJoin(), + paint.getStrokeMiter())); + } } Xfermode xfermode = paint.getXfermode(); @@ -795,11 +808,9 @@ public class Canvas extends _Original_Canvas { } private final void doDrawRect(int left, int top, int width, int height, Paint paint) { - // get current graphisc if (width > 0 && height > 0) { - Graphics2D g = getGraphics2d(); - - g = getNewGraphics(paint, g); + // get a Graphics2D object configured with the drawing parameters. + Graphics2D g = getCustomGraphics(paint); Style style = paint.getStyle(); @@ -822,11 +833,9 @@ public class Canvas extends _Original_Canvas { */ @Override public void drawRoundRect(RectF rect, float rx, float ry, Paint paint) { - // get current graphisc if (rect.width() > 0 && rect.height() > 0) { - Graphics2D g = getGraphics2d(); - - g = getNewGraphics(paint, g); + // get a Graphics2D object configured with the drawing parameters. + Graphics2D g = getCustomGraphics(paint); Style style = paint.getStyle(); @@ -856,10 +865,8 @@ public class Canvas extends _Original_Canvas { */ @Override public void drawLine(float startX, float startY, float stopX, float stopY, Paint paint) { - // get current graphisc - Graphics2D g = getGraphics2d(); - - g = getNewGraphics(paint, g); + // get a Graphics2D object configured with the drawing parameters. + Graphics2D g = getCustomGraphics(paint); g.drawLine((int)startX, (int)startY, (int)stopX, (int)stopY); @@ -872,10 +879,8 @@ public class Canvas extends _Original_Canvas { */ @Override public void drawLines(float[] pts, int offset, int count, Paint paint) { - // get current graphisc - Graphics2D g = getGraphics2d(); - - g = getNewGraphics(paint, g); + // get a Graphics2D object configured with the drawing parameters. + Graphics2D g = getCustomGraphics(paint); for (int i = 0 ; i < count ; i += 4) { g.drawLine((int)pts[i + offset], (int)pts[i + offset + 1], @@ -899,10 +904,8 @@ public class Canvas extends _Original_Canvas { */ @Override public void drawCircle(float cx, float cy, float radius, Paint paint) { - // get current graphisc - Graphics2D g = getGraphics2d(); - - g = getNewGraphics(paint, g); + // get a Graphics2D object configured with the drawing parameters. + Graphics2D g = getCustomGraphics(paint); Style style = paint.getStyle(); @@ -926,10 +929,8 @@ public class Canvas extends _Original_Canvas { */ @Override public void drawOval(RectF oval, Paint paint) { - // get current graphics - Graphics2D g = getGraphics2d(); - - g = getNewGraphics(paint, g); + // get a Graphics2D object configured with the drawing parameters. + Graphics2D g = getCustomGraphics(paint); Style style = paint.getStyle(); @@ -951,10 +952,8 @@ public class Canvas extends _Original_Canvas { */ @Override public void drawPath(Path path, Paint paint) { - // get current graphics - Graphics2D g = getGraphics2d(); - - g = getNewGraphics(paint, g); + // get a Graphics2D object configured with the drawing parameters. + Graphics2D g = getCustomGraphics(paint); Style style = paint.getStyle(); diff --git a/tools/layoutlib/bridge/src/android/graphics/DashPathEffect.java b/tools/layoutlib/bridge/src/android/graphics/DashPathEffect.java new file mode 100644 index 0000000..46d4c70 --- /dev/null +++ b/tools/layoutlib/bridge/src/android/graphics/DashPathEffect.java @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed 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. + */ + +package android.graphics; + +public class DashPathEffect extends PathEffect { + + private final float[] mIntervals; + private final float mPhase; + + /** + * The intervals array must contain an even number of entries (>=2), with + * the even indices specifying the "on" intervals, and the odd indices + * specifying the "off" intervals. phase is an offset into the intervals + * array (mod the sum of all of the intervals). The intervals array + * controls the length of the dashes. The paint's strokeWidth controls the + * thickness of the dashes. + * Note: this patheffect only affects drawing with the paint's style is set + * to STROKE or STROKE_AND_FILL. It is ignored if the drawing is done with + * style == FILL. + * @param intervals array of ON and OFF distances + * @param phase offset into the intervals array + */ + public DashPathEffect(float intervals[], float phase) { + if (intervals.length < 2) { + throw new ArrayIndexOutOfBoundsException(); + } + + mIntervals = intervals; + mPhase = phase; + } + + public float[] getIntervals() { + return mIntervals; + } + + public float getPhase() { + return mPhase; + } +} + diff --git a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java index 2623570..2ed8641 100644 --- a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java +++ b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java @@ -47,6 +47,7 @@ public class CreateInfo { "android.graphics.BitmapShader", "android.graphics._Original_BitmapShader", "android.graphics.Canvas", "android.graphics._Original_Canvas", "android.graphics.ComposeShader", "android.graphics._Original_ComposeShader", + "android.graphics.DashPathEffect", "android.graphics._Original_DashPathEffect", "android.graphics.LinearGradient", "android.graphics._Original_LinearGradient", "android.graphics.Matrix", "android.graphics._Original_Matrix", "android.graphics.Paint", "android.graphics._Original_Paint", |