bottom -= center_y;
float vertices[] = {
- left*ca - top*sa + center_x, left*sa + top*ca + center_y,
- right*ca - top*sa + center_x, right*sa + top*ca + center_y,
- right*ca - bottom*sa + center_x, right*sa + bottom*ca + center_y,
- left*ca - bottom*sa + center_x, left*sa + bottom*ca + center_y
- };
+ left*ca - top*sa + center_x, left*sa + top*ca + center_y,
+ right*ca - top*sa + center_x, right*sa + top*ca + center_y,
+ right*ca - bottom*sa + center_x, right*sa + bottom*ca + center_y,
+ left*ca - bottom*sa + center_x, left*sa + bottom*ca + center_y
+ };
glVertexPointer(2, GL_FLOAT, 0, vertices);
float uvs[] = {
glDisable(GL_CULL_FACE);
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
- glEnable(GL_VERTEX_ARRAY);
- glEnable(GL_TEXTURE_COORD_ARRAY);
+ glEnableClientState(GL_VERTEX_ARRAY);
+ glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// Init the projection matrix, viewport and stuff
const Color& bottom = gradientrequest->bottom;
glDisable(GL_TEXTURE_2D);
- glDisable(GL_TEXTURE_COORD_ARRAY);
- glEnable(GL_COLOR_ARRAY);
+ glDisableClientState(GL_TEXTURE_COORD_ARRAY);
+ glEnableClientState(GL_COLOR_ARRAY);
float vertices[] = {
0, 0,
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
- glDisable(GL_COLOR_ARRAY);
- glEnable(GL_TEXTURE_COORD_ARRAY);
+ glDisableClientState(GL_COLOR_ARRAY);
+ glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnable(GL_TEXTURE_2D);
glColor4f(1, 1, 1, 1);
glDisable(GL_TEXTURE_2D);
glColor4f(fillrectrequest->color.red, fillrectrequest->color.green,
fillrectrequest->color.blue, fillrectrequest->color.alpha);
- glDisable(GL_TEXTURE_COORD_ARRAY);
+ glDisableClientState(GL_TEXTURE_COORD_ARRAY);
float vertices[] = {
x, y,
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
- glEnable(GL_TEXTURE_COORD_ARRAY);
+ glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnable(GL_TEXTURE_2D);
glColor4f(1, 1, 1, 1);
}
vertices[p++] = x - ex2; vertices[p++] = y + ey2;
}
- glDisable(GL_TEXTURE_COORD_ARRAY);
+ glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glVertexPointer(2, GL_FLOAT, 0, vertices);
glDrawArrays(GL_TRIANGLES, 0, points);
- glEnable(GL_TEXTURE_COORD_ARRAY);
+ glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnable(GL_TEXTURE_2D);
glColor4f(1, 1, 1, 1);
}
int w,h;
- float target_aspect = float(config->aspect_width) / float(config->aspect_height);
+ float target_aspect = float(desktop_width) / desktop_height;
+
+ if (config->aspect_width != 0 && config->aspect_height != 0)
+ target_aspect = float(config->aspect_width) / float(config->aspect_height);
+
float desktop_aspect = 4.0f / 3.0f; // random default fallback guess
if (desktop_width != -1 && desktop_height != -1)
SCREEN_HEIGHT = static_cast<int>(h * (target_aspect / desktop_aspect));
}
- SCREEN_WIDTH = static_cast<int>(SCREEN_WIDTH / config->magnification);
- SCREEN_HEIGHT = static_cast<int>(SCREEN_HEIGHT / config->magnification);
-
int max_width = 1600; // FIXME: Maybe 1920 is ok too
int max_height = 1200;
- if (config->fill_screen)
+ if (config->magnification == 0.0f) // Magic value that means 'minfill'
{
// This scales SCREEN_WIDTH/SCREEN_HEIGHT so that they never excede
// max_width/max_height
}
else
{
+ SCREEN_WIDTH = static_cast<int>(SCREEN_WIDTH / config->magnification);
+ SCREEN_HEIGHT = static_cast<int>(SCREEN_HEIGHT / config->magnification);
+
// This works by adding black borders around the screen to limit
// SCREEN_WIDTH/SCREEN_HEIGHT to max_width/max_height
int nw = w;
SCREEN_HEIGHT = static_cast<int>(max_height);
}
- // Clear so that we get a clean black border without junk
+ // Clear both buffers so that we get a clean black border without junk
+ glClear(GL_COLOR_BUFFER_BIT);
+ SDL_GL_SwapBuffers();
glClear(GL_COLOR_BUFFER_BIT);
+ SDL_GL_SwapBuffers();
- std::cout << (w-nw)/2 << " "
- << (h-nh)/2 << " "
- << nw << "x" << nh << std::endl;
+ if (0)
+ std::cout << (w-nw)/2 << " "
+ << (h-nh)/2 << " "
+ << nw << "x" << nh << std::endl;
glViewport(std::max(0, (w-nw)/2),
std::max(0, (h-nh)/2),
std::min(nh, h));
}
- std::cout << " -> " << SCREEN_WIDTH << "x" << SCREEN_HEIGHT << std::endl;
+ if (0)
+ std::cout << " -> " << SCREEN_WIDTH << "x" << SCREEN_HEIGHT << std::endl;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();