本文整理汇总了C++中common::Archive::hasFile方法的典型用法代码示例。如果您正苦于以下问题:C++ Archive::hasFile方法的具体用法?C++ Archive::hasFile怎么用?C++ Archive::hasFile使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类common::Archive
的用法示例。
在下文中一共展示了Archive::hasFile方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: themeConfigUsable
bool ThemeEngine::themeConfigUsable(const Common::FSNode &node, Common::String &themeName) {
Common::File stream;
bool foundHeader = false;
if (node.getName().matchString("*.zip", true) && !node.isDirectory()) {
Common::Archive *zipArchive = Common::makeZipArchive(node);
if (zipArchive && zipArchive->hasFile("THEMERC")) {
// Open THEMERC from the ZIP file.
stream.open("THEMERC", *zipArchive);
}
// Delete the ZIP archive again. Note: This only works because
// stream.open() only uses ZipArchive::createReadStreamForMember,
// and that in turn happens to read all the data for a given
// archive member into a memory block. So there will be no dangling
// reference to zipArchive anywhere. This could change if we
// ever modify ZipArchive::createReadStreamForMember.
delete zipArchive;
} else if (node.isDirectory()) {
Common::FSNode headerfile = node.getChild("THEMERC");
if (!headerfile.exists() || !headerfile.isReadable() || headerfile.isDirectory())
return false;
stream.open(headerfile);
}
if (stream.isOpen()) {
Common::String stxHeader = stream.readLine();
foundHeader = themeConfigParseHeader(stxHeader, themeName);
}
return foundHeader;
}
示例2: getArchiveMember
/**
* Scans through the archive list for a specified file
*/
Common::ArchiveMemberPtr PackageManager::getArchiveMember(const Common::String &fileName) {
// Loop through checking each archive
Common::List<ArchiveEntry *>::iterator i;
for (i = _archiveList.begin(); i != _archiveList.end(); ++i) {
if (!fileName.hasPrefix((*i)->_mountPath)) {
// The mount path is in different subtree. Skipping
continue;
}
// Look into the archive for the desired file
Common::Archive *archiveFolder = (*i)->archive;
// Construct relative path
Common::String resPath(&fileName.c_str()[(*i)->_mountPath.size()]);
if (archiveFolder->hasFile(resPath)) {
return archiveFolder->getMember(resPath);
}
}
return Common::ArchiveMemberPtr();
}
示例3: load
/* load the keyboard into memory */
bool PSPKeyboard::load() {
DEBUG_ENTER_FUNC();
if (_init) {
PSP_DEBUG_PRINT("keyboard already loaded into memory\n");
return true;
}
// For the shell, we must use a hack
#ifdef PSP_KB_SHELL
Common::FSNode node(PSP_KB_SHELL_PATH);
#else /* normal mode */
Common::FSNode node("."); // Look in current directory
#endif
PSP_DEBUG_PRINT("path[%s]\n", node.getPath().c_str());
Common::Archive *fileArchive = NULL;
Common::Archive *zipArchive = NULL;
Common::SeekableReadStream * file = 0;
if (node.getChild("kbd").exists() && node.getChild("kbd").isDirectory()) {
PSP_DEBUG_PRINT("found directory ./kbd\n");
fileArchive = new Common::FSDirectory(node.getChild("kbd"));
}
if (node.getChild("kbd.zip").exists()) {
PSP_DEBUG_PRINT("found kbd.zip\n");
zipArchive = Common::makeZipArchive(node.getChild("kbd.zip"));
}
int i;
// Loop through all png images
for (i = 0; i < guiStringsSize; i++) {
PSP_DEBUG_PRINT("Opening %s.\n", _guiStrings[i]);
// Look for the file in the kbd directory
if (fileArchive && fileArchive->hasFile(_guiStrings[i])) {
PSP_DEBUG_PRINT("found it in kbd directory.\n");
file = fileArchive->createReadStreamForMember(_guiStrings[i]);
if (!file) {
PSP_ERROR("Can't open kbd/%s for keyboard. No keyboard will load.\n", _guiStrings[i]);
goto ERROR;
}
}
// We didn't find it. Look for it in the zip file
else if (zipArchive && zipArchive->hasFile(_guiStrings[i])) {
PSP_DEBUG_PRINT("found it in kbd.zip.\n");
file = zipArchive->createReadStreamForMember(_guiStrings[i]);
if (!file) {
PSP_ERROR("Can't open %s in kbd.zip for keyboard. No keyboard will load.\n", _guiStrings[i]);
goto ERROR;
}
} else { // Couldn't find the file
PSP_ERROR("Can't find %s for keyboard. No keyboard will load.\n", _guiStrings[i]);
goto ERROR;
}
PngLoader image(file, _buffers[i], _palettes[i]);
if (image.allocate() != PngLoader::OK) {
PSP_ERROR("Failed to allocate memory for keyboard image %s\n", _guiStrings[i]);
goto ERROR;
}
if (!image.load()) {
PSP_ERROR("Failed to load image from file %s\n", _guiStrings[i]);
goto ERROR;
}
delete file;
} /* for loop */
_init = true;
delete fileArchive;
delete zipArchive;
return true;
ERROR:
delete file;
delete fileArchive;
delete zipArchive;
for (int j = 0; j < i; j++) {
_buffers[j].deallocate();
_palettes[j].deallocate();
}
_init = false;
return false;
}
示例4: loadFont
bool StyledTTFont::loadFont(const Common::String &fontName, int32 point) {
Common::String newFontName;
if (fontName.matchString("*times new roman*", true) || fontName.matchString("*times*", true)) {
if ((_style & (STTF_BOLD | STTF_ITALIC)) == (STTF_BOLD | STTF_ITALIC))
newFontName = "timesbi.ttf";
else if (_style & STTF_BOLD)
newFontName = "timesbd.ttf";
else if (_style & STTF_ITALIC)
newFontName = "timesi.ttf";
else
newFontName = "times.ttf";
} else if (fontName.matchString("*courier new*", true) || fontName.matchString("*courier*", true) || fontName.matchString("*ZorkDeath*", true)) {
if ((_style & (STTF_BOLD | STTF_ITALIC)) == (STTF_BOLD | STTF_ITALIC))
newFontName = "courbi.ttf";
else if (_style & STTF_BOLD)
newFontName = "courbd.ttf";
else if (_style & STTF_ITALIC)
newFontName = "couri.ttf";
else
newFontName = "cour.ttf";
} else if (fontName.matchString("*century schoolbook*", true)) {
if ((_style & (STTF_BOLD | STTF_ITALIC)) == (STTF_BOLD | STTF_ITALIC))
newFontName = "censcbkbi.ttf";
else if (_style & STTF_BOLD)
newFontName = "censcbkbd.ttf";
else if (_style & STTF_ITALIC)
newFontName = "censcbki.ttf";
else
newFontName = "censcbk.ttf";
} else if (fontName.matchString("*garamond*", true)) {
if ((_style & (STTF_BOLD | STTF_ITALIC)) == (STTF_BOLD | STTF_ITALIC))
newFontName = "garabi.ttf";
else if (_style & STTF_BOLD)
newFontName = "garabd.ttf";
else if (_style & STTF_ITALIC)
newFontName = "garai.ttf";
else
newFontName = "gara.ttf";
} else if (fontName.matchString("*arial*", true) || fontName.matchString("*ZorkNormal*", true)) {
if ((_style & (STTF_BOLD | STTF_ITALIC)) == (STTF_BOLD | STTF_ITALIC))
newFontName = "arialbi.ttf";
else if (_style & STTF_BOLD)
newFontName = "arialbd.ttf";
else if (_style & STTF_ITALIC)
newFontName = "ariali.ttf";
else
newFontName = "arial.ttf";
} else {
debug("Could not identify font: %s. Reverting to Arial", fontName.c_str());
newFontName = "arial.ttf";
}
bool sharp = (_style & STTF_SHARP) == STTF_SHARP;
Common::File *file = _engine->getSearchManager()->openFile(newFontName);
if (!file) {
Common::SeekableReadStream *themeFile = nullptr;
if (ConfMan.hasKey("themepath")) {
Common::FSNode themePath(ConfMan.get("themepath"));
if (themePath.exists()) {
Common::FSNode scummModern = themePath.getChild("scummmodern.zip");
if (scummModern.exists()) {
themeFile = scummModern.createReadStream();
}
}
}
if (!themeFile) { // Fallback : Search for ScummModern.zip in SearchMan.
themeFile = SearchMan.createReadStreamForMember("scummmodern.zip");
}
if (themeFile) {
Common::Archive *themeArchive = Common::makeZipArchive(themeFile);
if (themeArchive->hasFile("FreeSans.ttf")) {
Common::SeekableReadStream *stream = nullptr;
stream = themeArchive->createReadStreamForMember("FreeSans.ttf");
Graphics::Font *_newFont = Graphics::loadTTFFont(*stream, point, 60, (sharp ? Graphics::kTTFRenderModeMonochrome : Graphics::kTTFRenderModeNormal)); // 66 dpi for 640 x 480 on 14" display
if (_newFont) {
if (!_font)
delete _font;
_font = _newFont;
}
if (stream)
delete stream;
}
delete themeArchive;
themeArchive = nullptr;
}
} else {
Graphics::Font *_newFont = Graphics::loadTTFFont(*file, point, 60, (sharp ? Graphics::kTTFRenderModeMonochrome : Graphics::kTTFRenderModeNormal)); // 66 dpi for 640 x 480 on 14" display
if (_newFont) {
if (!_font)
delete _font;
_font = _newFont;
}
delete file;
//.........这里部分代码省略.........