package com.xhsemoticonskeyboard.common.filter;
import android.text.Spannable;
import android.widget.EditText;
import com.sj.emoji.EmojiDisplay;
import com.sj.emoji.EmojiSpan;
import java.util.regex.Matcher;
import sj.keyboard.interfaces.EmoticonFilter;
import sj.keyboard.utils.EmoticonsKeyboardUtils;
public class EmojiFilter extends EmoticonFilter {
private int emojiSize = -1;
@Override
public void filter(EditText editText, CharSequence text, int start, int lengthBefore, int lengthAfter) {
emojiSize = emojiSize == -1 ? EmoticonsKeyboardUtils.getFontHeight(editText) : emojiSize;
clearSpan(editText.getText(), start, text.toString().length());
Matcher m = EmojiDisplay.getMatcher(text.toString().substring(start, text.toString().length()));
if (m != null) {
while (m.find()) {
String emojiHex = Integer.toHexString(Character.codePointAt(m.group(), 0));
EmojiDisplay.emojiDisplay(editText.getContext(), editText.getText(), emojiHex, emojiSize, start + m.start(), start + m.end());
}
}
}
private void clearSpan(Spannable spannable, int start, int end) {
if (start == end) {
return;
}
EmojiSpan[] oldSpans = spannable.getSpans(start, end, EmojiSpan.class);
for (int i = 0; i < oldSpans.length; i++) {
spannable.removeSpan(oldSpans[i]);
}
}
}