libscratchcpp
A library for C++ based Scratch project players
Toggle main menu visibility
Loading...
Searching...
No Matches
scratchconfiguration.h
Go to the documentation of this file.
1
// SPDX-License-Identifier: Apache-2.0
2
3
#pragma once
4
5
#include <memory>
6
#include <vector>
7
8
#include "
global.h
"
9
10
namespace
libscratchcpp
11
{
12
13
class
IExtension
;
14
class
IGraphicsEffect
;
15
class
ScratchConfigurationPrivate;
16
18
class
LIBSCRATCHCPP_EXPORT
ScratchConfiguration
19
{
20
public
:
21
ScratchConfiguration
() =
delete
;
22
23
static
void
registerExtension
(std::shared_ptr<IExtension> extension);
24
static
void
removeExtension
(std::shared_ptr<IExtension> extension);
25
static
IExtension
*
getExtension
(
const
std::string &name);
26
28
template
<
class
T>
29
static
IExtension
*
getExtension
()
30
{
31
auto
&extensions = getExtensions();
32
for
(
auto
ext : extensions) {
33
if
(
dynamic_cast<
T *
>
(ext.get()))
34
return
ext.get();
35
}
36
37
return
nullptr
;
38
};
39
40
static
void
registerGraphicsEffect(std::shared_ptr<IGraphicsEffect> effect);
41
static
void
removeGraphicsEffect(
const
std::string &name);
42
static
IGraphicsEffect
*getGraphicsEffect(
const
std::string &name);
43
44
static
const
std::string &version();
45
static
int
majorVersion();
46
static
int
minorVersion();
47
static
int
patchVersion();
48
49
private
:
50
static
const
std::vector<std::shared_ptr<IExtension>> getExtensions();
51
static
std::shared_ptr<ScratchConfigurationPrivate> &getImpl();
52
53
static
inline
std::shared_ptr<ScratchConfigurationPrivate> impl;
54
};
55
56
}
// namespace libscratchcpp
libscratchcpp::IExtension
The IExtension class is an interface for extensions.
Definition
iextension.h:18
libscratchcpp::IGraphicsEffect
The IGraphicsEffects class is an interface for custom graphics effects.
Definition
igraphicseffect.h:14
libscratchcpp::ScratchConfiguration::getExtension
static IExtension * getExtension()
Definition
scratchconfiguration.h:29
libscratchcpp::ScratchConfiguration::getExtension
static IExtension * getExtension(const std::string &name)
Definition
scratchconfiguration.cpp:24
libscratchcpp::ScratchConfiguration::ScratchConfiguration
ScratchConfiguration()=delete
libscratchcpp::ScratchConfiguration::removeExtension
static void removeExtension(std::shared_ptr< IExtension > extension)
Definition
scratchconfiguration.cpp:18
libscratchcpp::ScratchConfiguration::registerExtension
static void registerExtension(std::shared_ptr< IExtension > extension)
Definition
scratchconfiguration.cpp:12
global.h
LIBSCRATCHCPP_EXPORT
#define LIBSCRATCHCPP_EXPORT
Definition
global.h:17
libscratchcpp
The main namespace of the library.
Definition
asset.h:10
include
scratchcpp
scratchconfiguration.h
Generated by
1.17.0