Files
android_bootable_recovery/gui/resources.hpp
Ethan Yonker 738be7a3ff Use one mizip for all
The new minzip did not compile in older trees due to needing
mmap64. For older trees we will just use mmap instead. Remove all
files and code pertaining to minzipold. Updater should now build
properly in older trees as well.

Eliminate use of PLATFORM_VERSION in favor of PLATFORM_SDK_VERSION
which should be more consistent and reliable.

Change-Id: I38d2b604a73d1b17a2072c7d60e990b81ece0c10
2014-12-10 11:54:02 -06:00

99 lines
1.9 KiB
C++

// resources.hpp - Base classes for resource management of GUI
#ifndef _RESOURCE_HEADER
#define _RESOURCE_HEADER
#include "../minzip/Zip.h"
// Base Objects
class Resource
{
public:
Resource(xml_node<>* node, ZipArchive* pZip);
virtual ~Resource() {}
public:
virtual void* GetResource(void) = 0;
std::string GetName(void) { return mName; }
private:
std::string mName;
protected:
static int ExtractResource(ZipArchive* pZip, std::string folderName, std::string fileName, std::string fileExtn, std::string destFile);
};
typedef enum {
TOUCH_START = 0,
TOUCH_DRAG = 1,
TOUCH_RELEASE = 2,
TOUCH_HOLD = 3,
TOUCH_REPEAT = 4
} TOUCH_STATE;
class FontResource : public Resource
{
public:
enum Type
{
TYPE_TWRP,
#ifndef TW_DISABLE_TTF
TYPE_TTF,
#endif
};
FontResource(xml_node<>* node, ZipArchive* pZip);
virtual ~FontResource();
public:
virtual void* GetResource(void) { return mFont; }
protected:
void* mFont;
Type m_type;
};
class ImageResource : public Resource
{
public:
ImageResource(xml_node<>* node, ZipArchive* pZip);
virtual ~ImageResource();
public:
virtual void* GetResource(void) { return mSurface; }
protected:
gr_surface mSurface;
};
class AnimationResource : public Resource
{
public:
AnimationResource(xml_node<>* node, ZipArchive* pZip);
virtual ~AnimationResource();
public:
virtual void* GetResource(void) { return mSurfaces.empty() ? NULL : mSurfaces.at(0); }
virtual void* GetResource(int entry) { return mSurfaces.empty() ? NULL : mSurfaces.at(entry); }
virtual int GetResourceCount(void) { return mSurfaces.size(); }
protected:
std::vector<gr_surface> mSurfaces;
};
class ResourceManager
{
public:
ResourceManager(xml_node<>* resList, ZipArchive* pZip);
virtual ~ResourceManager();
void LoadResources(xml_node<>* resList, ZipArchive* pZip);
public:
Resource* FindResource(std::string name);
private:
std::vector<Resource*> mResources;
};
#endif // _RESOURCE_HEADER