Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update generator for Unicode 12.1 #426

Merged
merged 7 commits into from
Feb 3, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ dependencies {
implementation project(':emoji-google')
implementation project(':emoji-google-compat')
implementation project(':emoji-twitter')
implementation project(':emoji-facebook')
implementation project(':emoji-kotlin')
implementation project(':emoji-material')

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@
start(Variant.TWITTER);
}

@Test public void takeScreenShotsEmojiFacebook() throws InterruptedException {
start(Variant.FACEBOOK);
}

private void start(final Variant variant) throws InterruptedException {
final String name = variant.name().toLowerCase(US);

Expand Down Expand Up @@ -84,7 +88,8 @@ private void start(final Variant variant) throws InterruptedException {
enum Variant {
GOOGLE("Google"),
IOS("Ios"),
TWITTER("Twitter");
TWITTER("Twitter"),
FACEBOOK("Facebook");

final String title;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import com.vanniktech.emoji.EmojiEditText;
import com.vanniktech.emoji.EmojiManager;
import com.vanniktech.emoji.EmojiPopup;
import com.vanniktech.emoji.facebook.FacebookEmojiProvider;
import com.vanniktech.emoji.google.GoogleEmojiProvider;
import com.vanniktech.emoji.googlecompat.GoogleCompatEmojiProvider;
import com.vanniktech.emoji.ios.IosEmojiProvider;
Expand Down Expand Up @@ -118,6 +119,11 @@
EmojiManager.install(new TwitterEmojiProvider());
recreate();
return true;
case R.id.menuMainFacebook:
EmojiManager.destroy();
EmojiManager.install(new FacebookEmojiProvider());
recreate();
return true;
case R.id.menuMainGoogleCompat:
if (emojiCompat == null) {
emojiCompat = EmojiCompat.init(new FontRequestEmojiCompatConfig(this,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import androidx.recyclerview.widget.RecyclerView;
import com.vanniktech.emoji.EmojiManager;
import com.vanniktech.emoji.EmojiPopup;
import com.vanniktech.emoji.facebook.FacebookEmojiProvider;
import com.vanniktech.emoji.google.GoogleEmojiProvider;
import com.vanniktech.emoji.googlecompat.GoogleCompatEmojiProvider;
import com.vanniktech.emoji.ios.IosEmojiProvider;
Expand Down Expand Up @@ -96,6 +97,11 @@
EmojiManager.install(new TwitterEmojiProvider());
recreate();
return true;
case R.id.menuMainFacebook:
EmojiManager.destroy();
EmojiManager.install(new FacebookEmojiProvider());
recreate();
return true;
case R.id.menuMainGoogleCompat:
if (emojiCompat == null) {
emojiCompat = EmojiCompat.init(new FontRequestEmojiCompatConfig(this,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import androidx.recyclerview.widget.RecyclerView;
import com.vanniktech.emoji.EmojiManager;
import com.vanniktech.emoji.EmojiPopup;
import com.vanniktech.emoji.facebook.FacebookEmojiProvider;
import com.vanniktech.emoji.google.GoogleEmojiProvider;
import com.vanniktech.emoji.googlecompat.GoogleCompatEmojiProvider;
import com.vanniktech.emoji.ios.IosEmojiProvider;
Expand Down Expand Up @@ -97,6 +98,11 @@
EmojiManager.install(new TwitterEmojiProvider());
recreate();
return true;
case R.id.menuMainFacebook:
EmojiManager.destroy();
EmojiManager.install(new FacebookEmojiProvider());
recreate();
return true;
case R.id.menuMainGoogleCompat:
if (emojiCompat == null) {
emojiCompat = EmojiCompat.init(new FontRequestEmojiCompatConfig(this,
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/res/menu/menu_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@
<item
android:id="@+id/menuMainTwitter"
android:title="@string/variant_twitter_title"/>
<item
android:id="@+id/menuMainFacebook"
android:title="@string/variant_facebook_title"/>
</group>
</menu>
</item>
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,6 @@
<string name="variant_google_title">Google</string>
<string name="variant_google_compat_title">GoogleCompat</string>
<string name="variant_twitter_title">Twitter</string>
<string name="variant_facebook_title">Facebook</string>
<string name="show_dialog_title">Show Dialog</string>
</resources>
2 changes: 1 addition & 1 deletion code_quality_tools/checkstyle_suppressions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
<suppressions>
<suppress files="[\w]*Test.java" checks="MagicNumberCheck"/>
<suppress files="[\w]*Test.java" checks="MultipleStringLiterals"/>
<suppress files="[\w]*Category.java" checks="MagicNumberCheck"/>
<suppress files="[\w]*CategoryChunk[\d].java" checks="MagicNumberCheck"/>
</suppressions>
1 change: 1 addition & 0 deletions emoji-facebook/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
22 changes: 22 additions & 0 deletions emoji-facebook/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
apply plugin: 'com.android.library'

android {
compileSdkVersion rootProject.ext.compileSdkVersion as int

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}

defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion as int
}

resourcePrefix 'emoji'
}

dependencies {
api project(':emoji')
}

apply plugin: "com.vanniktech.maven.publish"
3 changes: 3 additions & 0 deletions emoji-facebook/gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
POM_NAME=Emoji
POM_ARTIFACT_ID=emoji-facebook
POM_PACKAGING=aar
5 changes: 5 additions & 0 deletions emoji-facebook/lint.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<issue id="IconMissingDensityFolder" severity="ignore" />
<issue id="UnusedResources" severity="ignore" />
</lint>
1 change: 1 addition & 0 deletions emoji-facebook/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<manifest package="com.vanniktech.emoji.facebook" />
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
package com.vanniktech.emoji.facebook;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import androidx.annotation.NonNull;
import android.util.LruCache;

import com.vanniktech.emoji.emoji.CacheKey;
import com.vanniktech.emoji.emoji.Emoji;

import java.lang.ref.SoftReference;

public class FacebookEmoji extends Emoji {
private static final int CACHE_SIZE = 100;
private static final int SPRITE_SIZE = 64;
private static final int SPRITE_SIZE_INC_BORDER = 66;
private static final int NUM_STRIPS = 56;

private static final Object LOCK = new Object();

private static final SoftReference[] STRIP_REFS = new SoftReference[NUM_STRIPS];
private static final LruCache<CacheKey, Bitmap> BITMAP_CACHE = new LruCache<>(CACHE_SIZE);

static {
for (int i = 0; i < NUM_STRIPS; i++) {
STRIP_REFS[i] = new SoftReference<Bitmap>(null);
}
}

private final int x;
private final int y;

public FacebookEmoji(@NonNull final int[] codePoints, final int x, final int y, final boolean isDuplicate) {
super(codePoints, -1, isDuplicate);

this.x = x;
this.y = y;
}

public FacebookEmoji(final int codePoint, final int x, final int y, final boolean isDuplicate) {
super(codePoint, -1, isDuplicate);

this.x = x;
this.y = y;
}

public FacebookEmoji(final int codePoint, final int x, final int y, final boolean isDuplicate,
final Emoji... variants) {
super(codePoint, -1, isDuplicate, variants);

this.x = x;
this.y = y;
}

public FacebookEmoji(@NonNull final int[] codePoints, final int x, final int y, final boolean isDuplicate,
final Emoji... variants) {
super(codePoints, -1, isDuplicate, variants);

this.x = x;
this.y = y;
}

@Override @NonNull public Drawable getDrawable(final Context context) {
final CacheKey key = new CacheKey(x, y);
final Bitmap bitmap = BITMAP_CACHE.get(key);
if (bitmap != null) {
return new BitmapDrawable(context.getResources(), bitmap);
}
final Bitmap strip = loadStrip(context);
final Bitmap cut = Bitmap.createBitmap(strip, 1, y * SPRITE_SIZE_INC_BORDER + 1, SPRITE_SIZE, SPRITE_SIZE);
BITMAP_CACHE.put(key, cut);
return new BitmapDrawable(context.getResources(), cut);
}

private Bitmap loadStrip(final Context context) {
Bitmap strip = (Bitmap) STRIP_REFS[x].get();
if (strip == null) {
synchronized (LOCK) {
strip = (Bitmap) STRIP_REFS[x].get();
if (strip == null) {
final Resources resources = context.getResources();
final int resId = resources.getIdentifier("emoji_facebook_sheet_" + x,
"drawable", context.getPackageName());
strip = BitmapFactory.decodeResource(resources, resId);
STRIP_REFS[x] = new SoftReference<>(strip);
}
}
}
return strip;
}

@Override public void destroy() {
synchronized (LOCK) {
BITMAP_CACHE.evictAll();
for (int i = 0; i < NUM_STRIPS; i++) {
final Bitmap strip = (Bitmap) STRIP_REFS[i].get();
if (strip != null) {
strip.recycle();
STRIP_REFS[i].clear();
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.vanniktech.emoji.facebook;

import androidx.annotation.NonNull;
import com.vanniktech.emoji.EmojiProvider;
import com.vanniktech.emoji.emoji.EmojiCategory;
import com.vanniktech.emoji.facebook.category.ActivitiesCategory;
import com.vanniktech.emoji.facebook.category.AnimalsAndNatureCategory;
import com.vanniktech.emoji.facebook.category.FlagsCategory;
import com.vanniktech.emoji.facebook.category.FoodAndDrinkCategory;
import com.vanniktech.emoji.facebook.category.ObjectsCategory;
import com.vanniktech.emoji.facebook.category.SmileysAndPeopleCategory;
import com.vanniktech.emoji.facebook.category.SymbolsCategory;
import com.vanniktech.emoji.facebook.category.TravelAndPlacesCategory;

public final class FacebookEmojiProvider implements EmojiProvider {
@Override @NonNull public EmojiCategory[] getCategories() {
return new EmojiCategory[] {
new SmileysAndPeopleCategory(),
new AnimalsAndNatureCategory(),
new FoodAndDrinkCategory(),
new ActivitiesCategory(),
new TravelAndPlacesCategory(),
new ObjectsCategory(),
new SymbolsCategory(),
new FlagsCategory()
};
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.vanniktech.emoji.facebook.category;

import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
import androidx.annotation.StringRes;
import com.vanniktech.emoji.emoji.EmojiCategory;
import com.vanniktech.emoji.facebook.R;
import com.vanniktech.emoji.facebook.FacebookEmoji;

@SuppressWarnings("PMD.MethodReturnsInternalArray") public final class ActivitiesCategory implements EmojiCategory {
private static final FacebookEmoji[] EMOJIS = CategoryUtils.concatAll(ActivitiesCategoryChunk0.get());

@Override @NonNull public FacebookEmoji[] getEmojis() {
return EMOJIS;
}

@Override @DrawableRes public int getIcon() {
return R.drawable.emoji_facebook_category_activities;
}

@Override @StringRes public int getCategoryName() {
return R.string.emoji_facebook_category_activities;
}
}
Loading