Ejemplo n.º 1
0
void GraphicsInit(GraphicsDevice *device, Config *c)
{
    memset(device, 0, sizeof *device);
    CArrayInit(&device->validModes, sizeof(Vec2i));
    // Add default modes
    AddGraphicsMode(device, 320, 240);
    AddGraphicsMode(device, 400, 300);
    AddGraphicsMode(device, 640, 480);
    GraphicsConfigSetFromConfig(&device->cachedConfig, c);
}
Ejemplo n.º 2
0
static void AddSupportedGraphicsModes(GraphicsDevice *device)
{
    // TODO: multiple window support?
    const int numDisplayModes = SDL_GetNumDisplayModes(0);
    if (numDisplayModes < 1)
    {
        LOG(LM_GFX, LL_ERROR, "no valid display modes: %s", SDL_GetError());
        return;
    }
    for (int i = 0; i < numDisplayModes; i++)
    {
        SDL_DisplayMode mode;
        if (SDL_GetDisplayMode(0, i, &mode) != 0)
        {
            LOG(LM_GFX, LL_ERROR, "cannot get display mode: %s",
                SDL_GetError());
            continue;
        }
        if (mode.w < 320 || mode.h < 240)
        {
            break;
        }
        AddGraphicsMode(device, mode.w, mode.h);
    }
}
Ejemplo n.º 3
0
void GraphicsInit(GraphicsDevice *device)
{
	device->IsInitialized = 0;
	device->IsWindowInitialized = 0;
	device->screen = NULL;
	memset(&device->cachedConfig, 0, sizeof device->cachedConfig);
	device->validModes = NULL;
	device->clipping.left = 0;
	device->clipping.top = 0;
	device->clipping.right = 0;
	device->clipping.bottom = 0;
	device->numValidModes = 0;
	device->modeIndex = 0;
	// Add default modes
	AddGraphicsMode(device, 320, 240, 1);
	AddGraphicsMode(device, 400, 300, 1);
	AddGraphicsMode(device, 640, 480, 1);
	AddGraphicsMode(device, 320, 240, 2);
	device->buf = NULL;
	device->bkg = NULL;
	hqxInit();
}
Ejemplo n.º 4
0
void AddSupportedModesForBPP(GraphicsDevice *device, int bpp)
{
	SDL_Rect** modes;
	SDL_PixelFormat fmt;
	int i;
	memset(&fmt, 0, sizeof fmt);
	fmt.BitsPerPixel = (Uint8)bpp;

	modes = SDL_ListModes(&fmt, SDL_FULLSCREEN);
	if (modes == (SDL_Rect**)0)
	{
		return;
	}
	if (modes == (SDL_Rect**)-1)
	{
		return;
	}

	for (i = 0; modes[i]; i++)
	{
		int validScaleFactors[] = { 1, 2, 3, 4 };
		int j;
		for (j = 0; j < 4; j++)
		{
			int scaleFactor = validScaleFactors[j];
			int w, h;
			if (modes[i]->w % scaleFactor || modes[i]->h % scaleFactor)
			{
				continue;
			}
			if (modes[i]->w % 4)
			{
				// TODO: why does width have to be divisible by 4? 1366x768 doesn't work
				continue;
			}
			w = modes[i]->w / scaleFactor;
			h = modes[i]->h / scaleFactor;
			if (w < 320 || h < 240)
			{
				break;
			}
			AddGraphicsMode(device, w, h, scaleFactor);
		}
	}
}