このページでは

C

ファイルシステムの統合

Qt Quick Ultralite 向けのファイルシステム統合の実装

ファイルシステムからリソースを読み込むには、実装をアプリケーションに登録する必要があります。その実装は、Qul::PlatformInterface::Filesystem およびQul::PlatformInterface::File クラスを実装している必要があります。FatFS ファイルシステムの実装例は、examples/fileloading/fatfs/fatfsfilesystem.hにあります

以下のコードは、これらのクラスの実装例を示しています:

class MyFile : public Qul::PlatformInterface::File
{
public:
    MyFile(fileHandle) {...}
    uint64_t size();
    int read(unsigned char *outputBuffer, uint64_t startOffset, unsigned int size);
    int close();
}
uint64_t MyFile::size()
{
    return file_size;
}
int MyFile::read(unsigned char *outputBuffer, uint64_t startOffset, unsigned int readSize)
{
    int bytesRead;

    if (file_seek(startOffset) != OK)
        return -1;

    if (file_read(outputBuffer, readSize, &bytesRead) != OK)
        return -1;

    return bytesRead;
}
int MyFile::close()
{
    return file_close();
}

ファイルをアプリケーション API と統合するには、ファイルシステムでラップする必要があります。

class MyFilesystem : public Qul::PlatformInterface::Filesystem
{
public:
    Qul::PlatformInterface::File *open(const char *fileName, Qul::PlatformInterface::File::Mode)
    {
        if (file_open(fileName, mode) != OK)
            return NULL;

        return Qul::PlatformInterface::qul_new<MyFile>(handle);
    }
};

実装したファイルシステムをQt Quick Ultraliteに認識させるには、アプリケーションに登録する必要があります。

static MyFilesystem filesystem;
Qul::Application::addFilesystem(&filesystem);

Qt Quick Ultraliteは、最初のファイルシステムがファイルインスタンスを返すまで、登録されたすべてのファイルシステムを順に処理します。

特定の Qt ライセンスの下で利用可能です。
詳細はこちらをご覧ください。