Common::SeekableReadStream *PackageManager::getStream(const Common::String &fileName) { Common::SeekableReadStream *in; Common::ArchiveMemberPtr fileNode = getArchiveMember(normalizePath(fileName, _currentDirectory)); if (!fileNode) return 0; if (!(in = fileNode->createReadStream())) return 0; return in; }
/********************************************************** * Theme setup/initialization *********************************************************/ bool ThemeEngine::init() { // reset everything and reload the graphics _initOk = false; _overlayFormat = _system->getOverlayFormat(); setGraphicsMode(_graphicsMode); if (_screen.pixels && _backBuffer.pixels) { _initOk = true; } // TODO: Instead of hard coding the font here, it should be possible // to specify the fonts to be used for each resolution in the theme XML. if (_screen.w >= 400 && _screen.h >= 300) { _font = FontMan.getFontByUsage(Graphics::FontManager::kBigGUIFont); } else { _font = FontMan.getFontByUsage(Graphics::FontManager::kGUIFont); } // Try to create a Common::Archive with the files of the theme. if (!_themeArchive && !_themeFile.empty()) { Common::FSNode node(_themeFile); if (node.isDirectory()) { _themeArchive = new Common::FSDirectory(node); } else if (_themeFile.matchString("*.zip", true)) { // TODO: Also use "node" directly? // Look for the zip file via SearchMan Common::ArchiveMemberPtr member = SearchMan.getMember(_themeFile); if (member) { _themeArchive = Common::makeZipArchive(member->createReadStream()); if (!_themeArchive) { warning("Failed to open Zip archive '%s'.", member->getDisplayName().c_str()); } } else { _themeArchive = Common::makeZipArchive(node); if (!_themeArchive) { warning("Failed to open Zip archive '%s'.", node.getPath().c_str()); } } } } // Load the theme // We pass the theme file here by default, so the user will // have a descriptive error message. The only exception will // be the builtin theme which has no filename. loadTheme(_themeFile.empty() ? _themeId : _themeFile); return ready(); }
byte *PackageManager::getFile(const Common::String &fileName, uint *fileSizePtr) { const Common::String B25S_EXTENSION(".b25s"); Common::SeekableReadStream *in; if (fileName.hasSuffix(B25S_EXTENSION)) { // Savegame loading logic Common::SaveFileManager *sfm = g_system->getSavefileManager(); Common::InSaveFile *file = sfm->openForLoading( FileSystemUtil::getPathFilename(fileName)); if (!file) { BS_LOG_ERRORLN("Could not load savegame \"%s\".", fileName.c_str()); return 0; } if (fileSizePtr) *fileSizePtr = file->size(); byte *buffer = new byte[file->size()]; file->read(buffer, file->size()); delete file; return buffer; } Common::ArchiveMemberPtr fileNode = getArchiveMember(normalizePath(fileName, _currentDirectory)); if (!fileNode) return 0; if (!(in = fileNode->createReadStream())) return 0; // If the filesize is desired, then output the size if (fileSizePtr) *fileSizePtr = in->size(); // Read the file byte *buffer = new byte[in->size()]; int bytesRead = in->read(buffer, in->size()); delete in; if (!bytesRead) { delete[] buffer; return NULL; } return buffer; }
static GLES8888Texture *loadBuiltinTexture(const char *filename) { Common::ArchiveMemberPtr member = SearchMan.getMember(filename); Common::SeekableReadStream *str = member->createReadStream(); Graphics::TGADecoder dec; dec.loadStream(*str); const void *pixels = dec.getSurface()->getPixels(); GLES8888Texture *ret = new GLES8888Texture(); uint16 w = dec.getSurface()->w; uint16 h = dec.getSurface()->h; uint16 pitch = dec.getSurface()->pitch; ret->allocBuffer(w, h); ret->updateBuffer(0, 0, w, h, pixels, pitch); delete str; return ret; }
Common::SeekableReadStream *BaseFileManager::openPkgFile(const Common::String &filename) { Common::String upcName = filename; upcName.toUppercase(); Common::SeekableReadStream *file = nullptr; // correct slashes for (uint32 i = 0; i < upcName.size(); i++) { if (upcName[(int32)i] == '/') { upcName.setChar('\\', (uint32)i); } } Common::ArchiveMemberPtr entry = _packages.getMember(upcName); if (!entry) { return nullptr; } file = entry->createReadStream(); return file; }
Common::SeekableReadStream *BaseFileManager::openPkgFile(const Common::String &filename) { Common::String upcName = filename; upcName.toUppercase(); Common::SeekableReadStream *file = NULL; char fileName[MAX_PATH_LENGTH]; strcpy(fileName, upcName.c_str()); // correct slashes for (uint32 i = 0; i < upcName.size(); i++) { if (upcName[(int32)i] == '/') { upcName.setChar('\\', (uint32)i); } } Common::ArchiveMemberPtr entry = _packages.getMember(upcName); if (!entry) { return NULL; } file = entry->createReadStream(); return file; }
bool operator()(const Common::ArchiveMemberPtr &l, const Common::ArchiveMemberPtr &r) { return (l->getName().compareToIgnoreCase(r->getName()) > 0); }
bool operator()(const Common::ArchiveMemberPtr &l) { return _labName.compareToIgnoreCase(l->getName()) == 0; }