static double get_default_scale( AndroidOptions* opts ) { int dpi_device = get_device_dpi( opts ); int dpi_monitor = -1; double scale = 0.0; /* possible values for the 'scale' option are * 'auto' : try to determine the scale automatically * '<number>dpi' : indicates the host monitor dpi, compute scale accordingly * '<fraction>' : use direct scale coefficient */ if (opts->scale) { if (!strcmp(opts->scale, "auto")) { /* we need to get the host dpi resolution ? */ int xdpi, ydpi; if (skin_winsys_get_monitor_dpi(&xdpi, &ydpi) < 0) { fprintf(stderr, "could not get monitor DPI resolution from system. please use -dpi-monitor to specify one\n" ); exit(1); } D( "system reported monitor resolutions: xdpi=%d ydpi=%d\n", xdpi, ydpi); dpi_monitor = (xdpi + ydpi+1)/2; } else { char* end; scale = strtod( opts->scale, &end ); if (end && end[0] == 'd' && end[1] == 'p' && end[2] == 'i' && end[3] == 0) { if ( scale < 20 || scale > 1000 ) { fprintf(stderr, "emulator: ignoring bad -scale argument '%s': %s\n", opts->scale, "host dpi number must be between 20 and 1000" ); exit(1); } dpi_monitor = scale; scale = 0.0; } else if (end == NULL || *end != 0) { fprintf(stderr, "emulator: ignoring bad -scale argument '%s': %s\n", opts->scale, "not a number or the 'auto' keyword" ); exit(1); } else if ( scale < 0.1 || scale > 3. ) { fprintf(stderr, "emulator: ignoring bad -window-scale argument '%s': %s\n", opts->scale, "must be between 0.1 and 3.0" ); exit(1); } } } if (scale == 0.0 && dpi_monitor > 0) scale = dpi_monitor*1.0/dpi_device; return scale; }
void android_emulator_set_window_scale( double scale, int is_dpi ) { QEmulator* emulator = qemulator; if (is_dpi) scale /= get_device_dpi( emulator->opts ); if (emulator->window) skin_window_set_scale( emulator->window, scale ); }
static double get_default_scale( AndroidOptions* opts ) { int dpi_device = get_device_dpi( opts ); int dpi_monitor = -1; double scale = 0.0; if (opts->scale) { if (!strcmp(opts->scale, "auto")) { int xdpi, ydpi; if ( SDL_WM_GetMonitorDPI( &xdpi, &ydpi ) < 0 ) { fprintf(stderr, "could not get monitor DPI resolution from system. please use -dpi-monitor to specify one\n" ); exit(1); } D( "system reported monitor resolutions: xdpi=%d ydpi=%d\n", xdpi, ydpi); dpi_monitor = (xdpi + ydpi+1)/2; } else { char* end; scale = strtod( opts->scale, &end ); if (end && end[0] == 'd' && end[1] == 'p' && end[2] == 'i' && end[3] == 0) { if ( scale < 20 || scale > 1000 ) { fprintf(stderr, "emulator: ignoring bad -scale argument '%s': %s\n", opts->scale, "host dpi number must be between 20 and 1000" ); exit(1); } dpi_monitor = scale; scale = 0.0; } else if (end == NULL || *end != 0) { fprintf(stderr, "emulator: ignoring bad -scale argument '%s': %s\n", opts->scale, "not a number or the 'auto' keyword" ); exit(1); } else if ( scale < 0.1 || scale > 3. ) { fprintf(stderr, "emulator: ignoring bad -window-scale argument '%s': %s\n", opts->scale, "must be between 0.1 and 3.0" ); exit(1); } } } if (scale == 0.0 && dpi_monitor > 0) scale = dpi_monitor*1.0/dpi_device; return scale; }
void android_emulator_set_window_scale(double scale, int is_dpi) { EmulatorWindow* emulator = qemulator; if (is_dpi) scale /= get_device_dpi( emulator->opts ); if (emulator->ui) { skin_ui_set_scale(emulator->ui, scale); } }