- else if (sscanf(tmp, "%dx%d", &tmp_w, &tmp_h) == 2)
+ }
+ else if (strcasecmp(tmp, "scaled") == 0) {
+ float factor = MIN(((float)screen_w) / width, ((float)screen_h) / height);
+ w = (int)(factor*width), h = (int)(factor*height);
+ }
+ else if (strcasecmp(tmp, "pixelperfect") == 0) {
+ float factor = MIN(((float)screen_w) / width, ((float)screen_h) / height);
+ w = ((int)factor) * width, h = ((int)factor) * height;
+ /* factor < 1.f => 0x0 layer, so fall back to 'scaled' */
+ if (!w || !h) {
+ w = (int)(factor * width), h = (int)(factor * height);
+ }
+ }
+ else if (sscanf(tmp, "%dx%d", &tmp_w, &tmp_h) == 2) {