128294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne/*
228294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne * Copyright (C) 2011 The Android Open Source Project
328294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne *
428294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne * Licensed under the Apache License, Version 2.0 (the "License");
528294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne * you may not use this file except in compliance with the License.
628294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne * You may obtain a copy of the License at
728294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne *
828294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne *      http://www.apache.org/licenses/LICENSE-2.0
928294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne *
1028294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne * Unless required by applicable law or agreed to in writing, software
1128294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne * distributed under the License is distributed on an "AS IS" BASIS,
1228294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1328294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne * See the License for the specific language governing permissions and
1428294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne * limitations under the License.
1528294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne */
1628294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne
1728294cc74491885c7fe4442353026f01f5b773e8Gilles Debunnepackage android.text.style;
1828294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne
1928294cc74491885c7fe4442353026f01f5b773e8Gilles Debunneimport android.os.Parcel;
2028294cc74491885c7fe4442353026f01f5b773e8Gilles Debunneimport android.text.ParcelableSpan;
2128294cc74491885c7fe4442353026f01f5b773e8Gilles Debunneimport android.text.TextPaint;
2228294cc74491885c7fe4442353026f01f5b773e8Gilles Debunneimport android.text.TextUtils;
2328294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne
2428294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne/**
2528294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne * A SuggestionRangeSpan is used to show which part of an EditText is affected by a suggestion
2628294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne * popup window.
2728294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne *
2828294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne * @hide
2928294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne */
3028294cc74491885c7fe4442353026f01f5b773e8Gilles Debunnepublic class SuggestionRangeSpan extends CharacterStyle implements ParcelableSpan {
31fa4e2d994bb398b89d08304bb233671ef1a5d5f8Gilles Debunne    private int mBackgroundColor;
320eea6681519277310e1733d791bfc0342b8e5ceaGilles Debunne
33fa4e2d994bb398b89d08304bb233671ef1a5d5f8Gilles Debunne    public SuggestionRangeSpan() {
34fa4e2d994bb398b89d08304bb233671ef1a5d5f8Gilles Debunne        // 0 is a fully transparent black. Has to be set using #setBackgroundColor
35fa4e2d994bb398b89d08304bb233671ef1a5d5f8Gilles Debunne        mBackgroundColor = 0;
360eea6681519277310e1733d791bfc0342b8e5ceaGilles Debunne    }
370eea6681519277310e1733d791bfc0342b8e5ceaGilles Debunne
380eea6681519277310e1733d791bfc0342b8e5ceaGilles Debunne    public SuggestionRangeSpan(Parcel src) {
390eea6681519277310e1733d791bfc0342b8e5ceaGilles Debunne        mBackgroundColor = src.readInt();
400eea6681519277310e1733d791bfc0342b8e5ceaGilles Debunne    }
4128294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne
4228294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne    @Override
4328294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne    public int describeContents() {
4428294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne        return 0;
4528294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne    }
4628294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne
4728294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne    @Override
480eea6681519277310e1733d791bfc0342b8e5ceaGilles Debunne    public void writeToParcel(Parcel dest, int flags) {
49a70d4a90a029910f788c3e7f8715cf3b842b1e2bAlan Viverette        writeToParcelInternal(dest, flags);
50a70d4a90a029910f788c3e7f8715cf3b842b1e2bAlan Viverette    }
51a70d4a90a029910f788c3e7f8715cf3b842b1e2bAlan Viverette
52a70d4a90a029910f788c3e7f8715cf3b842b1e2bAlan Viverette    /** @hide */
53a70d4a90a029910f788c3e7f8715cf3b842b1e2bAlan Viverette    public void writeToParcelInternal(Parcel dest, int flags) {
540eea6681519277310e1733d791bfc0342b8e5ceaGilles Debunne        dest.writeInt(mBackgroundColor);
550eea6681519277310e1733d791bfc0342b8e5ceaGilles Debunne    }
5628294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne
5728294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne    @Override
5828294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne    public int getSpanTypeId() {
59a70d4a90a029910f788c3e7f8715cf3b842b1e2bAlan Viverette        return getSpanTypeIdInternal();
60a70d4a90a029910f788c3e7f8715cf3b842b1e2bAlan Viverette    }
61a70d4a90a029910f788c3e7f8715cf3b842b1e2bAlan Viverette
62a70d4a90a029910f788c3e7f8715cf3b842b1e2bAlan Viverette    /** @hide */
63a70d4a90a029910f788c3e7f8715cf3b842b1e2bAlan Viverette    public int getSpanTypeIdInternal() {
6428294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne        return TextUtils.SUGGESTION_RANGE_SPAN;
6528294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne    }
66fa4e2d994bb398b89d08304bb233671ef1a5d5f8Gilles Debunne
67fa4e2d994bb398b89d08304bb233671ef1a5d5f8Gilles Debunne    public void setBackgroundColor(int backgroundColor) {
68fa4e2d994bb398b89d08304bb233671ef1a5d5f8Gilles Debunne        mBackgroundColor = backgroundColor;
69fa4e2d994bb398b89d08304bb233671ef1a5d5f8Gilles Debunne    }
70fa4e2d994bb398b89d08304bb233671ef1a5d5f8Gilles Debunne
71fa4e2d994bb398b89d08304bb233671ef1a5d5f8Gilles Debunne    @Override
72fa4e2d994bb398b89d08304bb233671ef1a5d5f8Gilles Debunne    public void updateDrawState(TextPaint tp) {
73fa4e2d994bb398b89d08304bb233671ef1a5d5f8Gilles Debunne        tp.bgColor = mBackgroundColor;
74fa4e2d994bb398b89d08304bb233671ef1a5d5f8Gilles Debunne    }
7528294cc74491885c7fe4442353026f01f5b773e8Gilles Debunne}
76