Rendering try

This commit is contained in:
Victor Shcherb 2011-10-22 00:37:44 +02:00
parent 4f74130bd5
commit e0943354f7
7 changed files with 394 additions and 47 deletions

View file

@ -63,6 +63,7 @@ public class RenderingRuleSearchRequest {
System.arraycopy(savedFvalues, 0, fvalues, 0, fvalues.length);
}
// USED in C
public void clearValue(RenderingRuleProperty p) {
if(p.isIntParse()){
values[p.getId()] = savedValues[p.getId()];
@ -71,6 +72,8 @@ public class RenderingRuleSearchRequest {
}
}
// USED in C
public void setInitialTagValueZoom(String tag, String val, int zoom){
clearState();
setIntFilter(ALL.R_MINZOOM, zoom);

View file

@ -21,6 +21,8 @@ jmethodID Canvas_drawPath;
jclass PaintClass;
jmethodID PaintClass_setStrokeWidth;
jmethodID PaintClass_setStrokeCap;
jmethodID PaintClass_setPathEffect;
jmethodID PaintClass_setStyle;
jmethodID PaintClass_setColor;
@ -28,12 +30,35 @@ jclass PaintStyleClass;
jobject PaintStyle_STROKE;
jobject PaintStyle_FILL_AND_STROKE;
jclass DashPathEffect;
jmethodID DashPathEffect_init;
jclass CapClass;
jobject CapClass_BUTT;
jmethodID CapClass_valueOf;
jclass MapRenderingTypesClass;
jmethodID MapRenderingTypes_getMainObjectType;
jmethodID MapRenderingTypes_getObjectSubType;
jmethodID MapRenderingTypes_getNegativeWayLayer;
jclass RenderingRuleStoragePropertiesClass;
jclass RenderingRulePropertyClass;
jclass RenderingRuleSearchRequestClass;
jfieldID RenderingRuleSearchRequest_ALL;
jmethodID RenderingRuleSearchRequest_setInitialTagValueZoom;
jmethodID RenderingRuleSearchRequest_getIntPropertyValue;
jmethodID RenderingRuleSearchRequest_getFloatPropertyValue;
jmethodID RenderingRuleSearchRequest_getIntIntPropertyValue;
jmethodID RenderingRuleSearchRequest_getStringPropertyValue;
jmethodID RenderingRuleSearchRequest_setIntFilter;
jmethodID RenderingRuleSearchRequest_setStringFilter;
jmethodID RenderingRuleSearchRequest_setBooleanFilter;
jmethodID RenderingRuleSearchRequest_search;
jmethodID RenderingRuleSearchRequest_searchI;
jclass BinaryMapDataObjectClass;
jmethodID BinaryMapDataObject_getPointsLength;
jmethodID BinaryMapDataObject_getPoint31YTile;
@ -41,6 +66,10 @@ jmethodID BinaryMapDataObject_getPoint31XTile;
jmethodID BinaryMapDataObject_getTypes;
jmethodID BinaryMapDataObject_getTagValue;
jclass TagValuePairClass;
jfieldID TagValuePair_tag;
jfieldID TagValuePair_value;
jclass RenderingContextClass;
jfieldID RenderingContextClass_interrupted;
@ -109,30 +138,207 @@ jfieldID getFid(jclass cls, char* fieldName, char* sig )
rc -> calcX = rc -> cosRotateTileSize * dTileX - rc -> sinRotateTileSize * dTileY;
rc -> calcY = rc -> sinRotateTileSize * dTileX + rc -> cosRotateTileSize * dTileY;
sprintf(debugMessage, "Coordinates %f %f", rc->calcX, rc->calcY);
__android_log_print(ANDROID_LOG_WARN, "net.osmand", debugMessage);
// sprintf(debugMessage, "Coordinates %f %f", rc->calcX, rc->calcY);
// __android_log_print(ANDROID_LOG_WARN, "net.osmand", debugMessage);
if(rc -> calcX >= 0 && rc -> calcX < rc -> width &&
rc -> calcY >= 0 && rc -> calcY < rc ->height){
rc -> pointInsideCount++;
}
}
int getIntPropertyValue(jobject renderingRuleSearch, char* prop)
{
jobject all = (*env)->GetObjectField(env, renderingRuleSearch, RenderingRuleSearchRequest_ALL);
jfieldID fid = (*env)->GetFieldID(env, RenderingRuleStoragePropertiesClass, prop,
"Lnet/osmand/render/RenderingRuleProperty;");
jobject propObj = (*env)->GetObjectField(env, all, fid);
int res = (*env)->CallIntMethod(env, renderingRuleSearch, RenderingRuleSearchRequest_getIntPropertyValue, propObj);
(*env)->DeleteLocalRef(env, all);
(*env)->DeleteLocalRef(env, propObj);
return res;
}
jstring getStringPropertyValue(jobject renderingRuleSearch, char* prop)
{
jobject all = (*env)->GetObjectField(env, renderingRuleSearch, RenderingRuleSearchRequest_ALL);
jfieldID fid = (*env)->GetFieldID(env, RenderingRuleStoragePropertiesClass, prop,
"Lnet/osmand/render/RenderingRuleProperty;");
jobject propObj = (*env)->GetObjectField(env, all, fid);
jstring res = (*env)->CallObjectMethod(env, renderingRuleSearch, RenderingRuleSearchRequest_getStringPropertyValue, propObj);
(*env)->DeleteLocalRef(env, all);
(*env)->DeleteLocalRef(env, propObj);
return res;
}
void setIntPropertyFilter(jobject renderingRuleSearch, char* prop, int filter)
{
jobject all = (*env)->GetObjectField(env, renderingRuleSearch, RenderingRuleSearchRequest_ALL);
jfieldID fid = (*env)->GetFieldID(env, RenderingRuleStoragePropertiesClass, prop,
"Lnet/osmand/render/RenderingRuleProperty;");
jobject propObj = (*env)->GetObjectField(env, all, fid);
(*env)->CallVoidMethod(env, renderingRuleSearch, RenderingRuleSearchRequest_setIntFilter, propObj, filter);
(*env)->DeleteLocalRef(env, all);
(*env)->DeleteLocalRef(env, propObj);
}
float getFloatPropertyValue(jobject renderingRuleSearch, char* prop)
{
jobject all = (*env)->GetObjectField(env, renderingRuleSearch, RenderingRuleSearchRequest_ALL);
jfieldID fid = (*env)->GetFieldID(env, RenderingRuleStoragePropertiesClass, prop,
"Lnet/osmand/render/RenderingRuleProperty;");
jobject propObj = (*env)->GetObjectField(env, all, fid);
float res = (*env)->CallFloatMethod(env, renderingRuleSearch, RenderingRuleSearchRequest_getFloatPropertyValue, propObj);
(*env)->DeleteLocalRef(env, all);
(*env)->DeleteLocalRef(env, propObj);
return res;
}
jobject getDashEffect(jstring dashes){
int length = (*env)->GetStringLength(env, dashes);
const char* chars = (*env)->GetStringUTFChars(env, dashes, NULL);
int i = 0;
char fval[10];
int flength = 0;
jfloat primFloats[20];
int floatLen = 0;
for(;i<=length;i++)
{
if(i == length)
{
if(flength > 0) { fval[flength] = 0;
primFloats[floatLen++] = atof(fval); flength = 0;}
}
else
{
if(chars[i] != '_')
{
// suppose it is a character
fval[flength++] = chars[i] ;
} else {
if(flength > 0) { fval[flength] = 0;
primFloats[floatLen++] = atof(fval); flength = 0;}
}
}
}
(*env)->ReleaseStringUTFChars(env, dashes, chars);
jobjectArray floatArray = (*env)->NewFloatArray(env, floatLen);
(*env)->SetFloatArrayRegion(env, floatArray, 0, floatLen, primFloats);
jobject dashEffect = (*env)->NewObject(env, DashPathEffect, DashPathEffect_init, floatArray, 0);
(*env)->DeleteLocalRef(env, floatArray);
return dashEffect;
}
int updatePaint(jobject renderingRuleSearch, jobject paint, int ind, int area,
RenderingContext* rc) {
char* rColor;
char* rStrokeW;
char* rCap;
char* rPathEff;
if (ind == 0) {
rColor = "R_COLOR";
rStrokeW = "R_STROKE_WIDTH";
rCap = "R_CAP";
rPathEff = "R_PATH_EFFECT";
} else if (ind == 1) {
rColor = "R_COLOR_2";
rStrokeW = "R_STROKE_WIDTH_2";
rCap = "R_CAP_2";
rPathEff = "R_PATH_EFFECT_2";
} else {
rColor = "R_COLOR_3";
rStrokeW = "R_STROKE_WIDTH_3";
rCap = "R_CAP_3";
rPathEff = "R_PATH_EFFECT_3";
}
if (!area) {
// TODO not complete
float stroke = getFloatPropertyValue(renderingRuleSearch, rStrokeW);
if (!(stroke > 0)) {
return 0;
}
int color = getIntPropertyValue(renderingRuleSearch, rColor);
(*env)->CallVoidMethod(env, paint, PaintClass_setStyle,PaintStyle_STROKE);
(*env)->CallVoidMethod(env, paint, PaintClass_setColor, color);
(*env)->CallVoidMethod(env, paint, PaintClass_setStrokeWidth, stroke);
jstring cap = getStringPropertyValue(renderingRuleSearch, rCap);
jstring pathEff = getStringPropertyValue(renderingRuleSearch, rPathEff);
if (cap != NULL && (*env)->GetStringLength(env, cap) > 0) {
jobject capObj = (*env)->CallStaticObjectMethod(env, CapClass, CapClass_valueOf, cap);
(*env)->CallVoidMethod(env, paint, PaintClass_setStrokeCap, capObj);
(*env)->DeleteLocalRef(env, capObj);
} else {
(*env)->CallVoidMethod(env, paint, PaintClass_setStrokeCap, CapClass_BUTT);
}
if (pathEff != NULL && (*env)->GetStringLength(env, pathEff) > 0) {
//jobject pathObj = getDashEffect(pathEff);
//(*env)->CallVoidMethod(env, paint, PaintClass_setPathEffect, pathObj);
// (*env)->DeleteLocalRef(env, pathObj );
} else {
(*env)->CallObjectMethod(env, paint, PaintClass_setPathEffect, NULL);
}
(*env)->DeleteLocalRef(env, cap);
(*env)->DeleteLocalRef(env, pathEff);
return 1;
}
return 0;
}
void drawPolyline(jobject binaryMapDataObject, jobject renderingRuleSearch, jobject cv, jobject paint,
RenderingContext* rc, jobject pair, int layer, int drawOnlyShadow)
{
rc -> visible++;
__android_log_print(ANDROID_LOG_WARN, "net.osmand", "Draw polyline");
jint length = (*env)->CallIntMethod(env, binaryMapDataObject, BinaryMapDataObject_getPointsLength);
if (renderingRuleSearch == NULL || pair == NULL) {
return;
}
jint length = (*env)->CallIntMethod(env, binaryMapDataObject,
BinaryMapDataObject_getPointsLength);
if (length < 2) {
return;
}
jstring tag = (*env)->GetObjectField(env, pair, TagValuePair_tag);
jstring value = (*env)->GetObjectField(env, pair, TagValuePair_value);
// __android_log_print(ANDROID_LOG_WARN, "net.osmand", "About to search");
(*env)->CallVoidMethod(env, renderingRuleSearch,
RenderingRuleSearchRequest_setInitialTagValueZoom, tag, value,
rc->zoom);
setIntPropertyFilter(renderingRuleSearch, "R_LAYER", layer);
// TODO oneway
// int oneway = 0;
//if(rc -> zoom >= 16 && "highway".equals(pair.tag) && MapRenderingTypes.isOneWayWay(obj.getHighwayAttributes())){
//strcmp("highway") oneway = 1;
//}
int rendered = (*env)->CallBooleanMethod(env, renderingRuleSearch,
RenderingRuleSearchRequest_search, 2);
// __android_log_print(ANDROID_LOG_WARN, "net.osmand", "Search done");
(*env)->DeleteLocalRef(env, tag);
(*env)->DeleteLocalRef(env, value);
if (!rendered || !updatePaint(renderingRuleSearch, paint, 0, 0, rc)) {
return;
}
rc->visible++;
// __android_log_print(ANDROID_LOG_WARN, "net.osmand", "About to draw");
jobject path = NULL;
int i = 0;
for(; i< length ; i++)
{
for (; i < length; i++) {
calcPoint(binaryMapDataObject, i, rc);
if (path == NULL) {
path = (*env)->NewObject( env, PathClass, Path_init);
(*env)->CallVoidMethod(env, path, Path_moveTo, rc->calcX, rc->calcY);
path = (*env)->NewObject(env, PathClass, Path_init);
(*env)->CallVoidMethod(env, path, Path_moveTo, rc->calcX,
rc->calcY);
} else {
(*env)->CallVoidMethod(env, path, Path_lineTo, rc->calcX, rc->calcY);
(*env)->CallVoidMethod(env, path, Path_lineTo, rc->calcX,
rc->calcY);
}
}
@ -142,9 +348,6 @@ jfieldID getFid(jclass cls, char* fieldName, char* sig )
//int shadowRadius = render.getIntPropertyValue(render.ALL.R_SHADOW_RADIUS);
//drawPolylineShadow(canvas, rc, path, shadowColor, shadowRadius);
} else {
(*env)->CallVoidMethod(env, paint, PaintClass_setColor, (jint) 0xffdddddd);
(*env)->CallVoidMethod(env, paint, PaintClass_setStyle, PaintStyle_STROKE);
(*env)->CallVoidMethod(env, paint, PaintClass_setStrokeWidth, 3.5f);
(*env)->CallVoidMethod(env, cv, Canvas_drawPath, path, paint);
//if (updatePaint(render, paint, 1, false, rc)) {
// canvas.drawPath(path, paint);
@ -153,11 +356,10 @@ jfieldID getFid(jclass cls, char* fieldName, char* sig )
// }
//}
}
(*env)->DeleteLocalRef(env, path);
}
}
}
void drawObject(RenderingContext* rc, jobject binaryMapDataObject, jobject cv,
jobject renderingRuleSearch, jobject paint, int l, int renderText, int drawOnlyShadow) {
@ -184,6 +386,7 @@ void drawObject(RenderingContext* rc, jobject binaryMapDataObject, jobject cv,
// polyline
int layer = (*env)->CallStaticIntMethod(env, MapRenderingTypesClass,
MapRenderingTypes_getNegativeWayLayer, mainType);
// __android_log_print(ANDROID_LOG_WARN, "net.osmand", "Draw polyline");
drawPolyline(binaryMapDataObject, renderingRuleSearch, cv, paint, rc, pair, layer, drawOnlyShadow);
} else if(t == 3 && !drawOnlyShadow) {
// polygon
@ -214,8 +417,8 @@ void copyRenderingContext(jobject orc, RenderingContext* rc)
rc->visible = (*env)->GetIntField(env, orc, getFid( RenderingContextClass, "visible", "I" ) );
rc->allObjects = (*env)->GetIntField(env, orc, getFid( RenderingContextClass, "allObjects", "I" ) );
rc->cosRotateTileSize = (*env)->GetIntField(env, orc, getFid( RenderingContextClass, "cosRotateTileSize", "F" ) );
rc->sinRotateTileSize = (*env)->GetIntField(env, orc, getFid( RenderingContextClass, "sinRotateTileSize", "F" ) );
rc->cosRotateTileSize = (*env)->GetFloatField(env, orc, getFid( RenderingContextClass, "cosRotateTileSize", "F" ) );
rc->sinRotateTileSize = (*env)->GetFloatField(env, orc, getFid( RenderingContextClass, "sinRotateTileSize", "F" ) );
rc->shadowRenderingMode = (*env)->GetIntField(env, orc, getFid( RenderingContextClass, "shadowRenderingMode", "I" ) );
rc->shadowLevelMin = (*env)->GetIntField(env, orc, getFid( RenderingContextClass, "shadowLevelMin", "I" ) );
@ -252,8 +455,18 @@ void initLibrary(jobject rc)
PaintClass = (*env)->FindClass(env, "android/graphics/Paint");
PaintClass_setColor = (*env)->GetMethodID(env, PaintClass, "setColor", "(I)V" );
PaintClass_setStrokeWidth = (*env)->GetMethodID(env, PaintClass, "setStrokeWidth", "(F)V" );
PaintClass_setStrokeCap = (*env)->GetMethodID(env, PaintClass, "setStrokeCap", "(Landroid/graphics/Paint$Cap;)V" );
PaintClass_setPathEffect = (*env)->GetMethodID(env, PaintClass, "setPathEffect",
"(Landroid/graphics/PathEffect;)Landroid/graphics/PathEffect;" );
PaintClass_setStyle = (*env)->GetMethodID(env, PaintClass, "setStyle", "(Landroid/graphics/Paint$Style;)V" );
DashPathEffect = (*env)->FindClass(env, "android/graphics/DashPathEffect");
DashPathEffect_init =(*env)->GetMethodID(env, DashPathEffect, "<init>", "([FF)V" );
CapClass = (*env)->FindClass(env, "android/graphics/Paint$Cap");
CapClass_valueOf = (*env)->GetStaticMethodID(env, CapClass, "valueOf", "(Ljava/lang/String;)Landroid/graphics/Paint$Cap;" );
CapClass_BUTT = (*env)->GetStaticObjectField(env, CapClass,
(*env)-> GetStaticFieldID(env, CapClass, "BUTT","Landroid/graphics/Paint$Cap;"));
PaintStyleClass = (*env)->FindClass(env, "android/graphics/Paint$Style");
PaintStyle_FILL_AND_STROKE = (*env)->GetStaticObjectField(env, PaintStyleClass,
@ -277,6 +490,37 @@ void initLibrary(jobject rc)
BinaryMapDataObject_getTagValue = (*env)->GetMethodID(env, BinaryMapDataObjectClass,"getTagValue",
"(I)Lnet/osmand/binary/BinaryMapIndexReader$TagValuePair;");
TagValuePairClass = (*env)->FindClass(env, "net/osmand/binary/BinaryMapIndexReader$TagValuePair");
TagValuePair_tag = (*env)->GetFieldID(env, TagValuePairClass, "tag", "Ljava/lang/String;");
TagValuePair_value= (*env)->GetFieldID(env, TagValuePairClass, "value", "Ljava/lang/String;");
RenderingRuleStoragePropertiesClass = (*env)->FindClass(env, "net/osmand/render/RenderingRuleStorageProperties");
RenderingRulePropertyClass = (*env)->FindClass(env, "net/osmand/render/RenderingRuleProperty");
RenderingRuleSearchRequestClass = (*env)->FindClass(env, "net/osmand/render/RenderingRuleSearchRequest");
RenderingRuleSearchRequest_setInitialTagValueZoom =
(*env)->GetMethodID(env, RenderingRuleSearchRequestClass,"setInitialTagValueZoom",
"(Ljava/lang/String;Ljava/lang/String;I)V");
RenderingRuleSearchRequest_ALL = (*env)->GetFieldID(env, RenderingRuleSearchRequestClass, "ALL",
"Lnet/osmand/render/RenderingRuleStorageProperties;");
RenderingRuleSearchRequest_getIntPropertyValue = (*env)->GetMethodID(env, RenderingRuleSearchRequestClass,
"getIntPropertyValue", "(Lnet/osmand/render/RenderingRuleProperty;)I");
RenderingRuleSearchRequest_getIntIntPropertyValue = (*env)->GetMethodID(env, RenderingRuleSearchRequestClass,
"getIntPropertyValue", "(Lnet/osmand/render/RenderingRuleProperty;I)I");
RenderingRuleSearchRequest_getFloatPropertyValue = (*env)->GetMethodID(env, RenderingRuleSearchRequestClass,
"getFloatPropertyValue", "(Lnet/osmand/render/RenderingRuleProperty;)F");
RenderingRuleSearchRequest_getStringPropertyValue = (*env)->GetMethodID(env, RenderingRuleSearchRequestClass,
"getStringPropertyValue", "(Lnet/osmand/render/RenderingRuleProperty;)Ljava/lang/String;");
RenderingRuleSearchRequest_setIntFilter = (*env)->GetMethodID(env, RenderingRuleSearchRequestClass,
"setIntFilter", "(Lnet/osmand/render/RenderingRuleProperty;I)V");
RenderingRuleSearchRequest_setStringFilter = (*env)->GetMethodID(env, RenderingRuleSearchRequestClass,
"setStringFilter", "(Lnet/osmand/render/RenderingRuleProperty;Ljava/lang/String;)V");
RenderingRuleSearchRequest_setBooleanFilter = (*env)->GetMethodID(env, RenderingRuleSearchRequestClass,
"setBooleanFilter", "(Lnet/osmand/render/RenderingRuleProperty;Z)V");
RenderingRuleSearchRequest_search = (*env)->GetMethodID(env, RenderingRuleSearchRequestClass, "search", "(I)Z");
RenderingRuleSearchRequest_searchI = (*env)->GetMethodID(env, RenderingRuleSearchRequestClass, "search", "(IZ)Z");
}
void unloadLibrary()
@ -287,10 +531,16 @@ void unloadLibrary()
(*env)->DeleteLocalRef( env, CanvasClass );
(*env)->DeleteLocalRef( env, PaintClass );
(*env)->DeleteLocalRef( env, RenderingContextClass );
(*env)->DeleteLocalRef( env, DashPathEffect );
(*env)->DeleteLocalRef( env, CapClass );
(*env)->DeleteLocalRef( env, CapClass_BUTT );
(*env)->DeleteLocalRef( env, PaintStyleClass );
(*env)->DeleteLocalRef( env, PaintStyle_FILL_AND_STROKE );
(*env)->DeleteLocalRef( env, PaintStyle_STROKE );
(*env)->DeleteLocalRef( env, TagValuePairClass);
(*env)->DeleteLocalRef( env, RenderingRuleSearchRequestClass);
(*env)->DeleteLocalRef( env, RenderingRulePropertyClass);
(*env)->DeleteLocalRef( env, RenderingRuleStoragePropertiesClass);
(*env)->DeleteLocalRef( env, BinaryMapDataObjectClass );
}
@ -302,11 +552,11 @@ JNIEXPORT jstring JNICALL Java_net_osmand_plus_render_NativeOsmandLibrary_genera
jboolean useEnglishNames, jobject renderingRuleSearchRequest, jobject paint) {
__android_log_print(ANDROID_LOG_WARN, "net.osmand", "Initializing rendering");
int i = 0;
//if(!env) {
if(!env) {
env = ienv;
initLibrary(renderingContext);
//}
//env = ienv;
}
env = ienv;
__android_log_print(ANDROID_LOG_WARN, "net.osmand", "Classes and methods are loaded");
const size_t size = (*env)->GetArrayLength(env, binaryMapDataObjects);
@ -321,8 +571,16 @@ JNIEXPORT jstring JNICALL Java_net_osmand_plus_render_NativeOsmandLibrary_genera
for(; i < size; i++)
{
jobject binaryMapDataObject = (jobject) (*env)->GetObjectArrayElement(env, binaryMapDataObjects, i);
drawObject(&rc, binaryMapDataObject, cv, renderingRuleSearchRequest, paint, 0, 1, 0);
jintArray types = (*env)->CallObjectMethod(env, binaryMapDataObject, BinaryMapDataObject_getTypes);
// check multipolygon?
if (types != NULL) {
jint sizeTypes = (*env)->GetArrayLength(env, types);
(*env)->DeleteLocalRef(env, types);
int j = 0;
for (; j < sizeTypes; j++) {
drawObject(&rc, binaryMapDataObject, cv, renderingRuleSearchRequest, paint, j, 1, 0);
}
}
(*env)->DeleteLocalRef(env, binaryMapDataObject);
}
@ -339,7 +597,7 @@ JNIEXPORT jstring JNICALL Java_net_osmand_plus_render_NativeOsmandLibrary_genera
mergeRenderingContext(renderingContext, &rc);
unloadLibrary();
// unloadLibrary();
return result;

Binary file not shown.

View file

@ -0,0 +1,86 @@
/home/victor/projects/OsmAnd/git/OsmAnd/obj/local/armeabi/objs-debug/osmand/rendering.o: \
/home/victor/projects/OsmAnd/git/OsmAnd/jni/osmand/rendering.c \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/jni.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/android/log.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/time.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/sys/cdefs.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/sys/cdefs_elf.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/sys/time.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/sys/types.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/stdint.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/sys/_types.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/machine/_types.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/linux/posix_types.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/linux/stddef.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/linux/compiler.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/asm/posix_types.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/asm/types.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/linux/types.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/machine/kernel.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/sys/sysmacros.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/linux/time.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/asm/siginfo.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/asm-generic/siginfo.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/stdio.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/stdlib.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/string.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/malloc.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/alloca.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/strings.h \
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/memory.h
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/jni.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/android/log.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/time.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/sys/cdefs.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/sys/cdefs_elf.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/sys/time.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/sys/types.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/stdint.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/sys/_types.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/machine/_types.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/linux/posix_types.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/linux/stddef.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/linux/compiler.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/asm/posix_types.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/asm/types.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/linux/types.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/machine/kernel.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/sys/sysmacros.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/linux/time.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/asm/siginfo.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/asm-generic/siginfo.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/stdio.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/stdlib.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/string.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/malloc.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/alloca.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/strings.h:
/home/victor/projects/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/memory.h:

View file

@ -299,9 +299,9 @@ public class OsmandRenderer {
log.info(rc.renderingDebugInfo);
} else {
long time = System.currentTimeMillis() - now;
BinaryMapDataObject[] array = objects.toArray(new BinaryMapDataObject[objects.size()]);
String res = NativeOsmandLibrary.generateRendering(rc, array, cv, useEnglishNames, render, paint);
long time = System.currentTimeMillis() - now;
rc.renderingDebugInfo = String.format("Rendering done in %s (%s text) ms\n"
+ "(%s points, %s points inside, %s objects visile from %s)\n" + res,//$NON-NLS-1$
time, 0, rc.pointCount, rc.pointInsideCount, rc.visible, rc.allObjects);