| // |
| // Copyright 2005 The Android Open Source Project |
| // |
| // Simple class to hold an image that can be loaded and unloaded. |
| // |
| |
| // For compilers that support precompilation, include "wx/wx.h". |
| #include "wx/wxprec.h" |
| |
| // Otherwise, include all standard headers |
| #ifndef WX_PRECOMP |
| # include "wx/wx.h" |
| #endif |
| #include "wx/image.h" // needed for Windows build |
| |
| #include "LoadableImage.h" |
| #include "AssetStream.h" |
| #include "MyApp.h" |
| |
| #include "utils.h" |
| |
| #include <stdio.h> |
| |
| |
| /* |
| * Load the image. |
| */ |
| bool LoadableImage::Create(const char* fileName, int x, int y) |
| { |
| if (fileName == NULL || x < 0 || y < 0) { |
| fprintf(stderr, "bad params to %s\n", __PRETTY_FUNCTION__); |
| return false; |
| } |
| |
| delete[] mName; |
| mName = android::strdupNew(fileName); |
| |
| mX = x; |
| mY = y; |
| |
| return true; |
| } |
| |
| /* |
| * Load the bitmap. |
| */ |
| bool LoadableImage::LoadResources(void) |
| { |
| if (mName == NULL) |
| return false; |
| |
| if (mpBitmap != NULL) // already loaded? |
| return true; |
| |
| //printf("LoadResources: '%s'\n", (const char*) mName); |
| #ifdef BEFORE_ASSET |
| wxImage img(mName); |
| #else |
| android::AssetManager* pAssetMgr = ((MyApp*)wxTheApp)->GetAssetManager(); |
| android::Asset* pAsset; |
| |
| pAsset = pAssetMgr->open(mName, android::Asset::ACCESS_RANDOM); |
| if (pAsset == NULL) { |
| fprintf(stderr, "ERROR: unable to load '%s'\n", mName); |
| return false; |
| } else { |
| //printf("--- opened asset '%s'\n", |
| // (const char*) pAsset->getAssetSource()); |
| } |
| AssetStream astr(pAsset); |
| |
| wxImage img(astr); |
| #endif |
| |
| mWidth = img.GetWidth(); |
| mHeight = img.GetHeight(); |
| if (mWidth <= 0 || mHeight <= 0) { |
| /* image failed to load or decode */ |
| fprintf(stderr, "ERROR: unable to load/decode '%s'\n", mName); |
| //delete img; |
| return false; |
| } |
| |
| mpBitmap = new wxBitmap(img); |
| |
| //delete img; |
| |
| return true; |
| } |
| |
| /* |
| * Unload the bitmap. |
| */ |
| bool LoadableImage::UnloadResources(void) |
| { |
| delete mpBitmap; |
| mpBitmap = NULL; |
| return true; |
| } |
| |