blob: 9ade9926276e42855065527c7b31622d40f28289 [file] [log] [blame]
/*
* Copyright (C) 2017 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 androidx.emoji.util;
import androidx.annotation.NonNull;
public class Emoji {
public static final int CHAR_KEYCAP = 0x20E3;
public static final int CHAR_DIGIT = 0x0039;
public static final int CHAR_ZWJ = 0x200D;
public static final int CHAR_VS_EMOJI = 0xFE0f;
public static final int CHAR_VS_TEXT = 0xFE0E;
public static final int CHAR_FITZPATRICK = 0x1F3FE;
public static final int CHAR_FITZPATRICK_TYPE_1 = 0x1F3fB;
public static final int CHAR_DEFAULT_TEXT_STYLE = 0x26F9;
public static final int CHAR_DEFAULT_EMOJI_STYLE = 0x1f3A2;
public static final int CHAR_FEMALE_SIGN = 0x2640;
public static final int CHAR_MAN = 0x1F468;
public static final int CHAR_HEART = 0x2764;
public static final int CHAR_KISS = 0x1F48B;
public static final int CHAR_REGIONAL_SYMBOL = 0x1F1E8;
public static final int CHAR_ASTERISK = 0x002A;
public static final EmojiMapping EMOJI_SINGLE_CODEPOINT = new EmojiMapping(
new int[]{CHAR_DEFAULT_EMOJI_STYLE}, 0xF01B4);
public static final EmojiMapping EMOJI_WITH_ZWJ = new EmojiMapping(
new int[]{CHAR_MAN, CHAR_ZWJ, CHAR_HEART, CHAR_VS_EMOJI, CHAR_ZWJ, CHAR_KISS, CHAR_ZWJ,
CHAR_MAN}, 0xF051F);
public static final EmojiMapping EMOJI_GENDER = new EmojiMapping(new int[]{
CHAR_DEFAULT_TEXT_STYLE, CHAR_VS_EMOJI, CHAR_ZWJ, CHAR_FEMALE_SIGN}, 0xF0950);
public static final EmojiMapping EMOJI_FLAG = new EmojiMapping(
new int[]{CHAR_REGIONAL_SYMBOL, CHAR_REGIONAL_SYMBOL}, 0xF03A0);
public static final EmojiMapping EMOJI_GENDER_WITHOUT_VS = new EmojiMapping(
new int[]{CHAR_DEFAULT_TEXT_STYLE, CHAR_ZWJ, CHAR_FEMALE_SIGN}, 0xF0950);
public static final EmojiMapping DEFAULT_TEXT_STYLE = new EmojiMapping(
new int[]{CHAR_DEFAULT_TEXT_STYLE, CHAR_VS_EMOJI}, 0xF04C6);
public static final EmojiMapping EMOJI_REGIONAL_SYMBOL = new EmojiMapping(
new int[]{CHAR_REGIONAL_SYMBOL}, 0xF0025);
public static final EmojiMapping EMOJI_UNKNOWN_FLAG = new EmojiMapping(
new int[]{0x1F1FA, 0x1F1F3}, 0xF0599);
public static final EmojiMapping EMOJI_DIGIT_ES = new EmojiMapping(
new int[]{CHAR_DIGIT, CHAR_VS_EMOJI}, 0xF0340);
public static final EmojiMapping EMOJI_DIGIT_KEYCAP = new EmojiMapping(
new int[]{CHAR_DIGIT, CHAR_KEYCAP}, 0xF0377);
public static final EmojiMapping EMOJI_DIGIT_ES_KEYCAP = new EmojiMapping(
new int[]{CHAR_DIGIT, CHAR_VS_EMOJI, CHAR_KEYCAP}, 0xF0377);
public static final EmojiMapping EMOJI_ASTERISK_KEYCAP = new EmojiMapping(
new int[]{CHAR_ASTERISK, CHAR_VS_EMOJI, CHAR_KEYCAP}, 0xF051D);
public static final EmojiMapping EMOJI_SKIN_MODIFIER = new EmojiMapping(
new int[]{CHAR_MAN, CHAR_FITZPATRICK}, 0xF0603);
public static final EmojiMapping EMOJI_SKIN_MODIFIER_TYPE_ONE = new EmojiMapping(
new int[]{CHAR_MAN, CHAR_FITZPATRICK_TYPE_1}, 0xF0606);
public static final EmojiMapping EMOJI_SKIN_MODIFIER_WITH_VS = new EmojiMapping(
new int[]{CHAR_MAN, CHAR_VS_EMOJI, CHAR_FITZPATRICK_TYPE_1}, 0xF0606);
public static class EmojiMapping {
private final int[] mCodepoints;
private final int mId;
private EmojiMapping(@NonNull final int[] codepoints, final int id) {
mCodepoints = codepoints;
mId = id;
}
public final int[] codepoints() {
return mCodepoints;
}
public final int id() {
return mId;
}
public final int charCount() {
int count = 0;
for (int i = 0; i < mCodepoints.length; i++) {
count += Character.charCount(mCodepoints[i]);
}
return count;
}
}
}