1c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio/*
2c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio * Copyright (C) 2011 The Android Open Source Project
3c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio *
4c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio * Licensed under the Apache License, Version 2.0 (the "License");
5c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio * you may not use this file except in compliance with the License.
6c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio * You may obtain a copy of the License at
7c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio *
8c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio *      http://www.apache.org/licenses/LICENSE-2.0
9c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio *
10c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio * Unless required by applicable law or agreed to in writing, software
11c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio * distributed under the License is distributed on an "AS IS" BASIS,
12c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio * See the License for the specific language governing permissions and
14c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio * limitations under the License.
15c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio */
16c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio
17c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Megliopackage com.android.bidi;
18c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio
19c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglioimport android.content.Context;
20c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglioimport android.content.res.TypedArray;
21c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglioimport android.graphics.Canvas;
22c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglioimport android.graphics.Color;
23c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglioimport android.graphics.Paint.Align;
24c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglioimport android.text.TextPaint;
25c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglioimport android.util.AttributeSet;
26c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglioimport android.view.View;
27c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio
28c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Megliopublic class BiDiTestViewDrawText extends View {
29c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio    private float mSize;
30c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio    private int mColor;
31c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio    private String mText;
32c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio
33c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio    public BiDiTestViewDrawText(Context context) {
34c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio        this(context, null);
35c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio    }
36c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio
37c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio    public BiDiTestViewDrawText(Context context, AttributeSet attrs) {
38c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio        this(context, attrs, 0);
39c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio    }
40c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio
41c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio    public BiDiTestViewDrawText(Context context, AttributeSet attrs, int defStyle) {
42c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio        super(context, attrs, defStyle);
43c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio
44c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio        final TypedArray a = context.obtainStyledAttributes(attrs,
45c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio                R.styleable.DrawTextTestView, defStyle, 0);
46c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio        mSize = a.getDimension(R.styleable.DrawTextTestView_size, 40.0f);
47c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio        mColor = a.getColor(R.styleable.DrawTextTestView_color, Color.YELLOW);
48c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio        final CharSequence text = a.getText(R.styleable.DrawTextTestView_text);
49c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio        mText = (text != null) ? text.toString() : "(empty)";
50c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio        a.recycle();
51c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio    }
52c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio
53c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio    @Override
54c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio    protected void onDraw(Canvas canvas) {
55c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio        super.onDraw(canvas);
56c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio        final int width = getWidth();
57c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio        final int height = getHeight();
58c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio
59c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio        final TextPaint paint = new TextPaint();
60c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio        paint.setTextSize(mSize);
61c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio        paint.setColor(mColor);
62c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio        paint.setTextAlign(Align.CENTER);
63c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio
64c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio        canvas.drawText(mText, width / 2, height * 2 / 3, paint);
65c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio    }
66c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio}