aboutsummaryrefslogtreecommitdiff
path: root/src/java.desktop/unix/classes/sun/java2d
diff options
context:
space:
mode:
authorNikita Gubarkov <Nikita.Gubarkov@jetbrains.com>2020-05-16 00:46:45 +0300
committerNikita Gubarkov <Nikita.Gubarkov@jetbrains.com>2020-05-20 18:32:03 +0300
commit28b0dbf18c2fdb550ffca9a41a646a2cc21e710b (patch)
treea6dc8877570522981ec55ae4a5f0ffe5069ca99c /src/java.desktop/unix/classes/sun/java2d
parent9de2d941eff8bb1ad6622ea05eceaf7e92723eef (diff)
downloadJetBrainsRuntime-28b0dbf18c2fdb550ffca9a41a646a2cc21e710b.tar.gz
JBR-410 Added emoji support for Linux
Diffstat (limited to 'src/java.desktop/unix/classes/sun/java2d')
-rw-r--r--src/java.desktop/unix/classes/sun/java2d/xr/XRBackend.java4
-rw-r--r--src/java.desktop/unix/classes/sun/java2d/xr/XRBackendNative.java14
2 files changed, 18 insertions, 0 deletions
diff --git a/src/java.desktop/unix/classes/sun/java2d/xr/XRBackend.java b/src/java.desktop/unix/classes/sun/java2d/xr/XRBackend.java
index b44bca61ef0..dc8be1df223 100644
--- a/src/java.desktop/unix/classes/sun/java2d/xr/XRBackend.java
+++ b/src/java.desktop/unix/classes/sun/java2d/xr/XRBackend.java
@@ -94,6 +94,10 @@ public interface XRBackend {
public void XRenderFreeGlyphs(int glyphSet, int[] gids);
+ public void addBGRAGlyphImages(int drawable, List<XRGlyphCacheEntry> cacheEntries);
+
+ public void freeBGRAGlyphImages(long[] glyphInfoPointers, int glyphCount);
+
public void XRenderCompositeText(byte op, int src, int dst,
int maskFormatID,
int xSrc, int ySrc, int xDst, int yDst,
diff --git a/src/java.desktop/unix/classes/sun/java2d/xr/XRBackendNative.java b/src/java.desktop/unix/classes/sun/java2d/xr/XRBackendNative.java
index e5f337d3415..010899bb94b 100644
--- a/src/java.desktop/unix/classes/sun/java2d/xr/XRBackendNative.java
+++ b/src/java.desktop/unix/classes/sun/java2d/xr/XRBackendNative.java
@@ -250,6 +250,20 @@ public class XRBackendNative implements XRBackend {
private static native void XRFreeGlyphsNative(int glyphSet,
int[] gids, int idCnt);
+ public void addBGRAGlyphImages(int drawable, List<XRGlyphCacheEntry> cacheEntries) {
+ long[] glyphInfoPtrs = getGlyphInfoPtrs(cacheEntries);
+ addBGRAGlyphImagesNative(drawable, glyphInfoPtrs, glyphInfoPtrs.length, FMTPTR_ARGB32);
+ // addBGRAGlyphImagesNative replaced values in glyphInfoPtrs with pointers to BGRAGlyphInfo structs, save them
+ int i = 0;
+ for(XRGlyphCacheEntry cacheEntry : cacheEntries) {
+ cacheEntry.setBgraGlyphInfoPtr(glyphInfoPtrs[i++]);
+ }
+ }
+
+ private native void addBGRAGlyphImagesNative(int drawable, long[] glyphInfoPtrs, int glyphCnt, long format32);
+
+ public native void freeBGRAGlyphImages(long[] glyphInfoPointers, int glyphCount);
+
private static native void
XRenderCompositeTextNative(int op, int src, int dst,
int srcX, int srcY, long maskFormat,