333 nresults[4] = (size_t)&(info->width)-baseAddr; 334 nresults[5] = (size_t)&(info->height)-baseAddr; 335 nresults[6] = (size_t)&(info->rowBytes)-baseAddr; 336 nresults[7] = (size_t)&(info->topLeftX)-baseAddr; 337 nresults[8] = (size_t)&(info->topLeftY)-baseAddr; 338 nresults[9] = (size_t)&(info->image)-baseAddr; 339 nresults[10] = (jlong)(uintptr_t)info; /* invisible glyph */ 340 nresults[11] = (size_t)&(info->cellInfo)-baseAddr; 341 nresults[12] = (size_t)&(info->managed)-baseAddr; 342 343 (*env)->ReleasePrimitiveArrayCritical(env, results, nresults, 0); 344 } 345 346 JNIEXPORT TTLayoutTableCache* newLayoutTableCache() { 347 TTLayoutTableCache* ltc = calloc(1, sizeof(TTLayoutTableCache)); 348 if (ltc) { 349 int i; 350 for(i=0;i<LAYOUTCACHE_ENTRIES;i++) { 351 ltc->entries[i].len = -1; 352 } 353 } 354 return ltc; 355 } 356 357 JNIEXPORT void freeLayoutTableCache(TTLayoutTableCache* ltc) { 358 if (ltc) { 359 int i; 360 for(i=0;i<LAYOUTCACHE_ENTRIES;i++) { 361 if(ltc->entries[i].ptr) free (ltc->entries[i].ptr); 362 } 363 if (ltc->kernPairs) free(ltc->kernPairs); 364 free(ltc); 365 } 366 } | 333 nresults[4] = (size_t)&(info->width)-baseAddr; 334 nresults[5] = (size_t)&(info->height)-baseAddr; 335 nresults[6] = (size_t)&(info->rowBytes)-baseAddr; 336 nresults[7] = (size_t)&(info->topLeftX)-baseAddr; 337 nresults[8] = (size_t)&(info->topLeftY)-baseAddr; 338 nresults[9] = (size_t)&(info->image)-baseAddr; 339 nresults[10] = (jlong)(uintptr_t)info; /* invisible glyph */ 340 nresults[11] = (size_t)&(info->cellInfo)-baseAddr; 341 nresults[12] = (size_t)&(info->managed)-baseAddr; 342 343 (*env)->ReleasePrimitiveArrayCritical(env, results, nresults, 0); 344 } 345 346 JNIEXPORT TTLayoutTableCache* newLayoutTableCache() { 347 TTLayoutTableCache* ltc = calloc(1, sizeof(TTLayoutTableCache)); 348 if (ltc) { 349 int i; 350 for(i=0;i<LAYOUTCACHE_ENTRIES;i++) { 351 ltc->entries[i].len = -1; 352 } 353 ltc->entries[0].tag = GDEF_TAG; 354 ltc->entries[1].tag = GPOS_TAG; 355 ltc->entries[2].tag = GSUB_TAG; 356 ltc->entries[3].tag = HEAD_TAG; 357 ltc->entries[4].tag = KERN_TAG; 358 ltc->entries[5].tag = MORT_TAG; 359 ltc->entries[6].tag = MORX_TAG; 360 } 361 return ltc; 362 } 363 364 JNIEXPORT void freeLayoutTableCache(TTLayoutTableCache* ltc) { 365 if (ltc) { 366 int i; 367 for(i=0;i<LAYOUTCACHE_ENTRIES;i++) { 368 if(ltc->entries[i].ptr) free (ltc->entries[i].ptr); 369 } 370 if (ltc->kernPairs) free(ltc->kernPairs); 371 free(ltc); 372 } 373 } |