scummvm/common/winexe_ne.h
Bartosz Gentkowski ec24687ce4 DOXYGEN: Add doxygen groups to header files in the common folder
Adding @defgroup and @ingroup doxygen tags into all headers
in the common folder that contain doxygen blocks.

This improves the structure, readability, and findability
of information in the resulting output.

This commit targets purely structure and does not deal with
the content of the currently existing doxygen documentation.
2020-10-04 18:25:50 +02:00

107 lines
2.8 KiB
C++

/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
#ifndef COMMON_WINEXE_NE_H
#define COMMON_WINEXE_NE_H
#include "common/list.h"
#include "common/str.h"
#include "common/winexe.h"
namespace Common {
/**
* @defgroup common_winexe_ne Windows New Executable resources
* @ingroup common_winexe
*
* @brief API for managing Windows New Executable resources.
*
* @{
*/
template<class T> class Array;
class SeekableReadStream;
/**
* A class able to load resources from a Windows New Executable, such
* as cursors, bitmaps, and sounds.
*
* See http://en.wikipedia.org/wiki/New_Executable for more info.
*/
class NEResources : public WinResources {
public:
NEResources();
~NEResources();
/** Clear all information. */
void clear();
/** Load from an EXE file. */
using WinResources::loadFromEXE;
/** Load from a stream. */
bool loadFromEXE(SeekableReadStream *stream);
/** Return a list of resources for a given type. */
const Array<WinResourceID> getIDList(const WinResourceID &type) const;
/** Return a stream to the specified resource (or 0 if non-existent). */
SeekableReadStream *getResource(const WinResourceID &type, const WinResourceID &id);
private:
/** A resource. */
struct Resource {
WinResourceID id;
WinResourceID type; ///< Type of the resource.
uint32 offset; ///< Offset within the EXE.
uint32 size; ///< Size of the data.
uint16 flags;
uint16 handle;
uint16 usage;
};
SeekableReadStream *_exe; ///< Current file.
/** All resources. */
List<Resource> _resources;
/** Read the offset to the resource table. */
uint32 getResourceTableOffset();
/** Read the resource table. */
bool readResourceTable(uint32 offset);
/** Find a specific resource. */
const Resource *findResource(const WinResourceID &type, const WinResourceID &id) const;
/** Read a resource string. */
static String getResourceString(SeekableReadStream &exe, uint32 offset);
};
/** @} */
} // End of namespace Common
#endif