// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package org.chromium.ui.widget;

import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.widget.TextView;

import org.chromium.ui.R;

/**
 * A TextView with the added leading property.
 * Leading is the distance between the baselines of successive lines of text (so the space between
 * rules on ruled paper). This class performs the calculation to setup leading correctly and allows
 * it to be set in XML. It overwrites android:lineSpacingExtra and android:lineSpacingMultiplier.
 */
public class TextViewWithLeading extends TextView {
    /**
     * Constructing TextViewWithLeading programmatically without an {@link AttributeSet} will
     * render it functionally equivalent to a TextView - that is no leading will be applied. This
     * method is provided for use from subclasses.
     */
    protected TextViewWithLeading(Context context) {
        super(context);
    }

    /** Constructor for use from XML. */
    public TextViewWithLeading(Context context, AttributeSet attrs) {
        super(context, attrs);

        // TODO(peconn): Add a lint check to ensure no lineSpacingExtr or lineSpacingMultiplier.
        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TextViewWithLeading, 0, 0);
        if (a.hasValue(R.styleable.TextViewWithLeading_leading)) {
            final float leading = a.getDimension(R.styleable.TextViewWithLeading_leading, 0f);
            final float oldLeading = getPaint().getFontMetrics(null);
            setLineSpacing(leading - oldLeading, 1f);
        }

        a.recycle();
    }
}