示例#1
0
jboolean
SplashGetScaledImageName(const char* jarName, const char* fileName,
                           float *scaleFactor, char *scaleImageName,
                           const size_t scaledImageLength)
{
    float dpiScaleX = -1.0f;
    float dpiScaleY = -1.0f;
    FILE *fp = NULL;
    *scaleFactor = 1.0;
    GetScreenDpi(getPrimaryMonitor(), &dpiScaleX, &dpiScaleY);
    *scaleFactor = dpiScaleX > 0 ? dpiScaleX / 96 : *scaleFactor;
    if (*scaleFactor > 1.0) {
        char strDpi[BUFF_SIZE];
        char *dupFileName = strdup(fileName);
        char *fileExtension = strrchr(dupFileName, '.');
        char *nameToAppend = ".scale-";
        size_t length = 0;
        int retVal = 0;
        _snprintf(strDpi, BUFF_SIZE, "%d", (int)dpiScaleX);
        /*File is missing extension */
        if (fileExtension == NULL) {
            length = strlen(dupFileName) + strlen(nameToAppend) +
                strlen(strDpi) + 1;
            if (length > scaledImageLength) {
                *scaleFactor = 1;
                free(dupFileName);
                return JNI_FALSE;
            }
            retVal = _snprintf(scaleImageName, length, "%s%s%s", dupFileName,
                nameToAppend, strDpi);
            if (retVal < 0 || (retVal != length - 1)) {
                *scaleFactor = 1;
                free(dupFileName);
                return JNI_FALSE;
            }
        }
        else {
            size_t length_Without_Ext = fileExtension - dupFileName;
            length = length_Without_Ext + strlen(nameToAppend) + strlen(strDpi) +
                strlen(fileExtension) + 1;
            if (length > scaledImageLength) {
                *scaleFactor = 1;
                free(dupFileName);
                return JNI_FALSE;
            }
            retVal = _snprintf(scaleImageName, length, "%.*s%s%s%s",
                length_Without_Ext, dupFileName, nameToAppend, strDpi, fileExtension);
            if (retVal < 0 || (retVal != length - 1)) {
                *scaleFactor = 1;
                free(dupFileName);
                return JNI_FALSE;
            }
        }
        free(dupFileName);
        if (!(fp = fopen(scaleImageName, "r"))) {
            *scaleFactor = 1;
            return JNI_FALSE;
        }
        fclose(fp);
        return JNI_TRUE;
    }
    return JNI_FALSE;
}
示例#2
0
文件: view.cpp 项目: tpimh/solvespace
void TextWindow::ScreenChangeViewToFullScale(int link, uint32_t v) {
    SS.GW.scale = GetScreenDpi() / 25.4;
}