Пример #1
0
int loadPNGTexture(char* filePath) {
    int texture;
    Image* pngImage = loadPNGImage(filePath);

    glGenTextures(1, &texture);
    glBindTexture(GL_TEXTURE_2D, texture);

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

    if (pngImage->colorType == PNG_COLOR_TYPE_RGB)
        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, pngImage->width, pngImage->height, 0, GL_RGB, GL_UNSIGNED_BYTE, pngImage->data);
    else if (pngImage->colorType == PNG_COLOR_TYPE_RGBA)
        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, pngImage->width, pngImage->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, pngImage->data);

    free(pngImage->data);
    free(pngImage);

    return texture;
}
Пример #2
0
	bool GenericSkin::init() {
		const char *dir = getenv("MOSYNCDIR");

		if(!dir) return false;

		if(!sSkinImage)
			sSkinImage        = loadPNGImage((std::string(dir)+"/skins/skinImage.png").c_str());
		if(!sSkinImage) return false;
		if(!sSelectedKeypad)
			sSelectedKeypad   = loadPNGImage((std::string(dir)+"/skins/keypadSelected.png").c_str());
		if(!sSelectedKeypad) return false;
		if(!sUnselectedKeypad)
			sUnselectedKeypad = loadPNGImage((std::string(dir)+"/skins/keypadUnselected.png").c_str());
		if(!sUnselectedKeypad) return false;
		if(!sMultiTouchImage)
			sMultiTouchImage = loadPNGImage((std::string(dir)+"/skins/multitouchMarker.png").c_str());
		if(!sMultiTouchImage) return false;

		int w = getWindowWidth();
		int h = getWindowHeight();

		unselectedPhone = createSurface(w, h);
		selectedPhone   = createSurface(w, h);

		generatePhone();

		int keysX=0, keysY=0;

		if(mProfile->mKeyboardType == DeviceProfile::DKT_KEYPAD) {
			keysX = w/2 - sUnselectedKeypad->w/2;
			keysY = h - sUnselectedKeypad->h - 24;
		} else if(mProfile->mKeyboardType == DeviceProfile::DKT_JOYSTICK) {
			keysX = w/2 - sUnselectedKeypad->w/2;
			keysY = h - 74 - 24;
		}

#define OFFSET_X (27-keysX)
#define OFFSET_Y (368-keysY)
		if(mProfile->mKeyboardType == DeviceProfile::DKT_JOYSTICK || mProfile->mKeyboardType == DeviceProfile::DKT_KEYPAD) {

			keyRects.push_back(KeyRect(MAK_UP, 132-OFFSET_X, 369-OFFSET_Y, 20, 20));
			keyRects.push_back(KeyRect(MAK_RIGHT, 159-OFFSET_X, 399-OFFSET_Y, 10, 20));
			keyRects.push_back(KeyRect(MAK_DOWN, 132-OFFSET_X, 426-OFFSET_Y, 12, 10));
			keyRects.push_back(KeyRect(MAK_LEFT, 107-OFFSET_X, 399-OFFSET_Y, 10, 20));

			keyRects.push_back(KeyRect(MAK_SOFTLEFT, 32-OFFSET_X, 378-OFFSET_Y, 80, 23));
			keyRects.push_back(KeyRect(MAK_SOFTRIGHT, 164-OFFSET_X, 378-OFFSET_Y, 80, 23));

			keyRects.push_back(KeyRect(MAK_FIRE, 120-OFFSET_X, 387-OFFSET_Y, 36, 36));
			keyRects.push_back(KeyRect(MAK_CLEAR, 222-OFFSET_X, 500-OFFSET_Y, 26, 60));
		}

		if(mProfile->mKeyboardType == DeviceProfile::DKT_KEYPAD) {
			keyRects.push_back(KeyRect(MAK_1, 54-OFFSET_X, 451-OFFSET_Y, 55, 23));
			keyRects.push_back(KeyRect(MAK_2, 110-OFFSET_X, 451-OFFSET_Y, 55, 23));
			keyRects.push_back(KeyRect(MAK_3, 166-OFFSET_X, 451-OFFSET_Y, 55, 23));
			keyRects.push_back(KeyRect(MAK_4, 54-OFFSET_X, 476-OFFSET_Y, 55, 23));
			keyRects.push_back(KeyRect(MAK_5, 110-OFFSET_X, 476-OFFSET_Y, 55, 23));
			keyRects.push_back(KeyRect(MAK_6, 166-OFFSET_X, 476-OFFSET_Y, 55, 23));
			keyRects.push_back(KeyRect(MAK_7, 54-OFFSET_X, 501-OFFSET_Y, 55, 23));
			keyRects.push_back(KeyRect(MAK_8, 110-OFFSET_X, 501-OFFSET_Y, 55, 23));
			keyRects.push_back(KeyRect(MAK_9, 166-OFFSET_X, 501-OFFSET_Y, 55, 23));
			keyRects.push_back(KeyRect(MAK_STAR, 54-OFFSET_X, 526-OFFSET_Y, 55, 23));
			keyRects.push_back(KeyRect(MAK_0, 110-OFFSET_X, 526-OFFSET_Y, 55, 23));
			keyRects.push_back(KeyRect(MAK_HASH, 166-OFFSET_X, 526-OFFSET_Y, 55, 23));
		}

		screenRect.x = w/2 - mProfile->mScreenWidth/2;
		screenRect.y = 24;
		screenRect.w = mProfile->mScreenWidth;
		screenRect.h = mProfile->mScreenHeight;

		windowRect.x = 0;
		windowRect.y = 0;
		windowRect.w = w;
		windowRect.h = h;

		return true;
	}