⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagesequence.cpp

📁 最新osg包
💻 CPP
字号:
#include "osg/ImageSequence"#include "osgDB/Registry"#include "osgDB/Input"#include "osgDB/Output"using namespace osg;using namespace osgDB;// forward declare functions to use later.bool ImageSequence_readLocalData(Object& obj, Input& fr);bool ImageSequence_writeLocalData(const Object& obj, Output& fw);// register the read and write functions with the osgDB::Registry.RegisterDotOsgWrapperProxy g_ImageSequenceProxy(    new osg::ImageSequence,    "ImageSequence",    "Object ImageSequence",    &ImageSequence_readLocalData,    &ImageSequence_writeLocalData);bool ImageSequence_readLocalData(Object& obj, Input& fr){    bool iteratorAdvanced = false;    ImageSequence& is = static_cast<ImageSequence&>(obj);    unsigned int numFilesToPreLoad = 1;    std::string modeStr;    if (fr.read("Mode",modeStr))    {        if (modeStr=="PRE_LOAD_ALL_IMAGES")         {            is.setMode(osg::ImageSequence::PRE_LOAD_ALL_IMAGES);        }        else if (modeStr=="PAGE_AND_RETAIN_IMAGES")        {            is.setMode(osg::ImageSequence::PAGE_AND_RETAIN_IMAGES);        }        else if (modeStr=="PAGE_AND_DISCARD_USED_IMAGES")        {            is.setMode(osg::ImageSequence::PAGE_AND_DISCARD_USED_IMAGES);        }    }        double length;    if (fr.read("Duration", length) || fr.read("Length", length) )    {        is.setLength(length);    }        if (fr.matchSequence("FileNames {"))    {        fr += 2;        iteratorAdvanced = true;        int entry = fr[0].getNoNestedBrackets();        while (!fr.eof() && fr[0].getNoNestedBrackets() >= entry)        {            if (fr[0].getStr())            {                is.addImageFile(fr[0].getStr());            }            ++fr;        }    }    if (fr.matchSequence("Images {"))    {        fr += 2;        iteratorAdvanced = true;        int entry = fr[0].getNoNestedBrackets();        while (!fr.eof() && fr[0].getNoNestedBrackets() >= entry)        {            if (fr[0].getStr())            {                osg::ref_ptr<osg::Image> image = fr.readImage(fr[0].getStr());                if (image.valid()) is.addImage(image.get());            }            ++fr;        }    }    return iteratorAdvanced;}bool ImageSequence_writeLocalData(const Object& obj, Output& fw){    const ImageSequence& is = static_cast<const ImageSequence&>(obj);    // no current image writing code here     // as it is all handled by osg::Registry::writeImage() via plugins.    switch(is.getMode())    {            case(osg::ImageSequence::PRE_LOAD_ALL_IMAGES):             fw.indent()<<"Mode PRE_LOAD_ALL_IMAGES"<<std::endl;             break;        case(osg::ImageSequence::PAGE_AND_RETAIN_IMAGES):            fw.indent()<<"Mode PAGE_AND_RETAIN_IMAGES"<<std::endl;             break;        case(osg::ImageSequence::PAGE_AND_DISCARD_USED_IMAGES):            fw.indent()<<"Mode PAGE_AND_DISCARD_USED_IMAGES"<<std::endl;             break;    }    fw.indent()<<"Length "<<is.getLength()<<std::endl;        if (!is.getFileNames().empty())    {        fw.indent()<<"FileNames {"<<std::endl;        fw.moveIn();        const osg::ImageSequence::FileNames& names = is.getFileNames();        for(osg::ImageSequence::FileNames::const_iterator itr = names.begin();            itr != names.end();            ++itr)        {            fw.indent()<<fw.wrapString(*itr)<<std::endl;        }                fw.moveOut();        fw.indent()<<"}"<<std::endl;    }    else     {        fw.indent()<<"Images {"<<std::endl;        fw.moveIn();                const osg::ImageSequence::Images& images = is.getImages();        for(osg::ImageSequence::Images::const_iterator itr = images.begin();            itr != images.end();            ++itr)        {            if (!(*itr)->getFileName().empty()) fw.indent()<<fw.wrapString((*itr)->getFileName())<<std::endl;        }                fw.moveOut();        fw.indent()<<"}"<<std::endl;    }        return true;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -