+ case MNID_ASPECTRATIO:
+ { // FIXME: Really crude and ugly here, move to video or so
+ if(sscanf(item->list[item->selected].c_str(), "%d:%d", &config->aspect_width, &config->aspect_height) == 2)
+ {
+ float aspect_ratio = static_cast<double>(config->aspect_width) /
+ static_cast<double>(config->aspect_height);
+
+ if (aspect_ratio > 1) {
+ SCREEN_WIDTH = static_cast<int> (600 * aspect_ratio + 0.5);
+ SCREEN_HEIGHT = 600;
+ } else {
+ SCREEN_WIDTH = 600;
+ SCREEN_HEIGHT = static_cast<int> (600 * 1/aspect_ratio + 0.5);
+ }
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glOrtho(0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, -1.0, 1.0);
+ std::cout << __FILE__ << ":" << __LINE__ << ": change aspect ratio to " << item->list[item->selected] << std::endl;
+
+ // Reposition the menu to be in the center of the screen again
+ set_pos(SCREEN_WIDTH/2, SCREEN_HEIGHT/2);
+ }
+ }
+ break;
+