Esempio n. 1
0
// Returns the index of the attribute given the name. Returns -1 if it isn't found.
int AttributeIndex( CFGFile* fileData, const char* attrName )
{
	int idx = -1;

	size_t count = sb_Count( fileData->sbAttributes );
	for( size_t i = 0; ( i < count ) && ( idx < 0 ); ++i ) {
		if( SDL_strncasecmp( attrName, fileData->sbAttributes[i].fileName, sizeof( fileData->sbAttributes[i].fileName ) - 1 ) == 0 ) {
			idx = (int)i;
		}
	}

	return idx;
}
Esempio n. 2
0
/*
 * Add or update an entry into the Mappings Database
 */
int
SDL_GameControllerAddMappingsFromRW(SDL_RWops * rw, int freerw)
{
    const char *platform = SDL_GetPlatform();
    int controllers = 0;
    char *buf, *line, *line_end, *tmp, *comma, line_platform[64];
    size_t db_size, platform_len;

    if (rw == NULL) {
        return SDL_SetError("Invalid RWops");
    }
    db_size = (size_t)SDL_RWsize(rw);

    buf = (char *)SDL_malloc(db_size + 1);
    if (buf == NULL) {
        if (freerw) {
            SDL_RWclose(rw);
        }
        return SDL_SetError("Could allocate space to not read DB into memory");
    }

    if (SDL_RWread(rw, buf, db_size, 1) != 1) {
        if (freerw) {
            SDL_RWclose(rw);
        }
        SDL_free(buf);
        return SDL_SetError("Could not read DB");
    }

    if (freerw) {
        SDL_RWclose(rw);
    }

    buf[db_size] = '\0';
    line = buf;

    while (line < buf + db_size) {
        line_end = SDL_strchr(line, '\n');
        if (line_end != NULL) {
            *line_end = '\0';
        } else {
            line_end = buf + db_size;
        }

        /* Extract and verify the platform */
        tmp = SDL_strstr(line, SDL_CONTROLLER_PLATFORM_FIELD);
        if (tmp != NULL) {
            tmp += SDL_strlen(SDL_CONTROLLER_PLATFORM_FIELD);
            comma = SDL_strchr(tmp, ',');
            if (comma != NULL) {
                platform_len = comma - tmp + 1;
                if (platform_len + 1 < SDL_arraysize(line_platform)) {
                    SDL_strlcpy(line_platform, tmp, platform_len);
                    if (SDL_strncasecmp(line_platform, platform, platform_len) == 0 &&
                        SDL_GameControllerAddMapping(line) > 0) {
                        controllers++;
                    }
                }
            }
        }

        line = line_end + 1;
    }

    SDL_free(buf);
    return controllers;
}
Esempio n. 3
0
/*
 * convert colour spec to RGB (in 0xrrggbb format).
 * return 1 if successful.
 */
