1.10
resource.h
1/*
2 * Copyright (C) 2018 Microchip Technology Inc. All rights reserved.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6#ifndef EGT_RESOURCE_H
7#define EGT_RESOURCE_H
8
14#include <cairo.h>
15#include <cstdint>
16#include <egt/detail/meta.h>
17#include <map>
18#include <string>
19#include <vector>
20
21namespace egt
22{
23inline namespace v1
24{
25
36class EGT_API ResourceManager
37{
38public:
39
44
48 bool exists(const char* name) const;
49
55 void add(const char* name, const unsigned char* data, size_t len);
56
60 void add(const char* name, const std::vector<unsigned char>& data);
61
65 void remove(const char* name);
66
70 void clear();
71
75 void clear(const char* name);
76
80 size_t size(const char* name);
81
85 const unsigned char* data(const char* name);
86
90 bool read(const char* name, unsigned char* data,
91 size_t length, size_t offset = 0);
92
94 using ItemArray = std::vector<std::string>;
95
99 EGT_NODISCARD ItemArray list() const;
100
106 void stream_reset(const char* name);
107
111 bool stream_read(const char* name, unsigned char* data, size_t length);
112
113private:
114
116
117 struct ResourceItem;
118
119 using ResourceMap = std::map<std::string, ResourceItem>;
120
121 ResourceMap m_resources;
122};
123
124namespace detail
125{
129cairo_status_t EGT_API read_resource_stream(void* closure, unsigned char* data,
130 unsigned int length);
131}
132
133}
134}
135
136#endif
Manages EGT resource data blobs.
Definition resource.h:37
bool stream_read(const char *name, unsigned char *data, size_t length)
Read starting from internal stream offset.
static ResourceManager & instance()
Get a reference to the ResourceManager instance.
std::vector< std::string > ItemArray
Item array type.
Definition resource.h:94
size_t size(const char *name)
Get the data length of a resource.
bool read(const char *name, unsigned char *data, size_t length, size_t offset=0)
Read data from a resource.
EGT_NODISCARD ItemArray list() const
Get a list of registered resource names.
void remove(const char *name)
Unregister a resource.
void stream_reset(const char *name)
Reset internal read stream offset.
void add(const char *name, const std::vector< unsigned char > &data)
Register a resource as raw data.
void clear(const char *name)
Clear the specified resource by name.
void clear()
Clear all registered resources.
const unsigned char * data(const char *name)
Get a pointer to the in-memory resource data.
bool exists(const char *name) const
void add(const char *name, const unsigned char *data, size_t len)
Register a resource as raw data.
EGT framework namespace.
Definition animation.h:24