Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2b30a4a5 authored by Xavier Ducrohet's avatar Xavier Ducrohet Committed by Android (Google) Code Review
Browse files

Merge "ADT/Layoutlib: properly handle stroke information." into eclair

parents 4d69ac66 5ac8f409
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import android.graphics.Paint.Style;
import android.graphics.Region.Op;

import java.awt.AlphaComposite;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
@@ -104,12 +105,23 @@ public class Canvas extends _Original_Canvas {
     * <p/>The object must be disposed ({@link Graphics2D#dispose()}) after being used.
     */
    private Graphics2D getNewGraphics(Paint paint, Graphics2D g) {

        // make new one
        g = (Graphics2D)g.create();
        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.
                    ));
        }

        Xfermode xfermode = paint.getXfermode();
        if (xfermode instanceof PorterDuffXfermode) {
            PorterDuff.Mode mode = ((PorterDuffXfermode)xfermode).getMode();
@@ -784,7 +796,7 @@ 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) {
        if (width > 0 && height > 0) {
            Graphics2D g = getGraphics2d();

            g = getNewGraphics(paint, g);
@@ -811,7 +823,7 @@ 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) {
        if (rect.width() > 0 && rect.height() > 0) {
            Graphics2D g = getGraphics2d();

            g = getNewGraphics(paint, g);
+27 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.text.SpannableStringBuilder;
import android.text.SpannedString;
import android.text.TextUtils;

import java.awt.BasicStroke;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.font.FontRenderContext;
@@ -127,6 +128,19 @@ public class Paint extends _Original_Paint {
            this.nativeInt = nativeInt;
        }
        final int nativeInt;

        /** custom for layoutlib */
        public int getJavaCap() {
            switch (this) {
                case BUTT:
                    return BasicStroke.CAP_BUTT;
                case ROUND:
                    return BasicStroke.CAP_ROUND;
                default:
                case SQUARE:
                    return BasicStroke.CAP_SQUARE;
            }
        }
    }

    /**
@@ -151,6 +165,19 @@ public class Paint extends _Original_Paint {
            this.nativeInt = nativeInt;
        }
        final int nativeInt;

        /** custom for layoutlib */
        public int getJavaJoin() {
            switch (this) {
                default:
                case MITER:
                    return BasicStroke.JOIN_MITER;
                case ROUND:
                    return BasicStroke.JOIN_ROUND;
                case BEVEL:
                    return BasicStroke.JOIN_BEVEL;
            }
        }
    }

    /**