/* * Copyright 2015 Marc Prengemann * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for * the specific language governing permissions and limitations under the License. */ package de.mprengemann.intellij.plugin.androidicons.util; import de.mprengemann.intellij.plugin.androidicons.model.Resolution; public class RefactorUtils { private static final float FACTOR_LDPI = 0.75f; private static final float FACTOR_MDPI = 1f; private static final float FACTOR_HDPI = 1.5f; private static final float FACTOR_XHDPI = 2f; private static final float FACTOR_XXHDPI = 3f; private static final float FACTOR_XXXHDPI = 4f; private static final float FACTOR_TVDPI = 4f / 3f; private RefactorUtils() { } public static float getScaleFactor(Resolution target, Resolution baseLine) { switch (baseLine) { case MDPI: switch (target) { case LDPI: return 1f / FACTOR_MDPI * FACTOR_LDPI; case MDPI: return 1f / FACTOR_MDPI * FACTOR_MDPI; case HDPI: return 1f / FACTOR_MDPI * FACTOR_HDPI; case XHDPI: return 1f / FACTOR_MDPI * FACTOR_XHDPI; case XXHDPI: return 1f / FACTOR_MDPI * FACTOR_XXHDPI; case XXXHDPI: return 1f / FACTOR_MDPI * FACTOR_XXXHDPI; case TVDPI: return 1f / FACTOR_MDPI * FACTOR_TVDPI; } break; case LDPI: switch (target) { case LDPI: return 1f / FACTOR_LDPI * FACTOR_LDPI; case MDPI: return 1f / FACTOR_LDPI * FACTOR_MDPI; case HDPI: return 1f / FACTOR_LDPI * FACTOR_HDPI; case XHDPI: return 1f / FACTOR_LDPI * FACTOR_XHDPI; case XXHDPI: return 1f / FACTOR_LDPI * FACTOR_XXHDPI; case XXXHDPI: return 1f / FACTOR_LDPI * FACTOR_XXXHDPI; case TVDPI: return 1f / FACTOR_LDPI * FACTOR_TVDPI; } break; case HDPI: switch (target) { case LDPI: return 1f / FACTOR_HDPI * FACTOR_LDPI; case MDPI: return 1f / FACTOR_HDPI * FACTOR_MDPI; case HDPI: return 1f / FACTOR_HDPI * FACTOR_HDPI; case XHDPI: return 1f / FACTOR_HDPI * FACTOR_XHDPI; case XXHDPI: return 1f / FACTOR_HDPI * FACTOR_XXHDPI; case XXXHDPI: return 1f / FACTOR_HDPI * FACTOR_XXXHDPI; case TVDPI: return 1f / FACTOR_HDPI * FACTOR_TVDPI; } break; case XHDPI: switch (target) { case LDPI: return 1f / FACTOR_XHDPI * FACTOR_LDPI; case MDPI: return 1f / FACTOR_XHDPI * FACTOR_MDPI; case HDPI: return 1f / FACTOR_XHDPI * FACTOR_HDPI; case XHDPI: return 1f / FACTOR_XHDPI * FACTOR_XHDPI; case XXHDPI: return 1f / FACTOR_XHDPI * FACTOR_XXHDPI; case XXXHDPI: return 1f / FACTOR_XHDPI * FACTOR_XXXHDPI; case TVDPI: return 1f / FACTOR_XHDPI * FACTOR_TVDPI; } break; case XXHDPI: switch (target) { case LDPI: return 1f / FACTOR_XXHDPI * FACTOR_LDPI; case MDPI: return 1f / FACTOR_XXHDPI * FACTOR_MDPI; case HDPI: return 1f / FACTOR_XXHDPI * FACTOR_HDPI; case XHDPI: return 1f / FACTOR_XXHDPI * FACTOR_XHDPI; case XXHDPI: return 1f / FACTOR_XXHDPI * FACTOR_XXHDPI; case XXXHDPI: return 1f / FACTOR_XXHDPI * FACTOR_XXXHDPI; case TVDPI: return 1f / FACTOR_XXHDPI * FACTOR_TVDPI; } break; case XXXHDPI: switch (target) { case LDPI: return 1f / FACTOR_XXXHDPI * FACTOR_LDPI; case MDPI: return 1f / FACTOR_XXXHDPI * FACTOR_MDPI; case HDPI: return 1f / FACTOR_XXXHDPI * FACTOR_HDPI; case XHDPI: return 1f / FACTOR_XXXHDPI * FACTOR_XHDPI; case XXHDPI: return 1f / FACTOR_XXXHDPI * FACTOR_XXHDPI; case XXXHDPI: return 1f / FACTOR_XXXHDPI * FACTOR_XXXHDPI; case TVDPI: return 1f / FACTOR_XXXHDPI * FACTOR_TVDPI; } break; case TVDPI: switch (target) { case LDPI: return 1f / FACTOR_TVDPI * FACTOR_LDPI; case MDPI: return 1f / FACTOR_TVDPI * FACTOR_MDPI; case HDPI: return 1f / FACTOR_TVDPI * FACTOR_HDPI; case XHDPI: return 1f / FACTOR_TVDPI * FACTOR_XHDPI; case XXHDPI: return 1f / FACTOR_TVDPI * FACTOR_XXHDPI; case XXXHDPI: return 1f / FACTOR_TVDPI * FACTOR_XXXHDPI; case TVDPI: return 1f / FACTOR_TVDPI * FACTOR_TVDPI; } } throw new IllegalArgumentException(); } }