예제 #1
0
//==============================
// BitmapFontLocal::LoadImage
bool BitmapFontLocal::LoadImage( OvrApkFile const & languagePackageFile, char const * imageName )
{	
	// try to open the language pack apk
	int length = 0;
	void * packageBuffer = NULL;
	if ( languagePackageFile )
	{
		ovr_ReadFileFromOtherApplicationPackage( languagePackageFile, imageName, length, packageBuffer );
	}

	// one of the following conditions should be true here:
	// - we opened the language apk and read the texture file without error
	// - we opened the language apk and failed to open the texture file
	// - we failed to open the language apk
	if ( packageBuffer == NULL )
	{
		ovr_ReadFileFromApplicationPackage( imageName, length, packageBuffer );
	}

	bool result = false;
	if ( packageBuffer != NULL ) 
	{
		result = LoadImageFromBuffer( imageName, (unsigned char const*)packageBuffer, length, ExtensionMatches( imageName, ".astc" ) );
		free( packageBuffer );
	}
	else
	{
		FILE * f = fopen( imageName, "rb" );
		if ( f != NULL ) 
		{
			size_t fsize = FileSize( f );

			unsigned char * buffer = new unsigned char[fsize];

			size_t countRead = fread( buffer, fsize, 1, f );
			fclose( f );
			f = NULL;
			if ( countRead == 1 )
			{
				result = LoadImageFromBuffer( imageName, buffer, fsize, ExtensionMatches( imageName, ".astc" ) );
			}
			delete [] buffer;
		}
	}

    if ( !result ) {
        LOG( "BitmapFontLocal::LoadImage: failed to load image '%s'", imageName );
    }
    return result;
}
예제 #2
0
CXlibToolkit::CXlibToolkit(void *parentWindow, CEditor *editor)
{
    this->parentWindow  = parentWindow;
    this->editor        = editor;

    char *displayName = getenv("DISPLAY");
    if (!displayName || !strlen(displayName))
    {
        displayName = (char*)":0.0";
    }
    if (!XInitThreads())
    {
        fprintf(stderr, "Xlib threads support unavailable");
        return;
    }
    this->display = XOpenDisplay(displayName);

    if (!parentWindow)
    {
        parentWindow = (void*)RootWindow(this->display, DefaultScreen(this->display));
    }

    window = XCreateWindow(this->display, (Window)parentWindow, 0, 0, GUI_WIDTH, GUI_HEIGHT, 0, 24, InputOutput, CopyFromParent, 0, 0);

    gc = XCreateGC(this->display, window, 0, 0);
    XSelectInput(this->display, window, ButtonPressMask | ButtonReleaseMask | PointerMotionMask | ExposureMask | KeyPressMask);
    XMapWindow(this->display, window);
    XFlush(this->display);

    this->WM_TIMER         = XInternAtom(this->display, "WM_TIMER"        , false);
    this->WM_DELETE_WINDOW = XInternAtom(this->display, "WM_DELETE_WINDOW", false);
    XSetWMProtocols(this->display, window, &WM_DELETE_WINDOW, 1);

    offscreen = XCreatePixmap(this->display, window, GUI_WIDTH, GUI_HEIGHT, 24);

    memset(bmps, 0, sizeof(bmps));
    bmps[BMP_CHARS  ] = LoadImageFromFile(BMP_PATH"/chars.bmp"  );
    bmps[BMP_KNOB   ] = LoadImageFromFile(BMP_PATH"/knob.bmp"   );
    bmps[BMP_KNOB2  ] = LoadImageFromFile(BMP_PATH"/knob2.bmp"  );
    bmps[BMP_KNOB3  ] = LoadImageFromFile(BMP_PATH"/knob3.bmp"  );
    bmps[BMP_KEY    ] = LoadImageFromFile(BMP_PATH"/key.bmp"    );
    bmps[BMP_BG     ] = LoadImageFromFile(BMP_PATH"/bg.bmp"     );
    bmps[BMP_BUTTONS] = LoadImageFromFile(BMP_PATH"/buttons.bmp");
    bmps[BMP_OPS    ] = LoadImageFromFile(BMP_PATH"/ops.bmp"    );

    if (!bmps[BMP_CHARS  ]) bmps[BMP_CHARS  ] = LoadImageFromBuffer(chars_bmp  );
    if (!bmps[BMP_KNOB   ]) bmps[BMP_KNOB   ] = LoadImageFromBuffer(knob_bmp   );
    if (!bmps[BMP_KNOB2  ]) bmps[BMP_KNOB2  ] = LoadImageFromBuffer(knob2_bmp  );
    if (!bmps[BMP_KNOB3  ]) bmps[BMP_KNOB3  ] = LoadImageFromBuffer(knob3_bmp  );
    if (!bmps[BMP_KEY    ]) bmps[BMP_KEY    ] = LoadImageFromBuffer(key_bmp    );
    if (!bmps[BMP_BG     ]) bmps[BMP_BG     ] = LoadImageFromBuffer(bg_bmp     );
    if (!bmps[BMP_BUTTONS]) bmps[BMP_BUTTONS] = LoadImageFromBuffer(buttons_bmp);
    if (!bmps[BMP_OPS    ]) bmps[BMP_OPS    ] = LoadImageFromBuffer(ops_bmp    );

    thread1Finished = true;
    thread2Finished = true;
}
예제 #3
0
Pixmap CXlibToolkit::LoadImageFromFile(const char *path)
{
    FILE *f = fopen(path, "rb");
    if (!f)
    {
        return 0;
    }
    fseek(f, 0, SEEK_END);
    int size = ftell(f);
    fseek(f, 0, SEEK_SET);
    char *tmp = (char*)malloc(size);
    if (!fread(tmp, size, 1, f))
    {
        free(tmp);
        fclose(f);
        return 0;
    }
    fclose(f);
    Pixmap result = LoadImageFromBuffer(tmp);
    free(tmp);
    return result;
}