diff options
author | Benjamin Haisch | 2008-04-25 11:05:56 +0000 |
---|---|---|
committer | Benjamin Haisch | 2008-04-25 11:05:56 +0000 |
commit | 5540ef2d67301dbce1941eab9507285dc508f5ba (patch) | |
tree | f4bbc20e0691494e666bc958de1d044f415dbac0 /engines | |
parent | 4bcf3ab8233d44ee12d95a9328bec67fc74e1902 (diff) | |
download | scummvm-rg350-5540ef2d67301dbce1941eab9507285dc508f5ba.tar.gz scummvm-rg350-5540ef2d67301dbce1941eab9507285dc508f5ba.tar.bz2 scummvm-rg350-5540ef2d67301dbce1941eab9507285dc508f5ba.zip |
Added FontResource type
svn-id: r31717
Diffstat (limited to 'engines')
-rw-r--r-- | engines/made/resource.cpp | 50 | ||||
-rw-r--r-- | engines/made/resource.h | 25 |
2 files changed, 51 insertions, 24 deletions
diff --git a/engines/made/resource.cpp b/engines/made/resource.cpp index f86c6ce371..cfab28cca5 100644 --- a/engines/made/resource.cpp +++ b/engines/made/resource.cpp @@ -205,33 +205,59 @@ const char *MenuResource::getString(uint index) const { return NULL; } -/* XmidiResource */ +/* FontResource */ -XmidiResource::XmidiResource() : _data(NULL), _size(0) { +FontResource::FontResource() : _data(NULL), _size(0) { } -XmidiResource::~XmidiResource() { +FontResource::~FontResource() { if (_data) delete[] _data; } -void XmidiResource::load(byte *source, int size) { +void FontResource::load(byte *source, int size) { _data = new byte[size]; _size = size; memcpy(_data, source, size); } -/* FontResource */ +int FontResource::getHeight() const { + return _data[0]; +} -FontResource::FontResource() : _data(NULL), _size(0) { +int FontResource::getCharWidth(char c) const { + byte *charData = getCharData(c); + if (charData) + return charData[0]; + else + return 0; } -FontResource::~FontResource() { +byte *FontResource::getChar(char c) const { + byte *charData = getCharData(c); + if (charData) + return charData + 1; + else + return NULL; +} + +byte *FontResource::getCharData(char c) const { + if (c < 28 || c > 255) + return NULL; + return _data + 1 + (c - 28) * (getHeight() + 1); +} + +/* XmidiResource */ + +XmidiResource::XmidiResource() : _data(NULL), _size(0) { +} + +XmidiResource::~XmidiResource() { if (_data) delete[] _data; } -void FontResource::load(byte *source, int size) { +void XmidiResource::load(byte *source, int size) { _data = new byte[size]; _size = size; memcpy(_data, source, size); @@ -301,14 +327,14 @@ MenuResource *ProjectReader::getMenu(int index) { return createResource<MenuResource>(kResMENU, index); } -XmidiResource *ProjectReader::getXmidi(int index) { - return createResource<XmidiResource>(kResXMID, index); -} - FontResource *ProjectReader::getFont(int index) { return createResource<FontResource>(kResFONT, index); } +XmidiResource *ProjectReader::getXmidi(int index) { + return createResource<XmidiResource>(kResXMID, index); +} + void ProjectReader::loadIndex(ResourceSlots *slots) { _fd->readUint32LE(); // skip INDX _fd->readUint32LE(); // skip index size diff --git a/engines/made/resource.h b/engines/made/resource.h index 4e90673f09..93c57818bd 100644 --- a/engines/made/resource.h +++ b/engines/made/resource.h @@ -45,8 +45,8 @@ enum ResourceType { kResSNDS = MKID_BE('SNDS'), kResANIM = MKID_BE('ANIM'), kResMENU = MKID_BE('MENU'), - kResXMID = MKID_BE('XMID'), - kResFONT = MKID_BE('FONT') + kResFONT = MKID_BE('FONT'), + kResXMID = MKID_BE('XMID') }; struct ResourceSlot; @@ -112,23 +112,24 @@ protected: Common::Array<Common::String> _strings; }; -class XmidiResource : public Resource { +class FontResource : public Resource { public: - XmidiResource(); - ~XmidiResource(); + FontResource(); + ~FontResource(); void load(byte *source, int size); - byte *getData() const { return _data; } - int getSize() const { return _size; } + int getHeight() const; + int getCharWidth(char c) const; + byte *getChar(char c) const; protected: byte *_data; int _size; + byte *getCharData(char c) const; }; -// TODO -class FontResource : public Resource { +class XmidiResource : public Resource { public: - FontResource(); - ~FontResource(); + XmidiResource(); + ~XmidiResource(); void load(byte *source, int size); byte *getData() const { return _data; } int getSize() const { return _size; } @@ -160,8 +161,8 @@ public: AnimationResource *getAnimation(int index); SoundResource *getSound(int index); MenuResource *getMenu(int index); - XmidiResource *getXmidi(int index); FontResource *getFont(int index); + XmidiResource *getXmidi(int index); void freeResource(Resource *resource); |