forked from ExternalVendorCode/Signal-Server
Complete migration of models to image rendering engine
This commit is contained in:
199
outputs.cc
199
outputs.cc
@@ -31,6 +31,13 @@ void DoPathLoss(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
int indx, x, y, z, x0 = 0, y0 = 0, loss, match;
|
int indx, x, y, z, x0 = 0, y0 = 0, loss, match;
|
||||||
double lat, lon, conversion, one_over_gamma, minwest;
|
double lat, lon, conversion, one_over_gamma, minwest;
|
||||||
FILE *fd;
|
FILE *fd;
|
||||||
|
IMAGE_CTX ctx;
|
||||||
|
int success;
|
||||||
|
|
||||||
|
if((success = image_init(&ctx, width, (kml ? height : height + 30), IMAGE_RGB, IMAGE_DEFAULT)) != 0){
|
||||||
|
fprintf(stderr,"Error initializing image\n");
|
||||||
|
exit(success);
|
||||||
|
}
|
||||||
|
|
||||||
one_over_gamma = 1.0 / GAMMA;
|
one_over_gamma = 1.0 / GAMMA;
|
||||||
conversion =
|
conversion =
|
||||||
@@ -46,24 +53,11 @@ void DoPathLoss(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
filename[strlen(filename) - 4] = 0; /* Remove .qth */
|
filename[strlen(filename) - 4] = 0; /* Remove .qth */
|
||||||
}
|
}
|
||||||
|
|
||||||
y = strlen(filename);
|
if(image_get_filename(&ctx,mapfile,sizeof(mapfile),filename) != 0){
|
||||||
|
fprintf(stderr,"Error creating file name\n");
|
||||||
if (y > 4) {
|
exit(1);
|
||||||
if (filename[y - 1] == 'm' && filename[y - 2] == 'p'
|
|
||||||
&& filename[y - 3] == 'p' && filename[y - 4] == '.')
|
|
||||||
y -= 4;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (x = 0; x < y; x++) {
|
|
||||||
mapfile[x] = filename[x];
|
|
||||||
}
|
|
||||||
|
|
||||||
mapfile[x] = '.';
|
|
||||||
mapfile[x + 1] = 'p';
|
|
||||||
mapfile[x + 2] = 'p';
|
|
||||||
mapfile[x + 3] = 'm';
|
|
||||||
mapfile[x + 4] = 0;
|
|
||||||
|
|
||||||
fd = fopen(mapfile,"wb");
|
fd = fopen(mapfile,"wb");
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -88,7 +82,6 @@ void DoPathLoss(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
east = (minwest < 180.0 ? -minwest : 360.0 - min_west);
|
east = (minwest < 180.0 ? -minwest : 360.0 - min_west);
|
||||||
west = (double)(max_west < 180 ? -max_west : 360 - max_west);
|
west = (double)(max_west < 180 ? -max_west : 360 - max_west);
|
||||||
|
|
||||||
fprintf(fd, "P6\n%u %u\n255\n", width, (kml ? height : height + 30));
|
|
||||||
if (debug) {
|
if (debug) {
|
||||||
fprintf(stderr, "\nWriting \"%s\" (%ux%u pixmap image)...\n",
|
fprintf(stderr, "\nWriting \"%s\" (%ux%u pixmap image)...\n",
|
||||||
filename != NULL ? mapfile : "to stdout", width, (kml ? height : height + 30));
|
filename != NULL ? mapfile : "to stdout", width, (kml ? height : height + 30));
|
||||||
@@ -161,11 +154,11 @@ void DoPathLoss(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
|
|
||||||
if (red >= 180 && green <= 75
|
if (red >= 180 && green <= 75
|
||||||
&& blue <= 75 && loss == 0)
|
&& blue <= 75 && loss == 0)
|
||||||
fprintf(fd, "%c%c%c", 255 ^ red,
|
ADD_PIXEL(&ctx, 255 ^ red,
|
||||||
255 ^ green,
|
255 ^ green,
|
||||||
255 ^ blue);
|
255 ^ blue);
|
||||||
else
|
else
|
||||||
fprintf(fd, "%c%c%c", 255, 0,
|
ADD_PIXEL(&ctx, 255, 0,
|
||||||
0);
|
0);
|
||||||
|
|
||||||
cityorcounty = 1;
|
cityorcounty = 1;
|
||||||
@@ -174,7 +167,7 @@ void DoPathLoss(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
else if (mask & 4) {
|
else if (mask & 4) {
|
||||||
/* County Boundaries: Black */
|
/* County Boundaries: Black */
|
||||||
|
|
||||||
fprintf(fd, "%c%c%c", 0, 0, 0);
|
ADD_PIXEL(&ctx, 0, 0, 0);
|
||||||
|
|
||||||
cityorcounty = 1;
|
cityorcounty = 1;
|
||||||
}
|
}
|
||||||
@@ -185,15 +178,14 @@ void DoPathLoss(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
&& loss >
|
&& loss >
|
||||||
abs(contour_threshold))) {
|
abs(contour_threshold))) {
|
||||||
if (ngs) /* No terrain */
|
if (ngs) /* No terrain */
|
||||||
fprintf(fd, "%c%c%c",
|
ADD_PIXEL(&ctx,
|
||||||
255, 255, 255);
|
255, 255, 255);
|
||||||
else {
|
else {
|
||||||
/* Display land or sea elevation */
|
/* Display land or sea elevation */
|
||||||
|
|
||||||
if (dem[indx].
|
if (dem[indx].
|
||||||
data[x0][y0] == 0)
|
data[x0][y0] == 0)
|
||||||
fprintf(fd,
|
ADD_PIXEL(&ctx,
|
||||||
"%c%c%c",
|
|
||||||
0, 0,
|
0, 0,
|
||||||
170);
|
170);
|
||||||
else {
|
else {
|
||||||
@@ -201,8 +193,7 @@ void DoPathLoss(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
(unsigned)
|
(unsigned)
|
||||||
(0.5 +
|
(0.5 +
|
||||||
pow((double)(dem[indx].data[x0][y0] - min_elevation), one_over_gamma) * conversion);
|
pow((double)(dem[indx].data[x0][y0] - min_elevation), one_over_gamma) * conversion);
|
||||||
fprintf(fd,
|
ADD_PIXEL(&ctx,
|
||||||
"%c%c%c",
|
|
||||||
terrain,
|
terrain,
|
||||||
terrain,
|
terrain,
|
||||||
terrain);
|
terrain);
|
||||||
@@ -215,7 +206,7 @@ void DoPathLoss(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
|
|
||||||
if (red != 0 || green != 0
|
if (red != 0 || green != 0
|
||||||
|| blue != 0)
|
|| blue != 0)
|
||||||
fprintf(fd, "%c%c%c",
|
ADD_PIXEL(&ctx,
|
||||||
red, green,
|
red, green,
|
||||||
blue);
|
blue);
|
||||||
|
|
||||||
@@ -223,8 +214,7 @@ void DoPathLoss(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
|
|
||||||
if (dem[indx].
|
if (dem[indx].
|
||||||
data[x0][y0] == 0)
|
data[x0][y0] == 0)
|
||||||
fprintf(fd,
|
ADD_PIXEL(&ctx,
|
||||||
"%c%c%c",
|
|
||||||
0, 0,
|
0, 0,
|
||||||
170);
|
170);
|
||||||
else {
|
else {
|
||||||
@@ -233,8 +223,7 @@ void DoPathLoss(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
(unsigned)
|
(unsigned)
|
||||||
(0.5 +
|
(0.5 +
|
||||||
pow((double)(dem[indx].data[x0][y0] - min_elevation), one_over_gamma) * conversion);
|
pow((double)(dem[indx].data[x0][y0] - min_elevation), one_over_gamma) * conversion);
|
||||||
fprintf(fd,
|
ADD_PIXEL(&ctx,
|
||||||
"%c%c%c",
|
|
||||||
terrain,
|
terrain,
|
||||||
terrain,
|
terrain,
|
||||||
terrain);
|
terrain);
|
||||||
@@ -248,11 +237,18 @@ void DoPathLoss(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
/* We should never get here, but if */
|
/* We should never get here, but if */
|
||||||
/* we do, display the region as black */
|
/* we do, display the region as black */
|
||||||
|
|
||||||
fprintf(fd, "%c%c%c", 0, 0, 0);
|
ADD_PIXEL(&ctx, 0, 0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if((success = image_write(&ctx,fd)) != 0){
|
||||||
|
fprintf(stderr,"Error writing image\n");
|
||||||
|
exit(success);
|
||||||
|
}
|
||||||
|
|
||||||
|
image_free(&ctx);
|
||||||
|
|
||||||
if( filename != NULL ) {
|
if( filename != NULL ) {
|
||||||
fclose(fd);
|
fclose(fd);
|
||||||
fd = NULL;
|
fd = NULL;
|
||||||
@@ -275,6 +271,13 @@ void DoSigStr(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
int indx, x, y, z = 1, x0 = 0, y0 = 0, signal, match;
|
int indx, x, y, z = 1, x0 = 0, y0 = 0, signal, match;
|
||||||
double conversion, one_over_gamma, lat, lon, minwest;
|
double conversion, one_over_gamma, lat, lon, minwest;
|
||||||
FILE *fd;
|
FILE *fd;
|
||||||
|
IMAGE_CTX ctx;
|
||||||
|
int success;
|
||||||
|
|
||||||
|
if((success = image_init(&ctx, width, (kml ? height : height + 30), IMAGE_RGB, IMAGE_DEFAULT)) != 0){
|
||||||
|
fprintf(stderr,"Error initializing image\n");
|
||||||
|
exit(success);
|
||||||
|
}
|
||||||
|
|
||||||
one_over_gamma = 1.0 / GAMMA;
|
one_over_gamma = 1.0 / GAMMA;
|
||||||
conversion =
|
conversion =
|
||||||
@@ -290,24 +293,11 @@ void DoSigStr(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
filename[strlen(filename) - 4] = 0; /* Remove .qth */
|
filename[strlen(filename) - 4] = 0; /* Remove .qth */
|
||||||
}
|
}
|
||||||
|
|
||||||
y = strlen(filename);
|
if(image_get_filename(&ctx,mapfile,sizeof(mapfile),filename) != 0){
|
||||||
|
fprintf(stderr,"Error creating file name\n");
|
||||||
if (y > 4) {
|
exit(1);
|
||||||
if (filename[y - 1] == 'm' && filename[y - 2] == 'p'
|
|
||||||
&& filename[y - 3] == 'p' && filename[y - 4] == '.')
|
|
||||||
y -= 4;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (x = 0; x < y; x++) {
|
|
||||||
mapfile[x] = filename[x];
|
|
||||||
}
|
|
||||||
|
|
||||||
mapfile[x] = '.';
|
|
||||||
mapfile[x + 1] = 'p';
|
|
||||||
mapfile[x + 2] = 'p';
|
|
||||||
mapfile[x + 3] = 'm';
|
|
||||||
mapfile[x + 4] = 0;
|
|
||||||
|
|
||||||
fd = fopen(mapfile,"wb");
|
fd = fopen(mapfile,"wb");
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -329,7 +319,6 @@ void DoSigStr(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
east = (minwest < 180.0 ? -minwest : 360.0 - min_west);
|
east = (minwest < 180.0 ? -minwest : 360.0 - min_west);
|
||||||
west = (double)(max_west < 180 ? -max_west : 360 - max_west);
|
west = (double)(max_west < 180 ? -max_west : 360 - max_west);
|
||||||
|
|
||||||
fprintf(fd, "P6\n%u %u\n255\n", width, (kml ? height : height + 30));
|
|
||||||
if (debug) {
|
if (debug) {
|
||||||
fprintf(stderr, "\nWriting \"%s\" (%ux%u pixmap image)...\n",
|
fprintf(stderr, "\nWriting \"%s\" (%ux%u pixmap image)...\n",
|
||||||
filename != NULL ? mapfile : "to stdout", width, (kml ? height : height + 30));
|
filename != NULL ? mapfile : "to stdout", width, (kml ? height : height + 30));
|
||||||
@@ -403,11 +392,11 @@ void DoSigStr(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
|
|
||||||
if (red >= 180 && green <= 75
|
if (red >= 180 && green <= 75
|
||||||
&& blue <= 75)
|
&& blue <= 75)
|
||||||
fprintf(fd, "%c%c%c", 255 ^ red,
|
ADD_PIXEL(&ctx, 255 ^ red,
|
||||||
255 ^ green,
|
255 ^ green,
|
||||||
255 ^ blue);
|
255 ^ blue);
|
||||||
else
|
else
|
||||||
fprintf(fd, "%c%c%c", 255, 0,
|
ADD_PIXEL(&ctx, 255, 0,
|
||||||
0);
|
0);
|
||||||
|
|
||||||
cityorcounty = 1;
|
cityorcounty = 1;
|
||||||
@@ -416,7 +405,7 @@ void DoSigStr(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
else if (mask & 4) {
|
else if (mask & 4) {
|
||||||
/* County Boundaries: Black */
|
/* County Boundaries: Black */
|
||||||
|
|
||||||
fprintf(fd, "%c%c%c", 0, 0, 0);
|
ADD_PIXEL(&ctx, 0, 0, 0);
|
||||||
|
|
||||||
cityorcounty = 1;
|
cityorcounty = 1;
|
||||||
}
|
}
|
||||||
@@ -425,15 +414,14 @@ void DoSigStr(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
if (contour_threshold != 0
|
if (contour_threshold != 0
|
||||||
&& signal < contour_threshold) {
|
&& signal < contour_threshold) {
|
||||||
if (ngs)
|
if (ngs)
|
||||||
fprintf(fd, "%c%c%c",
|
ADD_PIXEL(&ctx,
|
||||||
255, 255, 255);
|
255, 255, 255);
|
||||||
else {
|
else {
|
||||||
/* Display land or sea elevation */
|
/* Display land or sea elevation */
|
||||||
|
|
||||||
if (dem[indx].
|
if (dem[indx].
|
||||||
data[x0][y0] == 0)
|
data[x0][y0] == 0)
|
||||||
fprintf(fd,
|
ADD_PIXEL(&ctx,
|
||||||
"%c%c%c",
|
|
||||||
0, 0,
|
0, 0,
|
||||||
170);
|
170);
|
||||||
else {
|
else {
|
||||||
@@ -441,8 +429,7 @@ void DoSigStr(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
(unsigned)
|
(unsigned)
|
||||||
(0.5 +
|
(0.5 +
|
||||||
pow((double)(dem[indx].data[x0][y0] - min_elevation), one_over_gamma) * conversion);
|
pow((double)(dem[indx].data[x0][y0] - min_elevation), one_over_gamma) * conversion);
|
||||||
fprintf(fd,
|
ADD_PIXEL(&ctx,
|
||||||
"%c%c%c",
|
|
||||||
terrain,
|
terrain,
|
||||||
terrain,
|
terrain,
|
||||||
terrain);
|
terrain);
|
||||||
@@ -455,15 +442,14 @@ void DoSigStr(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
|
|
||||||
if (red != 0 || green != 0
|
if (red != 0 || green != 0
|
||||||
|| blue != 0)
|
|| blue != 0)
|
||||||
fprintf(fd, "%c%c%c",
|
ADD_PIXEL(&ctx,
|
||||||
red, green,
|
red, green,
|
||||||
blue);
|
blue);
|
||||||
|
|
||||||
else { /* terrain / sea-level */
|
else { /* terrain / sea-level */
|
||||||
|
|
||||||
if (ngs)
|
if (ngs)
|
||||||
fprintf(fd,
|
ADD_PIXEL(&ctx,
|
||||||
"%c%c%c",
|
|
||||||
255,
|
255,
|
||||||
255,
|
255,
|
||||||
255);
|
255);
|
||||||
@@ -471,9 +457,7 @@ void DoSigStr(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
if (dem[indx].
|
if (dem[indx].
|
||||||
data[x0][y0]
|
data[x0][y0]
|
||||||
== 0)
|
== 0)
|
||||||
fprintf
|
ADD_PIXEL(&ctx,
|
||||||
(fd,
|
|
||||||
"%c%c%c",
|
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
170);
|
170);
|
||||||
@@ -486,9 +470,7 @@ void DoSigStr(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
+
|
+
|
||||||
pow
|
pow
|
||||||
((double)(dem[indx].data[x0][y0] - min_elevation), one_over_gamma) * conversion);
|
((double)(dem[indx].data[x0][y0] - min_elevation), one_over_gamma) * conversion);
|
||||||
fprintf
|
ADD_PIXEL(&ctx,
|
||||||
(fd,
|
|
||||||
"%c%c%c",
|
|
||||||
terrain,
|
terrain,
|
||||||
terrain,
|
terrain,
|
||||||
terrain);
|
terrain);
|
||||||
@@ -503,11 +485,18 @@ void DoSigStr(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
/* We should never get here, but if */
|
/* We should never get here, but if */
|
||||||
/* we do, display the region as black */
|
/* we do, display the region as black */
|
||||||
|
|
||||||
fprintf(fd, "%c%c%c", 0, 0, 0);
|
ADD_PIXEL(&ctx, 0, 0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if((success = image_write(&ctx,fd)) != 0){
|
||||||
|
fprintf(stderr,"Error writing image\n");
|
||||||
|
exit(success);
|
||||||
|
}
|
||||||
|
|
||||||
|
image_free(&ctx);
|
||||||
|
|
||||||
if( filename != NULL ) {
|
if( filename != NULL ) {
|
||||||
fclose(fd);
|
fclose(fd);
|
||||||
fd = NULL;
|
fd = NULL;
|
||||||
@@ -773,6 +762,13 @@ void DoLOS(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
int indx, x, y, x0 = 0, y0 = 0;
|
int indx, x, y, x0 = 0, y0 = 0;
|
||||||
double conversion, one_over_gamma, lat, lon, minwest;
|
double conversion, one_over_gamma, lat, lon, minwest;
|
||||||
FILE *fd;
|
FILE *fd;
|
||||||
|
IMAGE_CTX ctx;
|
||||||
|
int success;
|
||||||
|
|
||||||
|
if((success = image_init(&ctx, width, (kml ? height : height + 30), IMAGE_RGB, IMAGE_DEFAULT)) != 0){
|
||||||
|
fprintf(stderr,"Error initializing image\n");
|
||||||
|
exit(success);
|
||||||
|
}
|
||||||
|
|
||||||
one_over_gamma = 1.0 / GAMMA;
|
one_over_gamma = 1.0 / GAMMA;
|
||||||
conversion =
|
conversion =
|
||||||
@@ -786,24 +782,11 @@ void DoLOS(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
filename[strlen(filename) - 4] = 0; /* Remove .qth */
|
filename[strlen(filename) - 4] = 0; /* Remove .qth */
|
||||||
}
|
}
|
||||||
|
|
||||||
y = strlen(filename);
|
if(image_get_filename(&ctx,mapfile,sizeof(mapfile),filename) != 0){
|
||||||
|
fprintf(stderr,"Error creating file name\n");
|
||||||
if (y > 4) {
|
exit(1);
|
||||||
if (filename[y - 1] == 'm' && filename[y - 2] == 'p'
|
|
||||||
&& filename[y - 3] == 'p' && filename[y - 4] == '.')
|
|
||||||
y -= 4;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (x = 0; x < y; x++) {
|
|
||||||
mapfile[x] = filename[x];
|
|
||||||
}
|
|
||||||
|
|
||||||
mapfile[x] = '.';
|
|
||||||
mapfile[x + 1] = 'p';
|
|
||||||
mapfile[x + 2] = 'p';
|
|
||||||
mapfile[x + 3] = 'm';
|
|
||||||
mapfile[x + 4] = 0;
|
|
||||||
|
|
||||||
fd = fopen(mapfile,"wb");
|
fd = fopen(mapfile,"wb");
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -825,7 +808,6 @@ void DoLOS(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
east = (minwest < 180.0 ? -minwest : 360.0 - min_west);
|
east = (minwest < 180.0 ? -minwest : 360.0 - min_west);
|
||||||
west = (double)(max_west < 180 ? -max_west : 360 - max_west);
|
west = (double)(max_west < 180 ? -max_west : 360 - max_west);
|
||||||
|
|
||||||
fprintf(fd, "P6\n%u %u\n255\n", width, (kml ? height : height + 30));
|
|
||||||
if (debug) {
|
if (debug) {
|
||||||
fprintf(stderr, "\nWriting \"%s\" (%ux%u pixmap image)...\n",
|
fprintf(stderr, "\nWriting \"%s\" (%ux%u pixmap image)...\n",
|
||||||
filename != NULL ? mapfile : "to stdout", width, (kml ? height : height + 30));
|
filename != NULL ? mapfile : "to stdout", width, (kml ? height : height + 30));
|
||||||
@@ -862,114 +844,113 @@ void DoLOS(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
|
|
||||||
if (mask & 2)
|
if (mask & 2)
|
||||||
/* Text Labels: Red */
|
/* Text Labels: Red */
|
||||||
fprintf(fd, "%c%c%c", 255, 0, 0);
|
ADD_PIXEL(&ctx, 255, 0, 0);
|
||||||
|
|
||||||
else if (mask & 4)
|
else if (mask & 4)
|
||||||
/* County Boundaries: Light Cyan */
|
/* County Boundaries: Light Cyan */
|
||||||
fprintf(fd, "%c%c%c", 128, 128, 255);
|
ADD_PIXEL(&ctx, 128, 128, 255);
|
||||||
|
|
||||||
else
|
else
|
||||||
switch (mask & 57) {
|
switch (mask & 57) {
|
||||||
case 1:
|
case 1:
|
||||||
/* TX1: Green */
|
/* TX1: Green */
|
||||||
fprintf(fd, "%c%c%c", 0, 255,
|
ADD_PIXEL(&ctx, 0, 255,
|
||||||
0);
|
0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 8:
|
case 8:
|
||||||
/* TX2: Cyan */
|
/* TX2: Cyan */
|
||||||
fprintf(fd, "%c%c%c", 0, 255,
|
ADD_PIXEL(&ctx, 0, 255,
|
||||||
255);
|
255);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 9:
|
case 9:
|
||||||
/* TX1 + TX2: Yellow */
|
/* TX1 + TX2: Yellow */
|
||||||
fprintf(fd, "%c%c%c", 255, 255,
|
ADD_PIXEL(&ctx, 255, 255,
|
||||||
0);
|
0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 16:
|
case 16:
|
||||||
/* TX3: Medium Violet */
|
/* TX3: Medium Violet */
|
||||||
fprintf(fd, "%c%c%c", 147, 112,
|
ADD_PIXEL(&ctx, 147, 112,
|
||||||
219);
|
219);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 17:
|
case 17:
|
||||||
/* TX1 + TX3: Pink */
|
/* TX1 + TX3: Pink */
|
||||||
fprintf(fd, "%c%c%c", 255, 192,
|
ADD_PIXEL(&ctx, 255, 192,
|
||||||
203);
|
203);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 24:
|
case 24:
|
||||||
/* TX2 + TX3: Orange */
|
/* TX2 + TX3: Orange */
|
||||||
fprintf(fd, "%c%c%c", 255, 165,
|
ADD_PIXEL(&ctx, 255, 165,
|
||||||
0);
|
0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 25:
|
case 25:
|
||||||
/* TX1 + TX2 + TX3: Dark Green */
|
/* TX1 + TX2 + TX3: Dark Green */
|
||||||
fprintf(fd, "%c%c%c", 0, 100,
|
ADD_PIXEL(&ctx, 0, 100,
|
||||||
0);
|
0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 32:
|
case 32:
|
||||||
/* TX4: Sienna 1 */
|
/* TX4: Sienna 1 */
|
||||||
fprintf(fd, "%c%c%c", 255, 130,
|
ADD_PIXEL(&ctx, 255, 130,
|
||||||
71);
|
71);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 33:
|
case 33:
|
||||||
/* TX1 + TX4: Green Yellow */
|
/* TX1 + TX4: Green Yellow */
|
||||||
fprintf(fd, "%c%c%c", 173, 255,
|
ADD_PIXEL(&ctx, 173, 255,
|
||||||
47);
|
47);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 40:
|
case 40:
|
||||||
/* TX2 + TX4: Dark Sea Green 1 */
|
/* TX2 + TX4: Dark Sea Green 1 */
|
||||||
fprintf(fd, "%c%c%c", 193, 255,
|
ADD_PIXEL(&ctx, 193, 255,
|
||||||
193);
|
193);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 41:
|
case 41:
|
||||||
/* TX1 + TX2 + TX4: Blanched Almond */
|
/* TX1 + TX2 + TX4: Blanched Almond */
|
||||||
fprintf(fd, "%c%c%c", 255, 235,
|
ADD_PIXEL(&ctx, 255, 235,
|
||||||
205);
|
205);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 48:
|
case 48:
|
||||||
/* TX3 + TX4: Dark Turquoise */
|
/* TX3 + TX4: Dark Turquoise */
|
||||||
fprintf(fd, "%c%c%c", 0, 206,
|
ADD_PIXEL(&ctx, 0, 206,
|
||||||
209);
|
209);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 49:
|
case 49:
|
||||||
/* TX1 + TX3 + TX4: Medium Spring Green */
|
/* TX1 + TX3 + TX4: Medium Spring Green */
|
||||||
fprintf(fd, "%c%c%c", 0, 250,
|
ADD_PIXEL(&ctx, 0, 250,
|
||||||
154);
|
154);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 56:
|
case 56:
|
||||||
/* TX2 + TX3 + TX4: Tan */
|
/* TX2 + TX3 + TX4: Tan */
|
||||||
fprintf(fd, "%c%c%c", 210, 180,
|
ADD_PIXEL(&ctx, 210, 180,
|
||||||
140);
|
140);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 57:
|
case 57:
|
||||||
/* TX1 + TX2 + TX3 + TX4: Gold2 */
|
/* TX1 + TX2 + TX3 + TX4: Gold2 */
|
||||||
fprintf(fd, "%c%c%c", 238, 201,
|
ADD_PIXEL(&ctx, 238, 201,
|
||||||
0);
|
0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if (ngs) /* No terrain */
|
if (ngs) /* No terrain */
|
||||||
fprintf(fd, "%c%c%c",
|
ADD_PIXEL(&ctx,
|
||||||
255, 255, 255);
|
255, 255, 255);
|
||||||
else {
|
else {
|
||||||
/* Sea-level: Medium Blue */
|
/* Sea-level: Medium Blue */
|
||||||
if (dem[indx].
|
if (dem[indx].
|
||||||
data[x0][y0] == 0)
|
data[x0][y0] == 0)
|
||||||
fprintf(fd,
|
ADD_PIXEL(&ctx,
|
||||||
"%c%c%c",
|
|
||||||
0, 0,
|
0, 0,
|
||||||
170);
|
170);
|
||||||
else {
|
else {
|
||||||
@@ -978,8 +959,7 @@ void DoLOS(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
(unsigned)
|
(unsigned)
|
||||||
(0.5 +
|
(0.5 +
|
||||||
pow((double)(dem[indx].data[x0][y0] - min_elevation), one_over_gamma) * conversion);
|
pow((double)(dem[indx].data[x0][y0] - min_elevation), one_over_gamma) * conversion);
|
||||||
fprintf(fd,
|
ADD_PIXEL(&ctx,
|
||||||
"%c%c%c",
|
|
||||||
terrain,
|
terrain,
|
||||||
terrain,
|
terrain,
|
||||||
terrain);
|
terrain);
|
||||||
@@ -992,11 +972,18 @@ void DoLOS(char *filename, unsigned char geo, unsigned char kml,
|
|||||||
/* We should never get here, but if */
|
/* We should never get here, but if */
|
||||||
/* we do, display the region as black */
|
/* we do, display the region as black */
|
||||||
|
|
||||||
fprintf(fd, "%c%c%c", 0, 0, 0);
|
ADD_PIXEL(&ctx, 0, 0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if((success = image_write(&ctx,fd)) != 0){
|
||||||
|
fprintf(stderr,"Error writing image\n");
|
||||||
|
exit(success);
|
||||||
|
}
|
||||||
|
|
||||||
|
image_free(&ctx);
|
||||||
|
|
||||||
if( filename != NULL) {
|
if( filename != NULL) {
|
||||||
fclose(fd);
|
fclose(fd);
|
||||||
fd = NULL;
|
fd = NULL;
|
||||||
|
Reference in New Issue
Block a user