static int color_to_rgb(const char *spec, int speclen, Uint32 *rgb)
{
    /* poor man's rgb.txt */
    static struct { const char *name; Uint32 rgb; } known[] = {
        { "none",                 0xFFFFFFFF },
        { "black",                0x000000 },
        { "white",                0xFFFFFF },
        { "red",                  0xFF0000 },
        { "green",                0x00FF00 },
        { "blue",                 0x0000FF },
/* This table increases the size of the library by 40K, so it's disabled by default */
#ifdef EXTENDED_XPM_COLORS
        { "aliceblue",            0xf0f8ff },
        { "antiquewhite",         0xfaebd7 },
        { "antiquewhite1",        0xffefdb },
        { "antiquewhite2",        0xeedfcc },
        { "antiquewhite3",        0xcdc0b0 },
        { "antiquewhite4",        0x8b8378 },
        { "aqua",                 0x00ffff },
        { "aquamarine",           0x7fffd4 },
        { "aquamarine1",          0x7fffd4 },
        { "aquamarine2",          0x76eec6 },
        { "aquamarine3",          0x66cdaa },
        { "aquamarine4",          0x458b74 },
        { "azure",                0xf0ffff },
        { "azure1",               0xf0ffff },
        { "azure2",               0xe0eeee },
        { "azure3",               0xc1cdcd },
        { "azure4",               0x838b8b },
        { "beige",                0xf5f5dc },
        { "bisque",               0xffe4c4 },
        { "bisque1",              0xffe4c4 },
        { "bisque2",              0xeed5b7 },
        { "bisque3",              0xcdb79e },
        { "bisque4",              0x8b7d6b },
        { "black",                0x000000 },
        { "blanchedalmond",       0xffebcd },
        { "blue",                 0x0000ff },
        { "blue1",                0x0000ff },
        { "blue2",                0x0000ee },
        { "blue3",                0x0000cd },
        { "blue4",                0x00008B },
        { "blueviolet",           0x8a2be2 },
        { "brown",                0xA52A2A },
        { "brown1",               0xFF4040 },
        { "brown2",               0xEE3B3B },
        { "brown3",               0xCD3333 },
        { "brown4",               0x8B2323 },
        { "burlywood",            0xDEB887 },
        { "burlywood1",           0xFFD39B },
        { "burlywood2",           0xEEC591 },
        { "burlywood3",           0xCDAA7D },
        { "burlywood4",           0x8B7355 },
        { "cadetblue",            0x5F9EA0 },
        { "cadetblue",            0x5f9ea0 },
        { "cadetblue1",           0x98f5ff },
        { "cadetblue2",           0x8ee5ee },
        { "cadetblue3",           0x7ac5cd },
        { "cadetblue4",           0x53868b },
        { "chartreuse",           0x7FFF00 },
        { "chartreuse1",          0x7FFF00 },
        { "chartreuse2",          0x76EE00 },
        { "chartreuse3",          0x66CD00 },
        { "chartreuse4",          0x458B00 },
        { "chocolate",            0xD2691E },
        { "chocolate1",           0xFF7F24 },
        { "chocolate2",           0xEE7621 },
        { "chocolate3",           0xCD661D },
        { "chocolate4",           0x8B4513 },
        { "coral",                0xFF7F50 },
        { "coral1",               0xFF7256 },
        { "coral2",               0xEE6A50 },
        { "coral3",               0xCD5B45 },
        { "coral4",               0x8B3E2F },
        { "cornflowerblue",       0x6495ed },
        { "cornsilk",             0xFFF8DC },
        { "cornsilk1",            0xFFF8DC },
        { "cornsilk2",            0xEEE8CD },
        { "cornsilk3",            0xCDC8B1 },
        { "cornsilk4",            0x8B8878 },
        { "crimson",              0xDC143C },
        { "cyan",                 0x00FFFF },
        { "cyan1",                0x00FFFF },
        { "cyan2",                0x00EEEE },
        { "cyan3",                0x00CDCD },
        { "cyan4",                0x008B8B },
        { "darkblue",             0x00008b },
        { "darkcyan",             0x008b8b },
        { "darkgoldenrod",        0xb8860b },
        { "darkgoldenrod1",       0xffb90f },
        { "darkgoldenrod2",       0xeead0e },
        { "darkgoldenrod3",       0xcd950c },
        { "darkgoldenrod4",       0x8b6508 },
        { "darkgray",             0xa9a9a9 },
        { "darkgreen",            0x006400 },
        { "darkgrey",             0xa9a9a9 },
        { "darkkhaki",            0xbdb76b },
        { "darkmagenta",          0x8b008b },
        { "darkolivegreen",       0x556b2f },
        { "darkolivegreen1",      0xcaff70 },
        { "darkolivegreen2",      0xbcee68 },
        { "darkolivegreen3",      0xa2cd5a },
        { "darkolivegreen4",      0x6e8b3d },
        { "darkorange",           0xff8c00 },
        { "darkorange1",          0xff7f00 },
        { "darkorange2",          0xee7600 },
        { "darkorange3",          0xcd6600 },
        { "darkorange4",          0x8b4500 },
        { "darkorchid",           0x9932cc },
        { "darkorchid1",          0xbf3eff },
        { "darkorchid2",          0xb23aee },
        { "darkorchid3",          0x9a32cd },
        { "darkorchid4",          0x68228b },
        { "darkred",              0x8b0000 },
        { "darksalmon",           0xe9967a },
        { "darkseagreen",         0x8fbc8f },
        { "darkseagreen1",        0xc1ffc1 },
        { "darkseagreen2",        0xb4eeb4 },
        { "darkseagreen3",        0x9bcd9b },
        { "darkseagreen4",        0x698b69 },
        { "darkslateblue",        0x483d8b },
        { "darkslategray",        0x2f4f4f },
        { "darkslategray1",       0x97ffff },
        { "darkslategray2",       0x8deeee },
        { "darkslategray3",       0x79cdcd },
        { "darkslategray4",       0x528b8b },
        { "darkslategrey",        0x2f4f4f },
        { "darkturquoise",        0x00ced1 },
        { "darkviolet",           0x9400D3 },
        { "darkviolet",           0x9400d3 },
        { "deeppink",             0xff1493 },
        { "deeppink1",            0xff1493 },
        { "deeppink2",            0xee1289 },
        { "deeppink3",            0xcd1076 },
        { "deeppink4",            0x8b0a50 },
        { "deepskyblue",          0x00bfff },
        { "deepskyblue1",         0x00bfff },
        { "deepskyblue2",         0x00b2ee },
        { "deepskyblue3",         0x009acd },
        { "deepskyblue4",         0x00688b },
        { "dimgray",              0x696969 },
        { "dimgrey",              0x696969 },
        { "dodgerblue",           0x1e90ff },
        { "dodgerblue1",          0x1e90ff },
        { "dodgerblue2",          0x1c86ee },
        { "dodgerblue3",          0x1874cd },
        { "dodgerblue4",          0x104e8b },
        { "firebrick",            0xB22222 },
        { "firebrick1",           0xFF3030 },
        { "firebrick2",           0xEE2C2C },
        { "firebrick3",           0xCD2626 },
        { "firebrick4",           0x8B1A1A },
        { "floralwhite",          0xfffaf0 },
        { "forestgreen",          0x228b22 },
        { "fractal",              0x808080 },
        { "fuchsia",              0xFF00FF },
        { "gainsboro",            0xDCDCDC },
        { "ghostwhite",           0xf8f8ff },
        { "gold",                 0xFFD700 },
        { "gold1",                0xFFD700 },
        { "gold2",                0xEEC900 },
        { "gold3",                0xCDAD00 },
        { "gold4",                0x8B7500 },
        { "goldenrod",            0xDAA520 },
        { "goldenrod1",           0xFFC125 },
        { "goldenrod2",           0xEEB422 },
        { "goldenrod3",           0xCD9B1D },
        { "goldenrod4",           0x8B6914 },
        { "gray",                 0x7E7E7E },
        { "gray",                 0xBEBEBE },
        { "gray0",                0x000000 },
        { "gray1",                0x030303 },
        { "gray10",               0x1A1A1A },
        { "gray100",              0xFFFFFF },
        { "gray11",               0x1C1C1C },
        { "gray12",               0x1F1F1F },
        { "gray13",               0x212121 },
        { "gray14",               0x242424 },
        { "gray15",               0x262626 },
        { "gray16",               0x292929 },
        { "gray17",               0x2B2B2B },
        { "gray18",               0x2E2E2E },
        { "gray19",               0x303030 },
        { "gray2",                0x050505 },
        { "gray20",               0x333333 },
        { "gray21",               0x363636 },
        { "gray22",               0x383838 },
        { "gray23",               0x3B3B3B },
        { "gray24",               0x3D3D3D },
        { "gray25",               0x404040 },
        { "gray26",               0x424242 },
        { "gray27",               0x454545 },
        { "gray28",               0x474747 },
        { "gray29",               0x4A4A4A },
        { "gray3",                0x080808 },
        { "gray30",               0x4D4D4D },
        { "gray31",               0x4F4F4F },
        { "gray32",               0x525252 },
        { "gray33",               0x545454 },
        { "gray34",               0x575757 },
        { "gray35",               0x595959 },
        { "gray36",               0x5C5C5C },
        { "gray37",               0x5E5E5E },
        { "gray38",               0x616161 },
        { "gray39",               0x636363 },
        { "gray4",                0x0A0A0A },
        { "gray40",               0x666666 },
        { "gray41",               0x696969 },
        { "gray42",               0x6B6B6B },
        { "gray43",               0x6E6E6E },
        { "gray44",               0x707070 },
        { "gray45",               0x737373 },
        { "gray46",               0x757575 },
        { "gray47",               0x787878 },
        { "gray48",               0x7A7A7A },
        { "gray49",               0x7D7D7D },
        { "gray5",                0x0D0D0D },
        { "gray50",               0x7F7F7F },
        { "gray51",               0x828282 },
        { "gray52",               0x858585 },
        { "gray53",               0x878787 },
        { "gray54",               0x8A8A8A },
        { "gray55",               0x8C8C8C },
        { "gray56",               0x8F8F8F },
        { "gray57",               0x919191 },
        { "gray58",               0x949494 },
        { "gray59",               0x969696 },
        { "gray6",                0x0F0F0F },
        { "gray60",               0x999999 },
        { "gray61",               0x9C9C9C },
        { "gray62",               0x9E9E9E },
        { "gray63",               0xA1A1A1 },
        { "gray64",               0xA3A3A3 },
        { "gray65",               0xA6A6A6 },
        { "gray66",               0xA8A8A8 },
        { "gray67",               0xABABAB },
        { "gray68",               0xADADAD },
        { "gray69",               0xB0B0B0 },
        { "gray7",                0x121212 },
        { "gray70",               0xB3B3B3 },
        { "gray71",               0xB5B5B5 },
        { "gray72",               0xB8B8B8 },
        { "gray73",               0xBABABA },
        { "gray74",               0xBDBDBD },
        { "gray75",               0xBFBFBF },
        { "gray76",               0xC2C2C2 },
        { "gray77",               0xC4C4C4 },
        { "gray78",               0xC7C7C7 },
        { "gray79",               0xC9C9C9 },
        { "gray8",                0x141414 },
        { "gray80",               0xCCCCCC },
        { "gray81",               0xCFCFCF },
        { "gray82",               0xD1D1D1 },
        { "gray83",               0xD4D4D4 },
        { "gray84",               0xD6D6D6 },
        { "gray85",               0xD9D9D9 },
        { "gray86",               0xDBDBDB },
        { "gray87",               0xDEDEDE },
        { "gray88",               0xE0E0E0 },
        { "gray89",               0xE3E3E3 },
        { "gray9",                0x171717 },
        { "gray90",               0xE5E5E5 },
        { "gray91",               0xE8E8E8 },
        { "gray92",               0xEBEBEB },
        { "gray93",               0xEDEDED },
        { "gray94",               0xF0F0F0 },
        { "gray95",               0xF2F2F2 },
        { "gray96",               0xF5F5F5 },
        { "gray97",               0xF7F7F7 },
        { "gray98",               0xFAFAFA },
        { "gray99",               0xFCFCFC },
        { "green",                0x008000 },
        { "green",                0x00FF00 },
        { "green1",               0x00FF00 },
        { "green2",               0x00EE00 },
        { "green3",               0x00CD00 },
        { "green4",               0x008B00 },
        { "greenyellow",          0xadff2f },
        { "grey",                 0xBEBEBE },
        { "grey0",                0x000000 },
        { "grey1",                0x030303 },
        { "grey10",               0x1A1A1A },
        { "grey100",              0xFFFFFF },
        { "grey11",               0x1C1C1C },
        { "grey12",               0x1F1F1F },
        { "grey13",               0x212121 },
        { "grey14",               0x242424 },
        { "grey15",               0x262626 },
        { "grey16",               0x292929 },
        { "grey17",               0x2B2B2B },
        { "grey18",               0x2E2E2E },
        { "grey19",               0x303030 },
        { "grey2",                0x050505 },
        { "grey20",               0x333333 },
        { "grey21",               0x363636 },
        { "grey22",               0x383838 },
        { "grey23",               0x3B3B3B },
        { "grey24",               0x3D3D3D },
        { "grey25",               0x404040 },
        { "grey26",               0x424242 },
        { "grey27",               0x454545 },
        { "grey28",               0x474747 },
        { "grey29",               0x4A4A4A },
        { "grey3",                0x080808 },
        { "grey30",               0x4D4D4D },
        { "grey31",               0x4F4F4F },
        { "grey32",               0x525252 },
        { "grey33",               0x545454 },
        { "grey34",               0x575757 },
        { "grey35",               0x595959 },
        { "grey36",               0x5C5C5C },
        { "grey37",               0x5E5E5E },
        { "grey38",               0x616161 },
        { "grey39",               0x636363 },
        { "grey4",                0x0A0A0A },
        { "grey40",               0x666666 },
        { "grey41",               0x696969 },
        { "grey42",               0x6B6B6B },
        { "grey43",               0x6E6E6E },
        { "grey44",               0x707070 },
        { "grey45",               0x737373 },
        { "grey46",               0x757575 },
        { "grey47",               0x787878 },
        { "grey48",               0x7A7A7A },
        { "grey49",               0x7D7D7D },
        { "grey5",                0x0D0D0D },
        { "grey50",               0x7F7F7F },
        { "grey51",               0x828282 },
        { "grey52",               0x858585 },
        { "grey53",               0x878787 },
        { "grey54",               0x8A8A8A },
        { "grey55",               0x8C8C8C },
        { "grey56",               0x8F8F8F },
        { "grey57",               0x919191 },
        { "grey58",               0x949494 },
        { "grey59",               0x969696 },
        { "grey6",                0x0F0F0F },
        { "grey60",               0x999999 },
        { "grey61",               0x9C9C9C },
        { "grey62",               0x9E9E9E },
        { "grey63",               0xA1A1A1 },
        { "grey64",               0xA3A3A3 },
        { "grey65",               0xA6A6A6 },
        { "grey66",               0xA8A8A8 },
        { "grey67",               0xABABAB },
        { "grey68",               0xADADAD },
        { "grey69",               0xB0B0B0 },
        { "grey7",                0x121212 },
        { "grey70",               0xB3B3B3 },
        { "grey71",               0xB5B5B5 },
        { "grey72",               0xB8B8B8 },
        { "grey73",               0xBABABA },
        { "grey74",               0xBDBDBD },
        { "grey75",               0xBFBFBF },
        { "grey76",               0xC2C2C2 },
        { "grey77",               0xC4C4C4 },
        { "grey78",               0xC7C7C7 },
        { "grey79",               0xC9C9C9 },
        { "grey8",                0x141414 },
        { "grey80",               0xCCCCCC },
        { "grey81",               0xCFCFCF },
        { "grey82",               0xD1D1D1 },
        { "grey83",               0xD4D4D4 },
        { "grey84",               0xD6D6D6 },
        { "grey85",               0xD9D9D9 },
        { "grey86",               0xDBDBDB },
        { "grey87",               0xDEDEDE },
        { "grey88",               0xE0E0E0 },
        { "grey89",               0xE3E3E3 },
        { "grey9",                0x171717 },
        { "grey90",               0xE5E5E5 },
        { "grey91",               0xE8E8E8 },
        { "grey92",               0xEBEBEB },
        { "grey93",               0xEDEDED },
        { "grey94",               0xF0F0F0 },
        { "grey95",               0xF2F2F2 },
        { "grey96",               0xF5F5F5 },
        { "grey97",               0xF7F7F7 },
        { "grey98",               0xFAFAFA },
        { "grey99",               0xFCFCFC },
        { "honeydew",             0xF0FFF0 },
        { "honeydew1",            0xF0FFF0 },
        { "honeydew2",            0xE0EEE0 },
        { "honeydew3",            0xC1CDC1 },
        { "honeydew4",            0x838B83 },
        { "hotpink",              0xff69b4 },
        { "hotpink1",             0xff6eb4 },
        { "hotpink2",             0xee6aa7 },
        { "hotpink3",             0xcd6090 },
        { "hotpink4",             0x8b3a62 },
        { "indianred",            0xcd5c5c },
        { "indianred1",           0xff6a6a },
        { "indianred2",           0xee6363 },
        { "indianred3",           0xcd5555 },
        { "indianred4",           0x8b3a3a },
        { "indigo",               0x4B0082 },
        { "ivory",                0xFFFFF0 },
        { "ivory1",               0xFFFFF0 },
        { "ivory2",               0xEEEEE0 },
        { "ivory3",               0xCDCDC1 },
        { "ivory4",               0x8B8B83 },
        { "khaki",                0xF0E68C },
        { "khaki1",               0xFFF68F },
        { "khaki2",               0xEEE685 },
        { "khaki3",               0xCDC673 },
        { "khaki4",               0x8B864E },
        { "lavender",             0xE6E6FA },
        { "lavenderblush",        0xfff0f5 },
        { "lavenderblush1",       0xfff0f5 },
        { "lavenderblush2",       0xeee0e5 },
        { "lavenderblush3",       0xcdc1c5 },
        { "lavenderblush4",       0x8b8386 },
        { "lawngreen",            0x7cfc00 },
        { "lemonchiffon",         0xfffacd },
        { "lemonchiffon1",        0xfffacd },
        { "lemonchiffon2",        0xeee9bf },
        { "lemonchiffon3",        0xcdc9a5 },
        { "lemonchiffon4",        0x8b8970 },
        { "lightblue",            0xadd8e6 },
        { "lightblue1",           0xbfefff },
        { "lightblue2",           0xb2dfee },
        { "lightblue3",           0x9ac0cd },
        { "lightblue4",           0x68838b },
        { "lightcoral",           0xf08080 },
        { "lightcyan",            0xe0ffff },
        { "lightcyan1",           0xe0ffff },
        { "lightcyan2",           0xd1eeee },
        { "lightcyan3",           0xb4cdcd },
        { "lightcyan4",           0x7a8b8b },
        { "lightgoldenrod",       0xeedd82 },
        { "lightgoldenrod1",      0xffec8b },
        { "lightgoldenrod2",      0xeedc82 },
        { "lightgoldenrod3",      0xcdbe70 },
        { "lightgoldenrod4",      0x8b814c },
        { "lightgoldenrodyellow", 0xfafad2 },
        { "lightgray",            0xd3d3d3 },
        { "lightgreen",           0x90ee90 },
        { "lightgrey",            0xd3d3d3 },
        { "lightpink",            0xffb6c1 },
        { "lightpink1",           0xffaeb9 },
        { "lightpink2",           0xeea2ad },
        { "lightpink3",           0xcd8c95 },
        { "lightpink4",           0x8b5f65 },
        { "lightsalmon",          0xffa07a },
        { "lightsalmon1",         0xffa07a },
        { "lightsalmon2",         0xee9572 },
        { "lightsalmon3",         0xcd8162 },
        { "lightsalmon4",         0x8b5742 },
        { "lightseagreen",        0x20b2aa },
        { "lightskyblue",         0x87cefa },
        { "lightskyblue1",        0xb0e2ff },
        { "lightskyblue2",        0xa4d3ee },
        { "lightskyblue3",        0x8db6cd },
        { "lightskyblue4",        0x607b8b },
        { "lightslateblue",       0x8470ff },
        { "lightslategray",       0x778899 },
        { "lightslategrey",       0x778899 },
        { "lightsteelblue",       0xb0c4de },
        { "lightsteelblue1",      0xcae1ff },
        { "lightsteelblue2",      0xbcd2ee },
        { "lightsteelblue3",      0xa2b5cd },
        { "lightsteelblue4",      0x6e7b8b },
        { "lightyellow",          0xffffe0 },
        { "lightyellow1",         0xffffe0 },
        { "lightyellow2",         0xeeeed1 },
        { "lightyellow3",         0xcdcdb4 },
        { "lightyellow4",         0x8b8b7a },
        { "lime",                 0x00FF00 },
        { "limegreen",            0x32cd32 },
        { "linen",                0xFAF0E6 },
        { "magenta",              0xFF00FF },
        { "magenta1",             0xFF00FF },
        { "magenta2",             0xEE00EE },
        { "magenta3",             0xCD00CD },
        { "magenta4",             0x8B008B },
        { "maroon",               0x800000 },
        { "maroon",               0xB03060 },
        { "maroon1",              0xFF34B3 },
        { "maroon2",              0xEE30A7 },
        { "maroon3",              0xCD2990 },
        { "maroon4",              0x8B1C62 },
        { "mediumaquamarine",     0x66cdaa },
        { "mediumblue",           0x0000cd },
        { "mediumforestgreen",    0x32814b },
        { "mediumgoldenrod",      0xd1c166 },
        { "mediumorchid",         0xba55d3 },
        { "mediumorchid1",        0xe066ff },
        { "mediumorchid2",        0xd15fee },
        { "mediumorchid3",        0xb452cd },
        { "mediumorchid4",        0x7a378b },
        { "mediumpurple",         0x9370db },
        { "mediumpurple1",        0xab82ff },
        { "mediumpurple2",        0x9f79ee },
        { "mediumpurple3",        0x8968cd },
        { "mediumpurple4",        0x5d478b },
        { "mediumseagreen",       0x3cb371 },
        { "mediumslateblue",      0x7b68ee },
        { "mediumspringgreen",    0x00fa9a },
        { "mediumturquoise",      0x48d1cc },
        { "mediumvioletred",      0xc71585 },
        { "midnightblue",         0x191970 },
        { "mintcream",            0xf5fffa },
        { "mistyrose",            0xffe4e1 },
        { "mistyrose1",           0xffe4e1 },
        { "mistyrose2",           0xeed5d2 },
        { "mistyrose3",           0xcdb7b5 },
        { "mistyrose4",           0x8b7d7b },
        { "moccasin",             0xFFE4B5 },
        { "navajowhite",          0xffdead },
        { "navajowhite1",         0xffdead },
        { "navajowhite2",         0xeecfa1 },
        { "navajowhite3",         0xcdb38b },
        { "navajowhite4",         0x8b795e },
        { "navy",                 0x000080 },
        { "navyblue",             0x000080 },
        { "none",                 0x0000FF },
        { "oldlace",              0xfdf5e6 },
        { "olive",                0x808000 },
        { "olivedrab",            0x6b8e23 },
        { "olivedrab1",           0xc0ff3e },
        { "olivedrab2",           0xb3ee3a },
        { "olivedrab3",           0x9acd32 },
        { "olivedrab4",           0x698b22 },
        { "opaque",               0x000000 },
        { "orange",               0xFFA500 },
        { "orange1",              0xFFA500 },
        { "orange2",              0xEE9A00 },
        { "orange3",              0xCD8500 },
        { "orange4",              0x8B5A00 },
        { "orangered",            0xff4500 },
        { "orangered1",           0xff4500 },
        { "orangered2",           0xee4000 },
        { "orangered3",           0xcd3700 },
        { "orangered4",           0x8b2500 },
        { "orchid",               0xDA70D6 },
        { "orchid1",              0xFF83FA },
        { "orchid2",              0xEE7AE9 },
        { "orchid3",              0xCD69C9 },
        { "orchid4",              0x8B4789 },
        { "palegoldenrod",        0xeee8aa },
        { "palegreen",            0x98fb98 },
        { "palegreen1",           0x9aff9a },
        { "palegreen2",           0x90ee90 },
        { "palegreen3",           0x7ccd7c },
        { "palegreen4",           0x548b54 },
        { "paleturquoise",        0xafeeee },
        { "paleturquoise1",       0xbbffff },
        { "paleturquoise2",       0xaeeeee },
        { "paleturquoise3",       0x96cdcd },
        { "paleturquoise4",       0x668b8b },
        { "palevioletred",        0xdb7093 },
        { "palevioletred1",       0xff82ab },
        { "palevioletred2",       0xee799f },
        { "palevioletred3",       0xcd6889 },
        { "palevioletred4",       0x8b475d },
        { "papayawhip",           0xffefd5 },
        { "peachpuff",            0xffdab9 },
        { "peachpuff1",           0xffdab9 },
        { "peachpuff2",           0xeecbad },
        { "peachpuff3",           0xcdaf95 },
        { "peachpuff4",           0x8b7765 },
        { "peru",                 0xCD853F },
        { "pink",                 0xFFC0CB },
        { "pink1",                0xFFB5C5 },
        { "pink2",                0xEEA9B8 },
        { "pink3",                0xCD919E },
        { "pink4",                0x8B636C },
        { "plum",                 0xDDA0DD },
        { "plum1",                0xFFBBFF },
        { "plum2",                0xEEAEEE },
        { "plum3",                0xCD96CD },
        { "plum4",                0x8B668B },
        { "powderblue",           0xb0e0e6 },
        { "purple",               0x800080 },
        { "purple",               0xA020F0 },
        { "purple1",              0x9B30FF },
        { "purple2",              0x912CEE },
        { "purple3",              0x7D26CD },
        { "purple4",              0x551A8B },
        { "red",                  0xFF0000 },
        { "red1",                 0xFF0000 },
        { "red2",                 0xEE0000 },
        { "red3",                 0xCD0000 },
        { "red4",                 0x8B0000 },
        { "rosybrown",            0xbc8f8f },
        { "rosybrown1",           0xffc1c1 },
        { "rosybrown2",           0xeeb4b4 },
        { "rosybrown3",           0xcd9b9b },
        { "rosybrown4",           0x8b6969 },
        { "royalblue",            0x4169e1 },
        { "royalblue1",           0x4876ff },
        { "royalblue2",           0x436eee },
        { "royalblue3",           0x3a5fcd },
        { "royalblue4",           0x27408b },
        { "saddlebrown",          0x8b4513 },
        { "salmon",               0xFA8072 },
        { "salmon1",              0xFF8C69 },
        { "salmon2",              0xEE8262 },
        { "salmon3",              0xCD7054 },
        { "salmon4",              0x8B4C39 },
        { "sandybrown",           0xf4a460 },
        { "seagreen",             0x2e8b57 },
        { "seagreen1",            0x54ff9f },
        { "seagreen2",            0x4eee94 },
        { "seagreen3",            0x43cd80 },
        { "seagreen4",            0x2e8b57 },
        { "seashell",             0xFFF5EE },
        { "seashell1",            0xFFF5EE },
        { "seashell2",            0xEEE5DE },
        { "seashell3",            0xCDC5BF },
        { "seashell4",            0x8B8682 },
        { "sienna",               0xA0522D },
        { "sienna1",              0xFF8247 },
        { "sienna2",              0xEE7942 },
        { "sienna3",              0xCD6839 },
        { "sienna4",              0x8B4726 },
        { "silver",               0xC0C0C0 },
        { "skyblue",              0x87ceeb },
        { "skyblue1",             0x87ceff },
        { "skyblue2",             0x7ec0ee },
        { "skyblue3",             0x6ca6cd },
        { "skyblue4",             0x4a708b },
        { "slateblue",            0x6a5acd },
        { "slateblue1",           0x836fff },
        { "slateblue2",           0x7a67ee },
        { "slateblue3",           0x6959cd },
        { "slateblue4",           0x473c8b },
        { "slategray",            0x708090 },
        { "slategray1",           0xc6e2ff },
        { "slategray2",           0xb9d3ee },
        { "slategray3",           0x9fb6cd },
        { "slategray4",           0x6c7b8b },
        { "slategrey",            0x708090 },
        { "snow",                 0xFFFAFA },
        { "snow1",                0xFFFAFA },
        { "snow2",                0xEEE9E9 },
        { "snow3",                0xCDC9C9 },
        { "snow4",                0x8B8989 },
        { "springgreen",          0x00ff7f },
        { "springgreen1",         0x00ff7f },
        { "springgreen2",         0x00ee76 },
        { "springgreen3",         0x00cd66 },
        { "springgreen4",         0x008b45 },
        { "steelblue",            0x4682b4 },
        { "steelblue1",           0x63b8ff },
        { "steelblue2",           0x5cacee },
        { "steelblue3",           0x4f94cd },
        { "steelblue4",           0x36648b },
        { "tan",                  0xD2B48C },
        { "tan1",                 0xFFA54F },
        { "tan2",                 0xEE9A49 },
        { "tan3",                 0xCD853F },
        { "tan4",                 0x8B5A2B },
        { "teal",                 0x008080 },
        { "thistle",              0xD8BFD8 },
        { "thistle1",             0xFFE1FF },
        { "thistle2",             0xEED2EE },
        { "thistle3",             0xCDB5CD },
        { "thistle4",             0x8B7B8B },
        { "tomato",               0xFF6347 },
        { "tomato1",              0xFF6347 },
        { "tomato2",              0xEE5C42 },
        { "tomato3",              0xCD4F39 },
        { "tomato4",              0x8B3626 },
        { "transparent",          0x0000FF },
        { "turquoise",            0x40E0D0 },
        { "turquoise1",           0x00F5FF },
        { "turquoise2",           0x00E5EE },
        { "turquoise3",           0x00C5CD },
        { "turquoise4",           0x00868B },
        { "violet",               0xEE82EE },
        { "violetred",            0xd02090 },
        { "violetred1",           0xff3e96 },
        { "violetred2",           0xee3a8c },
        { "violetred3",           0xcd3278 },
        { "violetred4",           0x8b2252 },
        { "wheat",                0xF5DEB3 },
        { "wheat1",               0xFFE7BA },
        { "wheat2",               0xEED8AE },
        { "wheat3",               0xCDBA96 },
        { "wheat4",               0x8B7E66 },
        { "white",                0xFFFFFF },
        { "whitesmoke",           0xf5f5f5 },
        { "yellow",               0xFFFF00 },
        { "yellow1",              0xFFFF00 },
        { "yellow2",              0xEEEE00 },
        { "yellow3",              0xCDCD00 },
        { "yellow4",              0x8B8B00 },
        { "yellowgreen",          0x9acd32 },
#endif /* EXTENDED_XPM_COLORS */
        {"none",                  0xFFFFFF}
    };

    if (spec[0] == '#') {
        char buf[7];
        switch(speclen) {
        case 4:
            buf[0] = buf[1] = spec[1];
            buf[2] = buf[3] = spec[2];
            buf[4] = buf[5] = spec[3];
            break;
        case 7:
            SDL_memcpy(buf, spec + 1, 6);
            break;
        case 13:
            buf[0] = spec[1];
            buf[1] = spec[2];
            buf[2] = spec[5];
            buf[3] = spec[6];
            buf[4] = spec[9];
            buf[5] = spec[10];
            break;
        }
        buf[6] = '\0';
        *rgb = (Uint32)SDL_strtol(buf, NULL, 16);
        return 1;
    } else {
        size_t i;
        for (i = 0; i < SDL_arraysize(known); i++) {
            if (SDL_strncasecmp(known[i].name, spec, speclen) == 0) {
                *rgb = known[i].rgb;
                return 1;
            }
        }
        return 0;
    }
}
Esempio n. 4
0
int main(int argc, char **argv)
{
    int i;
    int ret = -1;
    int screen = -1;
    int usealpha = 0;
    int fullscreen = 0;
    SDL_SysWMinfo info;
    SDL_Window *window = NULL;
    SDL_GLContext *ctx = NULL;

    for (i = 0; i < argc; i++)
    {
        if (!SDL_strncasecmp(argv[i], "-h", 2) || !SDL_strncasecmp(argv[i], "-?", 2))
        {
            usage(argv);
            exit(0);
        }

        if (!SDL_strncasecmp(argv[i], "-c", 2))
            useci = 1;
        else if (!SDL_strncasecmp(argv[i], "-i", 2))
            interactive = 1;
        else if (!SDL_strncasecmp(argv[i], "-l", 2))
            locolor = 1;
        else if (!SDL_strncasecmp(argv[i], "-m", 2))
            useimm = 1;
        else if (!SDL_strncasecmp(argv[i], "-32", 3))
            usealpha = 1;
        else if (!SDL_strncasecmp(argv[i], "-w", 2) && i < argc - 1)
        {
            int w = 0, h = 0;

            if (sscanf(argv[++i], "%dx%d", &w, &h) == 2 && w > 0 && h > 0)
            {
                width = w;
                height = h;
                printf("Window dimensions: %d x %d\n", width, height);
            }
        }
        else if (!SDL_strncasecmp(argv[i], "-p", 2) && i < argc - 1)
        {
            int npolys = atoi(argv[++i]);
            if (npolys > 0)
            {
                slices = stacks = (int)(sqrt((double)npolys / ((double)(3 * NSPHERES + 1))));
                if (slices < 1)
                    slices = stacks = 1;
            }
        }
        else if (!SDL_strncasecmp(argv[i], "-fs", 3))
        {
            fullscreen = 1;
        }
        else if (!SDL_strncasecmp(argv[i], "-f", 2) && i < argc - 1)
        {
            int mf = atoi(argv[++i]);
            if (mf > 0)
            {
                maxframes = mf;
                printf("Number of frames to render: %d\n", maxframes);
            }
        }
        else if (!SDL_strncasecmp(argv[i], "-bt", 3) && i < argc - 1)
        {
            double temp = atof(argv[++i]);
            if (temp > 0.0)
                benchtime = temp;
        }
        else if (!SDL_strncasecmp(argv[i], "-sc", 3) && i < argc - 1)
        {
            int sc = atoi(argv[++i]);
            if (sc > 0)
            {
                screen = sc;
                printf("Rendering to screen %d\n", screen);
            }
        }
        else if (!SDL_strncasecmp(argv[i], "-s", 2))
        {
            usestereo = 1;
        }
    }

    if (useci)
    {
        SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE, 8);
        SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, usealpha ? 8 : 0); 
        SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 1);
        SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 0);
    }
    else
    {
        SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
        SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
        SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
        SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, usealpha ? 8 : 0); 
        SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 1);
        SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
        SDL_GL_SetAttribute(SDL_GL_STEREO, usestereo); 
    }

    // Initialize SDL for video output.
    if (SDL_Init(SDL_INIT_VIDEO) < 0)
        _throw("Unable to initialize SDL");

    // Create our OpenGL window.
    window = SDL_CreateWindow("vogltest", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height,
                              SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);
    if (!window)
        _throw("Unable to create OpenGL window");

    ctx = SDL_GL_CreateContext(window);
    if (!ctx)
        _throw("Unable to create OpenGL context");

    SDL_VERSION(&info.version);
    if (SDL_GetWindowWMInfo(window, &info) == SDL_TRUE)
    {
        const char *subsystem = "Unknown system";
        switch(info.subsystem)
        {
        case SDL_SYSWM_UNKNOWN:   break;
        case SDL_SYSWM_WINDOWS:   subsystem = "Microsoft Windows(TM)";  break;
        case SDL_SYSWM_X11:       subsystem = "X Window System";        break;
        case SDL_SYSWM_DIRECTFB:  subsystem = "DirectFB";               break;
        case SDL_SYSWM_COCOA:     subsystem = "Apple OS X";             break;
        case SDL_SYSWM_UIKIT:     subsystem = "UIKit";                  break;
        case SDL_SYSWM_WAYLAND:   subsystem = "Wayland";                break;
        }

        printf("Running SDL version %d.%d.%d on '%s'\n", 
               (int)info.version.major,
               (int)info.version.minor,
               (int)info.version.patch,
               subsystem); 

        if (useci)
        {
#ifdef __linux__
            int n;
            XVisualInfo vinfo_template;
            XVisualInfo *vinfo;

            memset(&vinfo_template, 0, sizeof(vinfo_template));
            vinfo_template.colormap_size = 256;
            vinfo = XGetVisualInfo(info.info.x11.display, VisualColormapSizeMask, &vinfo_template, &n);
            if (vinfo && (n > 0))
            {
                ncolors = np2(vinfo->colormap_size);
            }
#else
            // TODO: Just assume 256 for Windows?
            ncolors = 256;
#endif

            if (ncolors < 32)
                _throw("Color map is not large enough");

            _catch(setcolorscheme(window, ncolors, colorscheme));
        }
    }

    fprintf(stderr, "Polygons in scene: %d\n", (NSPHERES * 3 + 1) * slices * stacks);

    if (fullscreen)
    {
        go_fullscreen(window, screen);
    }

    ret = event_loop(window);

bailout:
    SDL_Quit();
    return ret;
}