コード例 #1
0
ファイル: ImageLoader.cpp プロジェクト: artcom/y60
    ImageLoader::ImageLoader(const string & theFilename,
            PackageManagerPtr thePackageManager,
            const ITextureManagerPtr & theTextureManager,
            unsigned /*theDepth*/) :
        PLBmp(),
        _myFilename(theFilename),
        _myHeaderSize(0),
        _isI60(false),
        _myTextureManager(theTextureManager)
    {
        AC_DEBUG << "ImageLoader::ImageLoader '" << theFilename << "'";
        _myImageMatrix.makeIdentity();
        // Cubemaps are encoded as
        // theFrontFileName + "|" + theRightFileName + "|" + theBackFileName + "|" + theLeftFileName + "|"
        // + theTopFileName + "|" + theBottomFileName;
        vector<string> myFilenames = asl::splitString(theFilename, "|");
        vector<asl::Ptr<ReadableBlockHandle> > myBlocks;

        // Check if files exist
        for (unsigned i = 0; i < myFilenames.size(); ++i) {
            asl::Ptr<ReadableBlockHandle> myBlock;
            if (thePackageManager) {
                myBlock = thePackageManager->readFile(myFilenames[i], "" , true);
            }
#if 1
            // PM: This seems unreasonable, but need to watch out for compat problems
            // fall back to simply try to open the file
            //AC_DEBUG << myBlock << " filename='" << myFilenames[i] << "'";
            if (!myBlock && fileExists(myFilenames[i])) {
                myBlock = asl::Ptr<asl::ReadableBlockHandle>(new asl::AnyReadableBlockHandle(asl::Ptr<asl::ReadableBlock>(new ConstMappedBlock(myFilenames[i])),myFilenames[i]));
            }
#endif
            if (!myBlock) {
                if (thePackageManager) {
                    throw ImageLoaderException(std::string("image file '") + myFilenames[i] + "' not found in " +
                                               thePackageManager->getSearchPath(), PLUS_FILE_LINE);
                } else {
                    throw ImageLoaderException(std::string("image file '") + myFilenames[i] + "' not found in " +
                                               "current directory.", PLUS_FILE_LINE);
                }
            }
            myBlocks.push_back(myBlock);
        }
        if (myBlocks.size() == 1) {
            loadSingleImage(myBlocks[0]);
        } else if (myBlocks.size() == 6) {
            loadCubemap(myBlocks, 1);
        } else {
            throw ImageLoaderException(string("Image ") + theFilename + " has " + as_string(myFilenames.size()) +
                " faces, should be one or six", PLUS_FILE_LINE);
        }
    }
コード例 #2
0
ファイル: ImageLoader.cpp プロジェクト: artcom/y60
 ImageLoader::ImageLoader(asl::Ptr<ReadableBlockHandle> theInputData,
         const std::string & theFileDescription,
         const ITextureManagerPtr & theTextureManager,
         unsigned /*theDepth*/) :
     PLBmp(),
     _myFilename(theFileDescription.empty() ? "<asl::Block>" : theFileDescription),
     _myHeaderSize(0),
     _isI60(false),
     _myTextureManager(theTextureManager)
 {
     AC_DEBUG << "ImageLoader::ImageLoader '" << _myFilename << "'";
     _myImageMatrix.makeIdentity();
     loadSingleImage(theInputData);
 }
コード例 #3
0
ファイル: WrapperSDL.cpp プロジェクト: B-Kedziora/LTBML
void WrapperSDL::SDL_Wrapper_init(SDL_Renderer* renderer)
{
    if(r == nullptr)
    {
        r = loadSingleImage("highlight");
    }
    if (highlight == nullptr)
    {
        highlight = SDL_CreateTextureFromSurface(renderer, r);
    }
    SDL_FreeSurface(r);

    font = TTF_OpenFont("verdana.ttf", 28);
    font2 = TTF_OpenFont("verdana.ttf", 20);
    font3 = TTF_OpenFont("verdana.ttf", 128);
    fontColor.a=0;
    fontColor.r=255;
    fontColor.b=255;
    fontColor.g=255;
}