new lava color palette
This commit is contained in:
parent
69081b84c6
commit
472aa85cb7
|
@ -132,20 +132,20 @@ float AircraftLabel::calculateDensity(Aircraft *check_p, int labelLevel) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void AircraftLabel::calculateForces(Aircraft *check_p) {
|
void AircraftLabel::calculateForces(Aircraft *check_p) {
|
||||||
if(w == 0 || h == 0) {
|
//if(w == 0 || h == 0) {
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
|
|
||||||
Aircraft *head = check_p;
|
Aircraft *head = check_p;
|
||||||
|
|
||||||
int p_left = x;
|
float p_left = static_cast<float>(x);
|
||||||
int p_right = x + w;
|
float p_right = static_cast<float>(x + w);
|
||||||
int p_top = y;
|
float p_top = static_cast<float>(y);
|
||||||
int p_bottom = y + h;
|
float p_bottom = static_cast<float>(y + h);
|
||||||
|
|
||||||
|
|
||||||
float boxmid_x = static_cast<float>(p_left + p_right) / 2.0f;
|
float boxmid_x = (p_left + p_right) / 2.0f;
|
||||||
float boxmid_y = static_cast<float>(p_top + p_bottom) / 2.0f;
|
float boxmid_y = (p_top + p_bottom) / 2.0f;
|
||||||
|
|
||||||
float offset_x = boxmid_x - p->x;
|
float offset_x = boxmid_x - p->x;
|
||||||
float offset_y = boxmid_y - p->y;
|
float offset_y = boxmid_y - p->y;
|
||||||
|
@ -162,19 +162,19 @@ void AircraftLabel::calculateForces(Aircraft *check_p) {
|
||||||
// screen edge
|
// screen edge
|
||||||
|
|
||||||
if(p_left < edge_margin) {
|
if(p_left < edge_margin) {
|
||||||
ddx += boundary_force * static_cast<float>(edge_margin - p_left);
|
ddx += boundary_force * (edge_margin - p_left);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(p_right > screen_width - edge_margin) {
|
if(p_right > screen_width - edge_margin) {
|
||||||
ddx += boundary_force * static_cast<float>(screen_width - edge_margin - p_right);
|
ddx += boundary_force * (screen_width - edge_margin - p_right);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(p_top < edge_margin) {
|
if(p_top < edge_margin) {
|
||||||
ddy += boundary_force * static_cast<float>(edge_margin - p_top);
|
ddy += boundary_force * (edge_margin - p_top);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(p_bottom > screen_height - edge_margin) {
|
if(p_bottom > screen_height - edge_margin) {
|
||||||
ddy += boundary_force * static_cast<float>(screen_height - edge_margin - p_bottom);
|
ddy += boundary_force * (screen_height - edge_margin - p_bottom);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -194,10 +194,10 @@ void AircraftLabel::calculateForces(Aircraft *check_p) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
int check_left = check_p->label->x;
|
float check_left = static_cast<float>(check_p->label->x);
|
||||||
int check_right = check_p->label->x + check_p->label->w;
|
float check_right = static_cast<float>(check_p->label->x + check_p->label->w);
|
||||||
int check_top = check_p->label->y;
|
float check_top = static_cast<float>(check_p->label->y);
|
||||||
int check_bottom = check_p->label->y + check_p->label->h;
|
float check_bottom = static_cast<float>(check_p->label->y + check_p->label->h);
|
||||||
|
|
||||||
float icon_x = static_cast<float>(check_p->x);
|
float icon_x = static_cast<float>(check_p->x);
|
||||||
float icon_y = static_cast<float>(check_p->y);
|
float icon_y = static_cast<float>(check_p->y);
|
||||||
|
@ -205,6 +205,7 @@ void AircraftLabel::calculateForces(Aircraft *check_p) {
|
||||||
float checkboxmid_x = static_cast<float>(check_left + check_right) / 2.0f;
|
float checkboxmid_x = static_cast<float>(check_left + check_right) / 2.0f;
|
||||||
float checkboxmid_y = static_cast<float>(check_top + check_bottom) / 2.0f;
|
float checkboxmid_y = static_cast<float>(check_top + check_bottom) / 2.0f;
|
||||||
|
|
||||||
|
/*
|
||||||
float offset_x = boxmid_x - checkboxmid_x;
|
float offset_x = boxmid_x - checkboxmid_x;
|
||||||
float offset_y = boxmid_y - checkboxmid_y;
|
float offset_y = boxmid_y - checkboxmid_y;
|
||||||
|
|
||||||
|
@ -214,15 +215,82 @@ void AircraftLabel::calculateForces(Aircraft *check_p) {
|
||||||
float x_mag = std::max(0.0f,(target_length_x - fabs(offset_x)));
|
float x_mag = std::max(0.0f,(target_length_x - fabs(offset_x)));
|
||||||
float y_mag = std::max(0.0f,(target_length_y - fabs(offset_y)));
|
float y_mag = std::max(0.0f,(target_length_y - fabs(offset_y)));
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool overlap = true;
|
||||||
|
|
||||||
|
if (p_left >= check_right + 10 || check_left >= p_right + 10)
|
||||||
|
overlap = false;
|
||||||
|
|
||||||
|
if (p_top >= check_bottom + 10|| check_top >= p_bottom + 10)
|
||||||
|
overlap = false;
|
||||||
|
|
||||||
|
if(overlap) {
|
||||||
|
|
||||||
|
float td = fabs(p_top - check_bottom);
|
||||||
|
float bd = fabs(p_bottom - check_top);
|
||||||
|
float ld = fabs(p_left - check_right);
|
||||||
|
float rd = fabs(p_right - check_left);
|
||||||
|
|
||||||
|
float x_mag, y_mag;
|
||||||
|
|
||||||
|
if(boxmid_y > checkboxmid_y) {
|
||||||
|
y_mag = check_bottom - p_top + 10;
|
||||||
|
} else {
|
||||||
|
y_mag = check_top - p_bottom - 10;
|
||||||
|
td = bd;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(boxmid_x > checkboxmid_x) {
|
||||||
|
x_mag = check_right - p_left + 10;
|
||||||
|
} else {
|
||||||
|
x_mag = check_left - p_right - 10;
|
||||||
|
ld = rd;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(td < ld) {
|
||||||
|
x_mag = 0;
|
||||||
|
} else {
|
||||||
|
y_mag = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ddx += label_force * x_mag;
|
||||||
|
ddy += label_force * y_mag;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// stay at least label_dist away from other icons
|
// stay at least label_dist away from other icons
|
||||||
|
|
||||||
|
if(p_right >= check_p->x && check_p->x >= p_left && p_bottom >= check_p->y && check_p->y >= p_top) {
|
||||||
|
float x_mag, y_mag;
|
||||||
|
|
||||||
|
if(boxmid_x - check_p->x > 0) {
|
||||||
|
x_mag = check_p->x - p_left + 10;
|
||||||
|
} else {
|
||||||
|
x_mag = check_p->x - p_right - 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(boxmid_y - check_p->y > 0) {
|
||||||
|
y_mag = check_p->y - p_top + 10;
|
||||||
|
} else {
|
||||||
|
y_mag = check_p->y - p_bottom - 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
ddx += icon_force * x_mag;
|
||||||
|
ddy += icon_force * y_mag;
|
||||||
|
|
||||||
|
}
|
||||||
|
/*
|
||||||
if(x_mag > 0 && y_mag > 0) {
|
if(x_mag > 0 && y_mag > 0) {
|
||||||
ddx += sign(offset_x) * label_force * x_mag;
|
ddx += sign(offset_x) * label_force * x_mag;
|
||||||
ddy += sign(offset_y) * label_force * y_mag;
|
ddy += sign(offset_y) * label_force * y_mag;
|
||||||
}
|
}
|
||||||
|
|
||||||
// stay at least icon_dist away from other icons
|
*/
|
||||||
|
|
||||||
|
// stay at least icon_dist away from other icons
|
||||||
|
/*
|
||||||
offset_x = boxmid_x - check_p->x;
|
offset_x = boxmid_x - check_p->x;
|
||||||
offset_y = boxmid_y - check_p->y;
|
offset_y = boxmid_y - check_p->y;
|
||||||
|
|
||||||
|
@ -237,6 +305,7 @@ void AircraftLabel::calculateForces(Aircraft *check_p) {
|
||||||
ddy += sign(offset_y) * icon_force * y_mag;
|
ddy += sign(offset_y) * icon_force * y_mag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
all_x += sign(boxmid_x - checkboxmid_x);
|
all_x += sign(boxmid_x - checkboxmid_x);
|
||||||
all_y += sign(boxmid_y - checkboxmid_y);
|
all_y += sign(boxmid_y - checkboxmid_y);
|
||||||
|
|
||||||
|
@ -250,33 +319,62 @@ void AircraftLabel::calculateForces(Aircraft *check_p) {
|
||||||
ddy += density_force * all_y / count;
|
ddy += density_force * all_y / count;
|
||||||
|
|
||||||
// char buff[100];
|
// char buff[100];
|
||||||
// snprintf(buff, sizeof(buff), "%2.2f", labelLevel);
|
// snprintf(buff, sizeof(buff), "l:%2.2f d:%2.2f", labelLevel, calculateDensity(head, labelLevel));
|
||||||
// debugLabel.setText(buff);
|
// debugLabel.setText(buff);
|
||||||
|
|
||||||
float density_mult = 0.5f;
|
float density_mult = 0.15f;
|
||||||
float level_rate = 0.25f;
|
float level_rate = 0.25f;
|
||||||
|
|
||||||
if(elapsed(lastLevelChange) > 1000.0) {
|
float randtime = 5000.0f + 5000.0f * static_cast <float> (rand()) / static_cast <float> (RAND_MAX);
|
||||||
if(labelLevel < 0.8f * density_mult * calculateDensity(head, labelLevel + 1)) {
|
if(elapsed(lastLevelChange) > randtime) {
|
||||||
|
if(labelLevel < -1.2f + density_mult * calculateDensity(head, labelLevel - 1)) {
|
||||||
if(labelLevel <= 2) {
|
if(labelLevel <= 2) {
|
||||||
|
if(ceil(labelLevel) - labelLevel <= level_rate) {
|
||||||
|
labelLevel += 0.5f;
|
||||||
|
}
|
||||||
|
|
||||||
labelLevel += level_rate;
|
labelLevel += level_rate;
|
||||||
lastLevelChange = now();
|
lastLevelChange = now();
|
||||||
}
|
}
|
||||||
} else if (labelLevel > 1.2f * density_mult * calculateDensity(head, labelLevel - 1)) {
|
} else if (labelLevel > 1.2f + density_mult * calculateDensity(head, labelLevel + 1)) {
|
||||||
if(labelLevel >= 0) {
|
if(labelLevel >= 0) {
|
||||||
|
if(labelLevel - floor(labelLevel) <= level_rate) {
|
||||||
|
labelLevel -= 0.5f;
|
||||||
|
}
|
||||||
|
|
||||||
labelLevel -= level_rate;
|
labelLevel -= level_rate;
|
||||||
lastLevelChange = now();
|
lastLevelChange = now();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//add drag force
|
||||||
|
ddx -= drag_force * dx * dx * sign(dx);
|
||||||
|
ddy -= drag_force * dy * dy * sign(dy);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AircraftLabel::applyForces() {
|
void AircraftLabel::applyForces() {
|
||||||
dx += ddx;
|
float new_dx = dx + ddx;
|
||||||
dy += ddy;
|
float new_dy = dy + ddy;
|
||||||
|
|
||||||
dx *= damping_force;
|
new_dx *= damping_force;
|
||||||
dy *= damping_force;
|
new_dy *= damping_force;
|
||||||
|
|
||||||
|
/*
|
||||||
|
if(sign(new_dx) != sign(dx) && dx != 0) {
|
||||||
|
new_dx = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(sign(new_dy) != sign(dy) && dy != 0) {
|
||||||
|
new_dy = 0;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
//if(dx > 0 || dy > 0 || new_dx > 0.01 || new_dy > 0.01) {
|
||||||
|
dx = new_dx;
|
||||||
|
dy = new_dy;
|
||||||
|
//}
|
||||||
|
|
||||||
if(fabs(dx) > velocity_limit) {
|
if(fabs(dx) > velocity_limit) {
|
||||||
dx = sign(dx) * velocity_limit;
|
dx = sign(dx) * velocity_limit;
|
||||||
|
@ -294,8 +392,32 @@ void AircraftLabel::applyForces() {
|
||||||
dy = 0;
|
dy = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
x += dx;
|
float new_x = 0;
|
||||||
y += dy;
|
float new_y = 0;
|
||||||
|
|
||||||
|
for(int i = 0; i < buffer_length; i++) {
|
||||||
|
new_x += x_buffer[i] / static_cast<float>(buffer_length);
|
||||||
|
new_y += y_buffer[i] / static_cast<float>(buffer_length);
|
||||||
|
}
|
||||||
|
|
||||||
|
x_buffer[buffer_idx] = new_x + dx;
|
||||||
|
y_buffer[buffer_idx] = new_y + dy;
|
||||||
|
|
||||||
|
buffer_idx = (buffer_idx + 1) % buffer_length;
|
||||||
|
|
||||||
|
//new_x += dx;
|
||||||
|
//new_y += dy;
|
||||||
|
|
||||||
|
//new_x = x + dx;
|
||||||
|
//new_y = y + dy;
|
||||||
|
|
||||||
|
//if(abs(new_x - x) > 1 || abs(new_y - y) > 1) {
|
||||||
|
x = new_x;
|
||||||
|
y = new_y;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//x += dx;
|
||||||
|
//y += dy;
|
||||||
|
|
||||||
if(isnan(x)) {
|
if(isnan(x)) {
|
||||||
x = 0;
|
x = 0;
|
||||||
|
@ -347,6 +469,15 @@ void AircraftLabel::applyForces() {
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
void AircraftLabel::move(float dx, float dy) {
|
||||||
|
for(int i = 0; i < buffer_length; i++ ){
|
||||||
|
x_buffer[i] += dx;
|
||||||
|
y_buffer[i] += dy;
|
||||||
|
}
|
||||||
|
|
||||||
|
x+=dx;
|
||||||
|
y+=dy;
|
||||||
|
}
|
||||||
|
|
||||||
void AircraftLabel::draw(SDL_Renderer *renderer, bool selected) {
|
void AircraftLabel::draw(SDL_Renderer *renderer, bool selected) {
|
||||||
if(x == 0 || y == 0) {
|
if(x == 0 || y == 0) {
|
||||||
|
@ -374,9 +505,9 @@ void AircraftLabel::draw(SDL_Renderer *renderer, bool selected) {
|
||||||
target_opacity = 0.0f;
|
target_opacity = 0.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
opacity += 0.25f * (target_opacity - opacity);
|
opacity += 0.15f * (target_opacity - opacity);
|
||||||
|
|
||||||
if(opacity < 0.05f) {
|
if(opacity < 0.005f) {
|
||||||
opacity = 0;
|
opacity = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -516,14 +647,20 @@ AircraftLabel::AircraftLabel(Aircraft *p, bool metric, int screen_width, int scr
|
||||||
target_w = 0;
|
target_w = 0;
|
||||||
target_h = 0;
|
target_h = 0;
|
||||||
|
|
||||||
opacity = 0;
|
opacity = 0.0f;
|
||||||
target_opacity = 0;
|
target_opacity = 0.0f;
|
||||||
|
|
||||||
dx = 0;
|
dx = 0;
|
||||||
dy = 0;
|
dy = 0;
|
||||||
ddx = 0;
|
ddx = 0;
|
||||||
ddy = 0;
|
ddy = 0;
|
||||||
|
|
||||||
|
for(int i = 0; i < buffer_length; i++) {
|
||||||
|
x_buffer[i] = x;
|
||||||
|
y_buffer[i] = y;
|
||||||
|
}
|
||||||
|
buffer_idx = 0;
|
||||||
|
|
||||||
this->screen_width = screen_width;
|
this->screen_width = screen_width;
|
||||||
this->screen_height = screen_height;
|
this->screen_height = screen_height;
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@ class AircraftLabel {
|
||||||
void clearAcceleration();
|
void clearAcceleration();
|
||||||
void calculateForces(Aircraft *check_p);
|
void calculateForces(Aircraft *check_p);
|
||||||
void applyForces();
|
void applyForces();
|
||||||
|
void move(float dx, float dy);
|
||||||
|
|
||||||
void draw(SDL_Renderer *renderer, bool selected);
|
void draw(SDL_Renderer *renderer, bool selected);
|
||||||
|
|
||||||
|
@ -45,6 +46,12 @@ class AircraftLabel {
|
||||||
|
|
||||||
float dx;
|
float dx;
|
||||||
float dy;
|
float dy;
|
||||||
|
|
||||||
|
float x_buffer[15];
|
||||||
|
float y_buffer[15];
|
||||||
|
int buffer_idx;
|
||||||
|
int buffer_length = 15;
|
||||||
|
|
||||||
float ddx;
|
float ddx;
|
||||||
float ddy;
|
float ddy;
|
||||||
|
|
||||||
|
@ -60,17 +67,19 @@ class AircraftLabel {
|
||||||
|
|
||||||
///////////
|
///////////
|
||||||
|
|
||||||
float label_force = 0.001f;
|
float label_force = 0.01f;
|
||||||
float label_dist = 2.0f;
|
float label_dist = 2.0f;
|
||||||
float density_force = 0.05f;
|
float density_force = 0.01f;
|
||||||
float attachment_force = 0.0015f;
|
float attachment_force = 0.01f;
|
||||||
float attachment_dist = 10.0f;
|
float attachment_dist = 10.0f;
|
||||||
float icon_force = 0.001f;
|
float icon_force = 0.01f;
|
||||||
float icon_dist = 15.0f;
|
float icon_dist = 15.0f;
|
||||||
float boundary_force = 0.01f;
|
float boundary_force = 0.01f;
|
||||||
float damping_force = 0.85f;
|
float damping_force = 0.65f;
|
||||||
float velocity_limit = 2.0f;
|
float velocity_limit = 1.0f;
|
||||||
float edge_margin = 15.0f;
|
float edge_margin = 15.0f;
|
||||||
|
float drag_force = 0.00f;
|
||||||
|
|
||||||
|
|
||||||
Style style;
|
Style style;
|
||||||
};
|
};
|
||||||
|
|
|
@ -59,7 +59,7 @@ void Label::setColor(SDL_Color color) {
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
Label::Label() {
|
Label::Label() {
|
||||||
this->color = {255,255,255,255};
|
this->color = {0,0,0,0};
|
||||||
surface = NULL;
|
surface = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
10
Style.h
10
Style.h
|
@ -68,20 +68,20 @@ typedef struct Style {
|
||||||
blue = {0,0,255,255};
|
blue = {0,0,255,255};
|
||||||
|
|
||||||
|
|
||||||
backgroundColor = {200,200,200,255};
|
backgroundColor = {0,0,0,255};
|
||||||
|
|
||||||
selectedColor = pink;
|
selectedColor = pink;
|
||||||
planeColor = black;
|
planeColor = {0,255,174};
|
||||||
planeGoneColor = grey;
|
planeGoneColor = grey;
|
||||||
trailColor = grey;
|
trailColor = {0,255,174};
|
||||||
|
|
||||||
geoColor = grey_dark;
|
geoColor = grey_dark;
|
||||||
airportColor = grey;
|
airportColor = grey;
|
||||||
|
|
||||||
labelColor = black;
|
labelColor = white;
|
||||||
labelLineColor = grey_dark;
|
labelLineColor = grey_dark;
|
||||||
subLabelColor = grey;
|
subLabelColor = grey;
|
||||||
labelBackground = grey_light;
|
labelBackground = black;
|
||||||
scaleBarColor = grey_light;
|
scaleBarColor = grey_light;
|
||||||
buttonColor = grey_light;
|
buttonColor = grey_light;
|
||||||
buttonBackground = black;
|
buttonBackground = black;
|
||||||
|
|
28
View.cpp
28
View.cpp
|
@ -450,12 +450,6 @@ void View::drawTrails(int left, int top, int right, int bottom) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_Color color = lerpColor(style.trailColor, style.planeGoneColor, static_cast<float>(elapsed_s(p->msSeen)) / DISPLAY_ACTIVE);
|
|
||||||
|
|
||||||
if(p == selectedAircraft) {
|
|
||||||
color = style.selectedColor;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::vector<float>::iterator lon_idx = p->lonHistory.begin();
|
std::vector<float>::iterator lon_idx = p->lonHistory.begin();
|
||||||
std::vector<float>::iterator lat_idx = p->latHistory.begin();
|
std::vector<float>::iterator lat_idx = p->latHistory.begin();
|
||||||
std::vector<float>::iterator heading_idx = p->headingHistory.begin();
|
std::vector<float>::iterator heading_idx = p->headingHistory.begin();
|
||||||
|
@ -474,6 +468,9 @@ void View::drawTrails(int left, int top, int right, int bottom) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SDL_Color color = lerpColor({255,0,0,255}, {255,200,0,255}, age / static_cast<float>(p->lonHistory.size()));
|
||||||
|
|
||||||
uint8_t colorVal = (uint8_t)floor(127.0 * (age / static_cast<float>(p->lonHistory.size())));
|
uint8_t colorVal = (uint8_t)floor(127.0 * (age / static_cast<float>(p->lonHistory.size())));
|
||||||
|
|
||||||
//thickLineRGBA(renderer, prevX, prevY, currentX, currentY, 2 * screen_uiscale, 255, 255, 255, colorVal);
|
//thickLineRGBA(renderer, prevX, prevY, currentX, currentY, 2 * screen_uiscale, 255, 255, 255, colorVal);
|
||||||
|
@ -744,6 +741,19 @@ void View::drawPlaneText(Aircraft *p) {
|
||||||
p->label->draw(renderer, (p == selectedAircraft));
|
p->label->draw(renderer, (p == selectedAircraft));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void View::moveLabels(float dx, float dy) {
|
||||||
|
Aircraft *p = appData->aircraftList.head;
|
||||||
|
|
||||||
|
while(p) {
|
||||||
|
if(p->label) {
|
||||||
|
p->label->move(dx,dy);
|
||||||
|
}
|
||||||
|
|
||||||
|
p = p->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
float View::resolveLabelConflicts() {
|
float View::resolveLabelConflicts() {
|
||||||
float maxV = 0.0f;
|
float maxV = 0.0f;
|
||||||
|
|
||||||
|
@ -855,6 +865,8 @@ void View::animateCenterAbsolute(float x, float y) {
|
||||||
float dx = -1.0 * (0.75*(double)screen_width / (double)screen_height) * (x - screen_width/2) * maxDist / (0.95 * scale_factor * 0.5);
|
float dx = -1.0 * (0.75*(double)screen_width / (double)screen_height) * (x - screen_width/2) * maxDist / (0.95 * scale_factor * 0.5);
|
||||||
float dy = 1.0 * (y - screen_height/2) * maxDist / (0.95 * scale_factor * 0.5);
|
float dy = 1.0 * (y - screen_height/2) * maxDist / (0.95 * scale_factor * 0.5);
|
||||||
|
|
||||||
|
moveLabels(x,y);
|
||||||
|
|
||||||
float outLat = dy * (1.0/6371.0) * (180.0f / M_PI);
|
float outLat = dy * (1.0/6371.0) * (180.0f / M_PI);
|
||||||
|
|
||||||
float outLon = dx * (1.0/6371.0) * (180.0f / M_PI) / cos(((centerLat)/2.0f) * M_PI / 180.0f);
|
float outLon = dx * (1.0/6371.0) * (180.0f / M_PI) / cos(((centerLat)/2.0f) * M_PI / 180.0f);
|
||||||
|
@ -873,6 +885,8 @@ void View::moveCenterAbsolute(float x, float y) {
|
||||||
float dx = -1.0 * (0.75*(double)screen_width / (double)screen_height) * (x - screen_width/2) * maxDist / (0.95 * scale_factor * 0.5);
|
float dx = -1.0 * (0.75*(double)screen_width / (double)screen_height) * (x - screen_width/2) * maxDist / (0.95 * scale_factor * 0.5);
|
||||||
float dy = 1.0 * (y - screen_height/2) * maxDist / (0.95 * scale_factor * 0.5);
|
float dy = 1.0 * (y - screen_height/2) * maxDist / (0.95 * scale_factor * 0.5);
|
||||||
|
|
||||||
|
moveLabels(x,y);
|
||||||
|
|
||||||
float outLat = dy * (1.0/6371.0) * (180.0f / M_PI);
|
float outLat = dy * (1.0/6371.0) * (180.0f / M_PI);
|
||||||
|
|
||||||
float outLon = dx * (1.0/6371.0) * (180.0f / M_PI) / cos(((centerLat)/2.0f) * M_PI / 180.0f);
|
float outLon = dx * (1.0/6371.0) * (180.0f / M_PI) / cos(((centerLat)/2.0f) * M_PI / 180.0f);
|
||||||
|
@ -891,6 +905,8 @@ void View::moveCenterRelative(float dx, float dy) {
|
||||||
// need to make lonlat to screen conversion class - this is just the inverse of the stuff in draw.c, without offsets
|
// need to make lonlat to screen conversion class - this is just the inverse of the stuff in draw.c, without offsets
|
||||||
//
|
//
|
||||||
|
|
||||||
|
moveLabels(dx,dy);
|
||||||
|
|
||||||
float scale_factor = (screen_width > screen_height) ? screen_width : screen_height;
|
float scale_factor = (screen_width > screen_height) ? screen_width : screen_height;
|
||||||
|
|
||||||
dx = -1.0 * dx * maxDist / (0.95 * scale_factor * 0.5);
|
dx = -1.0 * dx * maxDist / (0.95 * scale_factor * 0.5);
|
||||||
|
|
1
View.h
1
View.h
|
@ -85,6 +85,7 @@ class View {
|
||||||
SDL_Rect drawStringBG(std::string text, int x, int y, TTF_Font *font, SDL_Color color, SDL_Color bgColor);
|
SDL_Rect drawStringBG(std::string text, int x, int y, TTF_Font *font, SDL_Color color, SDL_Color bgColor);
|
||||||
void drawStatusBox(int *left, int *top, std::string label, std::string message, SDL_Color color);
|
void drawStatusBox(int *left, int *top, std::string label, std::string message, SDL_Color color);
|
||||||
void drawStatus();
|
void drawStatus();
|
||||||
|
void moveLabels(float dx, float dy);
|
||||||
|
|
||||||
Aircraft *selectedAircraft;
|
Aircraft *selectedAircraft;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue