Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
fb6c2de6
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
3
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
fb6c2de6
编写于
4月 01, 2014
作者:
C
coffeys
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
35a679eb
07d1f17d
变更
9
显示空白变更内容
内联
并排
Showing
9 changed file
with
167 addition
and
146 deletion
+167
-146
src/macosx/native/sun/awt/CTextPipe.m
src/macosx/native/sun/awt/CTextPipe.m
+27
-8
src/macosx/native/sun/awt/ImageSurfaceData.m
src/macosx/native/sun/awt/ImageSurfaceData.m
+16
-16
src/macosx/native/sun/awt/QuartzRenderer.m
src/macosx/native/sun/awt/QuartzRenderer.m
+10
-0
src/macosx/native/sun/awt/QuartzSurfaceData.m
src/macosx/native/sun/awt/QuartzSurfaceData.m
+4
-0
src/macosx/native/sun/font/AWTStrike.m
src/macosx/native/sun/font/AWTStrike.m
+7
-0
src/macosx/native/sun/font/CCharToGlyphMapper.m
src/macosx/native/sun/font/CCharToGlyphMapper.m
+4
-1
src/share/native/sun/font/FontInstanceAdapter.cpp
src/share/native/sun/font/FontInstanceAdapter.cpp
+6
-0
src/share/native/sun/font/layout/SunLayoutEngine.cpp
src/share/native/sun/font/layout/SunLayoutEngine.cpp
+9
-44
src/share/native/sun/font/sunFont.c
src/share/native/sun/font/sunFont.c
+84
-77
未找到文件。
src/macosx/native/sun/awt/CTextPipe.m
浏览文件 @
fb6c2de6
...
...
@@ -147,7 +147,7 @@ void JavaCT_DrawGlyphVector
CGAffineTransform
invTx
=
CGAffineTransformInvert
(
strike
->
fTx
);
NS
U
Integer
i
;
NSInteger
i
;
for
(
i
=
0
;
i
<
length
;
i
++
)
{
CGGlyph
glyph
=
glyphs
[
i
];
...
...
@@ -355,19 +355,31 @@ static inline void doDrawGlyphsPipe_checkForPerGlyphTransforms
static
JNF_CLASS_CACHE
(
jc_StandardGlyphVector_GlyphTransformInfo
,
"sun/font/StandardGlyphVector$GlyphTransformInfo"
);
static
JNF_MEMBER_CACHE
(
jm_StandardGlyphVector_GlyphTransformInfo_transforms
,
jc_StandardGlyphVector_GlyphTransformInfo
,
"transforms"
,
"[D"
);
jdoubleArray
g_gtiTransformsArray
=
JNFGetObjectField
(
env
,
gti
,
jm_StandardGlyphVector_GlyphTransformInfo_transforms
);
//(*env)->GetObjectField(env, gti, g_gtiTransforms);
if
(
g_gtiTransformsArray
==
NULL
)
{
return
;
}
jdouble
*
g_gvTransformsAsDoubles
=
(
*
env
)
->
GetPrimitiveArrayCritical
(
env
,
g_gtiTransformsArray
,
NULL
);
if
(
g_gvTransformsAsDoubles
==
NULL
)
{
(
*
env
)
->
DeleteLocalRef
(
env
,
g_gtiTransformsArray
);
return
;
}
static
JNF_MEMBER_CACHE
(
jm_StandardGlyphVector_GlyphTransformInfo_indices
,
jc_StandardGlyphVector_GlyphTransformInfo
,
"indices"
,
"[I"
);
jintArray
g_gtiTXIndicesArray
=
JNFGetObjectField
(
env
,
gti
,
jm_StandardGlyphVector_GlyphTransformInfo_indices
);
jint
*
g_gvTXIndicesAsInts
=
(
*
env
)
->
GetPrimitiveArrayCritical
(
env
,
g_gtiTXIndicesArray
,
NULL
);
if
(
g_gvTXIndicesAsInts
==
NULL
)
{
(
*
env
)
->
ReleasePrimitiveArrayCritical
(
env
,
g_gtiTransformsArray
,
g_gvTransformsAsDoubles
,
JNI_ABORT
);
(
*
env
)
->
DeleteLocalRef
(
env
,
g_gtiTransformsArray
);
(
*
env
)
->
DeleteLocalRef
(
env
,
g_gtiTXIndicesArray
);
return
;
}
// slowest case, we have per-glyph transforms, and possibly glyph substitution as well
JavaCT_DrawGlyphVector
(
qsdo
,
strike
,
useSubstituion
,
uniChars
,
glyphs
,
advances
,
g_gvTXIndicesAsInts
,
g_gvTransformsAsDoubles
,
length
);
(
*
env
)
->
ReleasePrimitiveArrayCritical
(
env
,
g_gtiTransformsArray
,
g_gvTransformsAsDoubles
,
JNI_ABORT
);
(
*
env
)
->
DeleteLocalRef
(
env
,
g_gtiTransformsArray
);
(
*
env
)
->
ReleasePrimitiveArrayCritical
(
env
,
g_gtiTXIndicesArray
,
g_gvTXIndicesAsInts
,
JNI_ABORT
);
(
*
env
)
->
DeleteLocalRef
(
env
,
g_gtiTransformsArray
);
(
*
env
)
->
DeleteLocalRef
(
env
,
g_gtiTXIndicesArray
);
}
...
...
@@ -403,6 +415,9 @@ static inline void doDrawGlyphsPipe_fillGlyphAndAdvanceBuffers
{
// fill the glyph buffer
jint
*
glyphsAsInts
=
(
*
env
)
->
GetPrimitiveArrayCritical
(
env
,
glyphsArray
,
NULL
);
if
(
glyphsAsInts
==
NULL
)
{
return
;
}
// if a glyph code from Java is negative, that means it is really a unicode value
// which we can use in CoreText to strike the character in another font
...
...
@@ -429,11 +444,15 @@ static inline void doDrawGlyphsPipe_fillGlyphAndAdvanceBuffers
// fill the advance buffer
static
JNF_MEMBER_CACHE
(
jm_StandardGlyphVector_positions
,
jc_StandardGlyphVector
,
"positions"
,
"[F"
);
jfloatArray
posArray
=
JNFGetObjectField
(
env
,
gVector
,
jm_StandardGlyphVector_positions
);
if
(
posArray
!=
NULL
)
{
jfloat
*
positions
=
NULL
;
if
(
posArray
!=
NULL
)
{
// in this case, the positions have already been pre-calculated for us on the Java side
jfloat
*
positions
=
(
*
env
)
->
GetPrimitiveArrayCritical
(
env
,
posArray
,
NULL
);
positions
=
(
*
env
)
->
GetPrimitiveArrayCritical
(
env
,
posArray
,
NULL
);
if
(
positions
==
NULL
)
{
(
*
env
)
->
DeleteLocalRef
(
env
,
posArray
);
}
}
if
(
positions
!=
NULL
)
{
CGPoint
prev
;
prev
.
x
=
positions
[
0
];
prev
.
y
=
positions
[
1
];
...
...
src/macosx/native/sun/awt/ImageSurfaceData.m
浏览文件 @
fb6c2de6
...
...
@@ -849,7 +849,7 @@ PRINT(" copyARGB_PRE_bitToIndexed_8bit")
indexOfBest
=
0
;
distanceOfBest
=
DBL
_
MAX
;
for
(
i
=
0
;
i
<
lutDataSize
;
i
++
)
for
(
i
=
0
;
(
unsigned
)
i
<
lutDataSize
;
i
++
)
{
p2
=
lutdata
[
i
]
;
...
...
@@ -899,7 +899,7 @@ static void releaseDataFromProvider(void *info, const void *data, size_t size)
{
if
(
data
!=
NULL
)
{
free
(
data
)
;
free
(
(
void
*
)
data
)
;
}
}
...
...
@@ -1577,7 +1577,9 @@ JNIEXPORT jobject JNICALL Java_sun_awt_image_BufImgSurfaceData_getSurfaceData
{
static
char
*
bimgName
=
"java/awt/image/BufferedImage"
;
jclass
bimg
=
(*env)->FindClass(env, bimgName);
CHECK_NULL_RETURN(bimg, NULL);
sDataID = (*env)->GetFieldID(env, bimg, "sData", "Lsun/java2d/SurfaceData;");
CHECK_NULL_RETURN(sDataID, NULL);
}
return (*env)->GetObjectField(env, bufImg, sDataID);
...
...
@@ -1591,7 +1593,9 @@ JNIEXPORT void JNICALL Java_sun_awt_image_BufImgSurfaceData_setSurfaceData
{
static char *bimgName = "java/awt/image/BufferedImage";
jclass bimg = (*env)->FindClass(env, bimgName);
CHECK_NULL(bimg);
sDataID = (*env)->GetFieldID(env, bimg, "sData", "Lsun/java2d/SurfaceData;");
CHECK_NULL(sDataID);
}
(*env)->SetObjectField(env, bufImg, sDataID, sData);
...
...
@@ -1610,18 +1614,11 @@ JNIEXPORT void JNICALL Java_sun_java2d_OSXOffScreenSurfaceData_initIDs(JNIEnv *e
return;
}
icm = (*env)->FindClass(env, icmName);
if (icm == NULL) {
return;
}
rgbID = (*env)->GetFieldID(env, icm, "rgb", "[I");
allGrayID = (*env)->GetFieldID(env, icm, "allgrayopaque", "Z");
mapSizeID = (*env)->GetFieldID(env, icm, "map_size", "I");
CMpDataID = (*env)->GetFieldID(env, icm, "pData", "J");
if (allGrayID == 0 || rgbID == 0 || mapSizeID == 0 || CMpDataID == 0) {
JNU_ThrowInternalError(env, "Could not get field IDs");
}
CHECK_NULL(icm = (*env)->FindClass(env, icmName));
CHECK_NULL(rgbID = (*env)->GetFieldID(env, icm, "rgb", "[I"));
CHECK_NULL(allGrayID = (*env)->GetFieldID(env, icm, "allgrayopaque", "Z"));
CHECK_NULL(mapSizeID = (*env)->GetFieldID(env, icm, "map_size", "I"));
CHECK_NULL(CMpDataID = (*env)->GetFieldID(env, icm, "pData", "J"));
}
gColorspaceRGB = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
...
...
@@ -1795,6 +1792,7 @@ PRINT("Java_sun_java2d_OSXOffScreenSurfaceData_initRaster")
//bisdo->sdOps.Dispose = BufImg_Dispose;
bisdo->array = (*env)->NewWeakGlobalRef(env, array);
if (array != NULL) CHECK_NULL(bisdo->array);
bisdo->offset = offset;
//bisdo->scanStr = scanStr;
bisdo->scanStr = scanStride;
...
...
@@ -1807,8 +1805,10 @@ PRINT("Java_sun_java2d_OSXOffScreenSurfaceData_initRaster")
} else {
jobject lutarray = (*env)->GetObjectField(env, icm, rgbID);
bisdo->lutarray = (*env)->NewWeakGlobalRef(env, lutarray);
if (lutarray != NULL) CHECK_NULL(bisdo->lutarray);
bisdo->lutsize = (*env)->GetIntField(env, icm, mapSizeID);
bisdo->icm = (*env)->NewWeakGlobalRef(env, icm);
if (icm != NULL) CHECK_NULL(bisdo->icm);
}
bisdo->rasbounds.x1 = 0;
bisdo->rasbounds.y1 = 0;
...
...
@@ -1887,7 +1887,7 @@ PRINT("Java_sun_java2d_OSXOffScreenSurfaceData_initRaster")
Pixel32bit* src = lutdata;
Pixel32bit* dst = isdo->lutData;
jint i;
for (i=0; i<isdo->lutDataSize; i++)
for (i=0;
(unsigned)
i<isdo->lutDataSize; i++)
{
if (i != transparent_index)
{
...
...
@@ -1919,7 +1919,7 @@ PRINT("Java_sun_java2d_OSXOffScreenSurfaceData_initRaster")
Pixel32bit* src = lutdata;
Pixel32bit* dst = isdo->lutData;
jint i;
for (i=0; i<isdo->lutDataSize; i++)
for (i=0;
(unsigned)
i<isdo->lutDataSize; i++)
{
*dst = *src | mask;
dst++; src++;
...
...
src/macosx/native/sun/awt/QuartzRenderer.m
浏览文件 @
fb6c2de6
...
...
@@ -438,6 +438,9 @@ QUARTZ_RENDERER_INLINE SDRenderType doPolyUsingCG(JNIEnv *env, CGContextRef cgRe
{
SDRenderType
renderType
=
SD
_
Nothing
;
if
(
xpointsarray
==
NULL
||
ypointsarray
==
NULL
)
{
return
SD
_
Nothing
;
}
if
(
npoints
>
1
)
{
if
(
fill
==
YES
)
...
...
@@ -452,7 +455,14 @@ QUARTZ_RENDERER_INLINE SDRenderType doPolyUsingCG(JNIEnv *env, CGContextRef cgRe
jint
i
;
jint
*
xpoints
=
(
jint
*
)
(*env)->GetPrimitiveArrayCritical(env, xpointsarray, NULL);
if (xpoints == NULL) {
return SD_Nothing;
}
jint* ypoints = (jint*)(*env)->GetPrimitiveArrayCritical(env, ypointsarray, NULL);
if (ypoints == NULL) {
(*env)->ReleasePrimitiveArrayCritical(env, xpointsarray, xpoints, 0);
return SD_Nothing;
}
CGContextMoveToPoint(cgRef, xpoints[0]+offsetX, ypoints[0]+offsetY);
...
...
src/macosx/native/sun/awt/QuartzSurfaceData.m
浏览文件 @
fb6c2de6
...
...
@@ -778,6 +778,10 @@ PRINT(" SetUpCGContext")
qsdo->graphicsStateInfo.simpleStroke = NO;
jint length = (*env)->GetArrayLength(env, dasharray);
jfloat* jdashes = (jfloat*)(*env)->GetPrimitiveArrayCritical(env, dasharray, NULL);
if (jdashes == NULL) {
CGContextSetLineDash(cgRef, 0, NULL, 0);
return;
}
CGFloat* dashes = (CGFloat*)malloc(sizeof(CGFloat)*length);
if (dashes != NULL)
{
...
...
src/macosx/native/sun/font/AWTStrike.m
浏览文件 @
fb6c2de6
...
...
@@ -127,6 +127,9 @@ GetTxFromDoubles(JNIEnv *env, jdoubleArray txArray)
}
jdouble
*
txPtr
=
(
*
env
)
->
GetPrimitiveArrayCritical
(
env
,
txArray
,
NULL
);
if
(
txPtr
==
NULL
)
{
return
CGAffineTransformIdentity
;
}
CGAffineTransform
tx
=
CGAffineTransformMake
(
txPtr
[
0
],
txPtr
[
1
],
txPtr
[
2
],
...
...
@@ -311,18 +314,22 @@ JNF_COCOA_ENTER(env);
jlong
*
glyphInfos
=
(
*
env
)
->
GetPrimitiveArrayCritical
(
env
,
glyphInfoLongArray
,
NULL
);
if
(
glyphInfos
!=
NULL
)
{
jint
*
rawGlyphCodes
=
(
*
env
)
->
GetPrimitiveArrayCritical
(
env
,
glyphCodes
,
NULL
);
if
(
rawGlyphCodes
!=
NULL
)
{
CGGlyphImages_GetGlyphImagePtrs
(
glyphInfos
,
awtStrike
,
rawGlyphCodes
,
len
);
(
*
env
)
->
ReleasePrimitiveArrayCritical
(
env
,
glyphCodes
,
rawGlyphCodes
,
JNI_ABORT
);
}
// Do not use JNI_COMMIT, as that will not free the buffer copy
// when +ProtectJavaHeap is on.
(
*
env
)
->
ReleasePrimitiveArrayCritical
(
env
,
glyphInfoLongArray
,
glyphInfos
,
0
);
}
JNF_COCOA_EXIT
(
env
);
}
...
...
src/macosx/native/sun/font/CCharToGlyphMapper.m
浏览文件 @
fb6c2de6
...
...
@@ -101,10 +101,13 @@ JNF_COCOA_ENTER(env);
jchar *unicodesAsChars =
(*env)->GetPrimitiveArrayCritical(env, unicodes, NULL);
AllocateGlyphBuffer(env, awtFont, count, (UniChar *)unicodesAsChars, glyphs);
if (unicodesAsChars != NULL) {
AllocateGlyphBuffer(env, awtFont, count,
(UniChar *)unicodesAsChars, glyphs);
(*env)->ReleasePrimitiveArrayCritical(env, unicodes,
unicodesAsChars, JNI_ABORT);
}
JNF_COCOA_EXIT(env);
}
src/share/native/sun/font/FontInstanceAdapter.cpp
浏览文件 @
fb6c2de6
...
...
@@ -222,10 +222,16 @@ void FontInstanceAdapter::getKerningAdjustment(LEPoint &adjustment) const
jobject
pt
=
env
->
NewObject
(
sunFontIDs
.
pt2DFloatClass
,
sunFontIDs
.
pt2DFloatCtr
,
adjustment
.
fX
,
adjustment
.
fY
);
if
(
pt
==
NULL
)
{
env
->
ExceptionClear
();
adjustment
.
fX
=
0.0
f
;
adjustment
.
fY
=
0.0
f
;
}
else
{
env
->
CallObjectMethod
(
fontStrike
,
sunFontIDs
.
adjustPointMID
,
pt
);
adjustment
.
fX
=
env
->
GetFloatField
(
pt
,
sunFontIDs
.
xFID
);
adjustment
.
fY
=
env
->
GetFloatField
(
pt
,
sunFontIDs
.
yFID
);
}
}
void
FontInstanceAdapter
::
getWideGlyphAdvance
(
le_uint32
glyph
,
LEPoint
&
advance
)
const
{
...
...
src/share/native/sun/font/layout/SunLayoutEngine.cpp
浏览文件 @
fb6c2de6
...
...
@@ -56,50 +56,13 @@ static jfieldID gvdIndicesFID = 0;
JNIEXPORT
void
JNICALL
Java_sun_font_SunLayoutEngine_initGVIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
gvdClass
=
env
->
FindClass
(
gvdClassName
);
if
(
!
gvdClass
)
{
JNU_ThrowClassNotFoundException
(
env
,
gvdClassName
);
return
;
}
gvdClass
=
(
jclass
)
env
->
NewGlobalRef
(
gvdClass
);
if
(
!
gvdClass
)
{
JNU_ThrowInternalError
(
env
,
"could not create global ref"
);
return
;
}
gvdCountFID
=
env
->
GetFieldID
(
gvdClass
,
"_count"
,
"I"
);
if
(
!
gvdCountFID
)
{
gvdClass
=
0
;
JNU_ThrowNoSuchFieldException
(
env
,
"_count"
);
return
;
}
gvdFlagsFID
=
env
->
GetFieldID
(
gvdClass
,
"_flags"
,
"I"
);
if
(
!
gvdFlagsFID
)
{
gvdClass
=
0
;
JNU_ThrowNoSuchFieldException
(
env
,
"_flags"
);
return
;
}
gvdGlyphsFID
=
env
->
GetFieldID
(
gvdClass
,
"_glyphs"
,
"[I"
);
if
(
!
gvdGlyphsFID
)
{
gvdClass
=
0
;
JNU_ThrowNoSuchFieldException
(
env
,
"_glyphs"
);
return
;
}
gvdPositionsFID
=
env
->
GetFieldID
(
gvdClass
,
"_positions"
,
"[F"
);
if
(
!
gvdPositionsFID
)
{
gvdClass
=
0
;
JNU_ThrowNoSuchFieldException
(
env
,
"_positions"
);
return
;
}
CHECK_NULL
(
gvdClass
=
env
->
FindClass
(
gvdClassName
));
CHECK_NULL
(
gvdClass
=
(
jclass
)
env
->
NewGlobalRef
(
gvdClass
));
CHECK_NULL
(
gvdCountFID
=
env
->
GetFieldID
(
gvdClass
,
"_count"
,
"I"
));
CHECK_NULL
(
gvdFlagsFID
=
env
->
GetFieldID
(
gvdClass
,
"_flags"
,
"I"
));
CHECK_NULL
(
gvdGlyphsFID
=
env
->
GetFieldID
(
gvdClass
,
"_glyphs"
,
"[I"
));
CHECK_NULL
(
gvdPositionsFID
=
env
->
GetFieldID
(
gvdClass
,
"_positions"
,
"[F"
));
gvdIndicesFID
=
env
->
GetFieldID
(
gvdClass
,
"_indices"
,
"[I"
);
if
(
!
gvdIndicesFID
)
{
gvdClass
=
0
;
JNU_ThrowNoSuchFieldException
(
env
,
"_indices"
);
return
;
}
}
int
putGV
(
JNIEnv
*
env
,
jint
gmask
,
jint
baseIndex
,
jobject
gvdata
,
const
LayoutEngine
*
engine
,
int
glyphCount
)
{
...
...
@@ -195,7 +158,7 @@ JNIEXPORT void JNICALL Java_sun_font_SunLayoutEngine_nativeLayout
jchar
*
chars
=
buffer
;
if
(
len
>
256
)
{
size_t
size
=
len
*
sizeof
(
jchar
);
if
(
size
/
sizeof
(
jchar
)
!=
len
)
{
if
(
size
/
sizeof
(
jchar
)
!=
(
size_t
)
len
)
{
return
;
}
chars
=
(
jchar
*
)
malloc
(
size
);
...
...
@@ -220,10 +183,12 @@ JNIEXPORT void JNICALL Java_sun_font_SunLayoutEngine_nativeLayout
env
->
SetIntField
(
gvdata
,
gvdCountFID
,
-
1
);
// flag failure
}
else
{
if
(
putGV
(
env
,
gmask
,
baseIndex
,
gvdata
,
engine
,
glyphCount
))
{
if
(
!
(
env
->
ExceptionCheck
()))
{
// !!! hmmm, could use current value in positions array of GVData...
putFloat
(
env
,
pt
,
x
,
y
);
}
}
}
if
(
chars
!=
buffer
)
{
free
(
chars
);
...
...
src/share/native/sun/font/sunFont.c
浏览文件 @
fb6c2de6
...
...
@@ -27,6 +27,7 @@
#include "string.h"
#include "gdefs.h"
#include "jlong.h"
#include "jni_util.h"
#include "sunfontids.h"
#include "fontscalerdefs.h"
#include "sun_font_SunFontManager.h"
...
...
@@ -81,100 +82,106 @@ static void initFontIDs(JNIEnv *env) {
if
(
initialisedFontIDs
)
{
return
;
}
tmpClass
=
(
*
env
)
->
FindClass
(
env
,
"sun/font/TrueTypeFont"
);
sunFontIDs
.
ttReadBlockMID
=
CHECK_NULL
(
tmpClass
=
(
*
env
)
->
FindClass
(
env
,
"sun/font/TrueTypeFont"
)
);
CHECK_NULL
(
sunFontIDs
.
ttReadBlockMID
=
(
*
env
)
->
GetMethodID
(
env
,
tmpClass
,
"readBlock"
,
"(Ljava/nio/ByteBuffer;II)I"
);
sunFontIDs
.
ttReadBytesMID
=
(
*
env
)
->
GetMethodID
(
env
,
tmpClass
,
"readBytes"
,
"(II)[B"
);
"(Ljava/nio/ByteBuffer;II)I"
)
)
;
CHECK_NULL
(
sunFontIDs
.
ttReadBytesMID
=
(
*
env
)
->
GetMethodID
(
env
,
tmpClass
,
"readBytes"
,
"(II)[B"
)
)
;
tmpClass
=
(
*
env
)
->
FindClass
(
env
,
"sun/font/Type1Font"
);
sunFontIDs
.
readFileMID
=
CHECK_NULL
(
tmpClass
=
(
*
env
)
->
FindClass
(
env
,
"sun/font/Type1Font"
)
);
CHECK_NULL
(
sunFontIDs
.
readFileMID
=
(
*
env
)
->
GetMethodID
(
env
,
tmpClass
,
"readFile"
,
"(Ljava/nio/ByteBuffer;)V"
);
"readFile"
,
"(Ljava/nio/ByteBuffer;)V"
)
)
;
tmpClass
=
(
*
env
)
->
FindClass
(
env
,
"java/awt/geom/Point2D$Float"
);
CHECK_NULL
(
tmpClass
=
(
*
env
)
->
FindClass
(
env
,
"java/awt/geom/Point2D$Float"
));
sunFontIDs
.
pt2DFloatClass
=
(
jclass
)(
*
env
)
->
NewGlobalRef
(
env
,
tmpClass
);
sunFontIDs
.
pt2DFloatCtr
=
(
*
env
)
->
GetMethodID
(
env
,
sunFontIDs
.
pt2DFloatClass
,
"<init>"
,
"(FF)V"
);
CHECK_NULL
(
sunFontIDs
.
pt2DFloatCtr
=
(
*
env
)
->
GetMethodID
(
env
,
sunFontIDs
.
pt2DFloatClass
,
"<init>"
,
"(FF)V"
)
)
;
sunFontIDs
.
xFID
=
(
*
env
)
->
GetFieldID
(
env
,
sunFontIDs
.
pt2DFloatClass
,
"x"
,
"F"
);
sunFontIDs
.
yFID
=
(
*
env
)
->
GetFieldID
(
env
,
sunFontIDs
.
pt2DFloatClass
,
"y"
,
"F"
);
CHECK_NULL
(
sunFontIDs
.
xFID
=
(
*
env
)
->
GetFieldID
(
env
,
sunFontIDs
.
pt2DFloatClass
,
"x"
,
"F"
)
)
;
CHECK_NULL
(
sunFontIDs
.
yFID
=
(
*
env
)
->
GetFieldID
(
env
,
sunFontIDs
.
pt2DFloatClass
,
"y"
,
"F"
)
)
;
tmpClass
=
(
*
env
)
->
FindClass
(
env
,
"sun/font/StrikeMetrics"
);
sunFontIDs
.
strikeMetricsClass
=
(
jclass
)(
*
env
)
->
NewGlobalRef
(
env
,
tmpClass
);
CHECK_NULL
(
tmpClass
=
(
*
env
)
->
FindClass
(
env
,
"sun/font/StrikeMetrics"
));
CHECK_NULL
(
sunFontIDs
.
strikeMetricsClass
=
(
jclass
)(
*
env
)
->
NewGlobalRef
(
env
,
tmpClass
));
sunFontIDs
.
strikeMetricsCtr
=
CHECK_NULL
(
sunFontIDs
.
strikeMetricsCtr
=
(
*
env
)
->
GetMethodID
(
env
,
sunFontIDs
.
strikeMetricsClass
,
"<init>"
,
"(FFFFFFFFFF)V"
);
"<init>"
,
"(FFFFFFFFFF)V"
)
)
;
tmpClass
=
(
*
env
)
->
FindClass
(
env
,
"java/awt/geom/Rectangle2D$Float"
);
CHECK_NULL
(
tmpClass
=
(
*
env
)
->
FindClass
(
env
,
"java/awt/geom/Rectangle2D$Float"
));
sunFontIDs
.
rect2DFloatClass
=
(
jclass
)(
*
env
)
->
NewGlobalRef
(
env
,
tmpClass
);
sunFontIDs
.
rect2DFloatCtr
=
(
*
env
)
->
GetMethodID
(
env
,
sunFontIDs
.
rect2DFloatClass
,
"<init>"
,
"()V"
);
sunFontIDs
.
rect2DFloatCtr4
=
CHECK_NULL
(
sunFontIDs
.
rect2DFloatCtr
=
(
*
env
)
->
GetMethodID
(
env
,
sunFontIDs
.
rect2DFloatClass
,
"<init>"
,
"()V"
)
);
CHECK_NULL
(
sunFontIDs
.
rect2DFloatCtr4
=
(
*
env
)
->
GetMethodID
(
env
,
sunFontIDs
.
rect2DFloatClass
,
"<init>"
,
"(FFFF)V"
);
sunFontIDs
.
rectF2DX
=
(
*
env
)
->
GetFieldID
(
env
,
sunFontIDs
.
rect2DFloatClass
,
"x"
,
"F"
);
sunFontIDs
.
rectF2DY
=
(
*
env
)
->
GetFieldID
(
env
,
sunFontIDs
.
rect2DFloatClass
,
"y"
,
"F"
);
sunFontIDs
.
rectF2DWidth
=
(
*
env
)
->
GetFieldID
(
env
,
sunFontIDs
.
rect2DFloatClass
,
"width"
,
"F"
);
sunFontIDs
.
rectF2DHeight
=
(
*
env
)
->
GetFieldID
(
env
,
sunFontIDs
.
rect2DFloatClass
,
"height"
,
"F"
);
tmpClass
=
(
*
env
)
->
FindClass
(
env
,
"java/awt/geom/GeneralPath"
);
"<init>"
,
"(FFFF)V"
)
);
CHECK_NULL
(
sunFontIDs
.
rectF2DX
=
(
*
env
)
->
GetFieldID
(
env
,
sunFontIDs
.
rect2DFloatClass
,
"x"
,
"F"
)
)
;
CHECK_NULL
(
sunFontIDs
.
rectF2DY
=
(
*
env
)
->
GetFieldID
(
env
,
sunFontIDs
.
rect2DFloatClass
,
"y"
,
"F"
)
)
;
CHECK_NULL
(
sunFontIDs
.
rectF2DWidth
=
(
*
env
)
->
GetFieldID
(
env
,
sunFontIDs
.
rect2DFloatClass
,
"width"
,
"F"
)
)
;
CHECK_NULL
(
sunFontIDs
.
rectF2DHeight
=
(
*
env
)
->
GetFieldID
(
env
,
sunFontIDs
.
rect2DFloatClass
,
"height"
,
"F"
)
)
;
CHECK_NULL
(
tmpClass
=
(
*
env
)
->
FindClass
(
env
,
"java/awt/geom/GeneralPath"
)
);
sunFontIDs
.
gpClass
=
(
jclass
)(
*
env
)
->
NewGlobalRef
(
env
,
tmpClass
);
sunFontIDs
.
gpCtr
=
(
*
env
)
->
GetMethodID
(
env
,
sunFontIDs
.
gpClass
,
"<init>"
,
"(I[BI[FI)V"
);
sunFontIDs
.
gpCtrEmpty
=
(
*
env
)
->
GetMethodID
(
env
,
sunFontIDs
.
gpClass
,
"<init>"
,
"()V"
);
tmpClass
=
(
*
env
)
->
FindClass
(
env
,
"sun/font/Font2D"
);
sunFontIDs
.
f2dCharToGlyphMID
=
(
*
env
)
->
GetMethodID
(
env
,
tmpClass
,
"charToGlyph"
,
"(I)I"
);
sunFontIDs
.
getMapperMID
=
CHECK_NULL
(
sunFontIDs
.
gpCtr
=
(
*
env
)
->
GetMethodID
(
env
,
sunFontIDs
.
gpClass
,
"<init>"
,
"(I[BI[FI)V"
)
);
CHECK_NULL
(
sunFontIDs
.
gpCtrEmpty
=
(
*
env
)
->
GetMethodID
(
env
,
sunFontIDs
.
gpClass
,
"<init>"
,
"()V"
)
);
CHECK_NULL
(
tmpClass
=
(
*
env
)
->
FindClass
(
env
,
"sun/font/Font2D"
)
);
CHECK_NULL
(
sunFontIDs
.
f2dCharToGlyphMID
=
(
*
env
)
->
GetMethodID
(
env
,
tmpClass
,
"charToGlyph"
,
"(I)I"
)
)
;
CHECK_NULL
(
sunFontIDs
.
getMapperMID
=
(
*
env
)
->
GetMethodID
(
env
,
tmpClass
,
"getMapper"
,
"()Lsun/font/CharToGlyphMapper;"
);
sunFontIDs
.
getTableBytesMID
=
(
*
env
)
->
GetMethodID
(
env
,
tmpClass
,
"getTableBytes"
,
"(I)[B"
);
sunFontIDs
.
canDisplayMID
=
(
*
env
)
->
GetMethodID
(
env
,
tmpClass
,
"canDisplay"
,
"(C)Z"
);
tmpClass
=
(
*
env
)
->
FindClass
(
env
,
"sun/font/CharToGlyphMapper"
);
sunFontIDs
.
charToGlyphMID
=
(
*
env
)
->
GetMethodID
(
env
,
tmpClass
,
"charToGlyph"
,
"(I)I"
);
tmpClass
=
(
*
env
)
->
FindClass
(
env
,
"sun/font/PhysicalStrike"
);
sunFontIDs
.
getGlyphMetricsMID
=
"()Lsun/font/CharToGlyphMapper;"
)
)
;
CHECK_NULL
(
sunFontIDs
.
getTableBytesMID
=
(
*
env
)
->
GetMethodID
(
env
,
tmpClass
,
"getTableBytes"
,
"(I)[B"
)
)
;
CHECK_NULL
(
sunFontIDs
.
canDisplayMID
=
(
*
env
)
->
GetMethodID
(
env
,
tmpClass
,
"canDisplay"
,
"(C)Z"
)
)
;
CHECK_NULL
(
tmpClass
=
(
*
env
)
->
FindClass
(
env
,
"sun/font/CharToGlyphMapper"
)
);
CHECK_NULL
(
sunFontIDs
.
charToGlyphMID
=
(
*
env
)
->
GetMethodID
(
env
,
tmpClass
,
"charToGlyph"
,
"(I)I"
)
)
;
CHECK_NULL
(
tmpClass
=
(
*
env
)
->
FindClass
(
env
,
"sun/font/PhysicalStrike"
)
);
CHECK_NULL
(
sunFontIDs
.
getGlyphMetricsMID
=
(
*
env
)
->
GetMethodID
(
env
,
tmpClass
,
"getGlyphMetrics"
,
"(I)Ljava/awt/geom/Point2D$Float;"
);
sunFontIDs
.
getGlyphPointMID
=
"(I)Ljava/awt/geom/Point2D$Float;"
)
)
;
CHECK_NULL
(
sunFontIDs
.
getGlyphPointMID
=
(
*
env
)
->
GetMethodID
(
env
,
tmpClass
,
"getGlyphPoint"
,
"(II)Ljava/awt/geom/Point2D$Float;"
);
sunFontIDs
.
adjustPointMID
=
"(II)Ljava/awt/geom/Point2D$Float;"
)
)
;
CHECK_NULL
(
sunFontIDs
.
adjustPointMID
=
(
*
env
)
->
GetMethodID
(
env
,
tmpClass
,
"adjustPoint"
,
"(Ljava/awt/geom/Point2D$Float;)V"
);
sunFontIDs
.
pScalerContextFID
=
(
*
env
)
->
GetFieldID
(
env
,
tmpClass
,
"pScalerContext"
,
"J"
);
tmpClass
=
(
*
env
)
->
FindClass
(
env
,
"sun/font/GlyphList"
);
sunFontIDs
.
glyphListX
=
(
*
env
)
->
GetFieldID
(
env
,
tmpClass
,
"x"
,
"F"
);
sunFontIDs
.
glyphListY
=
(
*
env
)
->
GetFieldID
(
env
,
tmpClass
,
"y"
,
"F"
);
sunFontIDs
.
glyphListLen
=
(
*
env
)
->
GetFieldID
(
env
,
tmpClass
,
"len"
,
"I"
);
sunFontIDs
.
glyphImages
=
(
*
env
)
->
GetFieldID
(
env
,
tmpClass
,
"images"
,
"[J"
);
sunFontIDs
.
glyphListUsePos
=
(
*
env
)
->
GetFieldID
(
env
,
tmpClass
,
"usePositions"
,
"Z"
);
sunFontIDs
.
glyphListPos
=
(
*
env
)
->
GetFieldID
(
env
,
tmpClass
,
"positions"
,
"[F"
);
sunFontIDs
.
lcdRGBOrder
=
(
*
env
)
->
GetFieldID
(
env
,
tmpClass
,
"lcdRGBOrder"
,
"Z"
);
sunFontIDs
.
lcdSubPixPos
=
(
*
env
)
->
GetFieldID
(
env
,
tmpClass
,
"lcdSubPixPos"
,
"Z"
);
"(Ljava/awt/geom/Point2D$Float;)V"
));
CHECK_NULL
(
sunFontIDs
.
pScalerContextFID
=
(
*
env
)
->
GetFieldID
(
env
,
tmpClass
,
"pScalerContext"
,
"J"
));
CHECK_NULL
(
tmpClass
=
(
*
env
)
->
FindClass
(
env
,
"sun/font/GlyphList"
));
CHECK_NULL
(
sunFontIDs
.
glyphListX
=
(
*
env
)
->
GetFieldID
(
env
,
tmpClass
,
"x"
,
"F"
));
CHECK_NULL
(
sunFontIDs
.
glyphListY
=
(
*
env
)
->
GetFieldID
(
env
,
tmpClass
,
"y"
,
"F"
));
CHECK_NULL
(
sunFontIDs
.
glyphListLen
=
(
*
env
)
->
GetFieldID
(
env
,
tmpClass
,
"len"
,
"I"
));
CHECK_NULL
(
sunFontIDs
.
glyphImages
=
(
*
env
)
->
GetFieldID
(
env
,
tmpClass
,
"images"
,
"[J"
));
CHECK_NULL
(
sunFontIDs
.
glyphListUsePos
=
(
*
env
)
->
GetFieldID
(
env
,
tmpClass
,
"usePositions"
,
"Z"
));
CHECK_NULL
(
sunFontIDs
.
glyphListPos
=
(
*
env
)
->
GetFieldID
(
env
,
tmpClass
,
"positions"
,
"[F"
));
CHECK_NULL
(
sunFontIDs
.
lcdRGBOrder
=
(
*
env
)
->
GetFieldID
(
env
,
tmpClass
,
"lcdRGBOrder"
,
"Z"
));
CHECK_NULL
(
sunFontIDs
.
lcdSubPixPos
=
(
*
env
)
->
GetFieldID
(
env
,
tmpClass
,
"lcdSubPixPos"
,
"Z"
));
initLCDGammaTables
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录