< prev index next >
modules/javafx.graphics/src/main/native-font/coretext.c
Print this page
rev 10066 : 8088205: [Mac] WebView renders icons instead of letters on some sites
rev 9951 : 8161705: Rename directories under modules to exactly match the module names
Reviewed-by: kcr, vadim
*** 362,384 ****
fail:
if (arg1 && lparg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);
return rc;
}
- JNIEXPORT jlong JNICALL OS_NATIVE(CTFontCreateWithName)
- (JNIEnv *env, jclass that, jlong arg0, jdouble arg1, jobject arg2)
- {
- CGAffineTransform _arg2, *lparg2=NULL;
- jlong rc = 0;
- if (arg2) if ((lparg2 = getCGAffineTransformFields(env, arg2, &_arg2)) == NULL) goto fail;
- rc = (jlong)CTFontCreateWithName((CFStringRef)arg0, (CGFloat)arg1, (CGAffineTransform*)lparg2);
- fail:
- /* In only */
- // if (arg2 && lparg2) setCGAffineTransformFields(env, arg2, lparg2);
- return rc;
- }
-
JNIEXPORT void JNICALL OS_NATIVE(CFRelease)
(JNIEnv *env, jclass that, jlong arg0)
{
CFRelease((CFTypeRef)arg0);
}
--- 362,371 ----
*** 677,686 ****
--- 664,699 ----
CFStringGetCharacters(stringRef, CFRangeMake(0, length), buffer);
CFRelease(stringRef);
return (*env)->NewString(env, (jchar *)buffer, length);
}
+ JNIEXPORT jlong JNICALL OS_NATIVE(CTFontCreate)
+ (JNIEnv *env, jclass that, jlong fileName, jlong psName, jdouble size, jobject matrix)
+ {
+ CGAffineTransform transform, *transformPtr = NULL;
+ CTFontRef fontRef = NULL;
+
+ if (matrix) if ((transformPtr = getCGAffineTransformFields(env, matrix, &transform)) == NULL) goto fail;
+
+ CFURLRef url = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, (CFStringRef)fileName, kCFURLPOSIXPathStyle, false);
+ CGDataProviderRef dataProvider = CGDataProviderCreateWithURL(url);
+ CGFontRef cgFont = CGFontCreateWithDataProvider(dataProvider);
+ if (cgFont) {
+ fontRef = CTFontCreateWithGraphicsFont(cgFont, (CGFloat)size, (CGAffineTransform*)transformPtr, 0);
+ CFRelease(cgFont);
+ } else {
+ // TTC files are supported by CGFontCreateWithDataProvider, fallback to CTFontCreateWithName.
+ fontRef = CTFontCreateWithName((CFStringRef)psName, (CGFloat)size, (CGAffineTransform*)transformPtr);
+ }
+ CFRelease(dataProvider);
+ CFRelease(url);
+ fail:
+ /* In only */
+ // if (arg2 && lparg2) setCGAffineTransformFields(env, arg2, lparg2);
+ return (jlong)fontRef;
+ }
+
JNIEXPORT jbyteArray JNICALL OS_NATIVE(CGBitmapContextGetData)
(JNIEnv *env, jclass that, jlong arg0, jint dstWidth, jint dstHeight, jint bpp)
{
jbyteArray result = NULL;
if (dstWidth < 0) return NULL;
< prev index next >