libscratchcpp
A library for C++ based Scratch project players
Loading...
Searching...
No Matches
monitor.h
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2
3#pragma once
4
5#include <scratchcpp/entity.h>
6
7#include <vector>
8
9namespace libscratchcpp
10{
11
12class IMonitorHandler;
13class Block;
14class Script;
15class IExtension;
16class Sprite;
17class Value;
18class Rect;
19class MonitorPrivate;
20
23{
24 public:
25 friend class Engine;
26
27 enum class Mode
28 {
33 };
34
35 Monitor(const std::string &id, const std::string &opcode);
36 Monitor(const Monitor &) = delete;
37
38 void setInterface(IMonitorHandler *iface);
39
40 const std::string &name() const;
41 void setName(const std::string &name);
42
43 Mode mode() const;
44 void setMode(Mode mode);
45
46 std::shared_ptr<Block> block() const;
47
48 std::shared_ptr<Script> script() const;
49 void setScript(std::shared_ptr<Script> script);
50
51 IExtension *extension() const;
53
54 Sprite *sprite() const;
55 void setSprite(Sprite *sprite);
56
57 const std::string &opcode() const;
58
59 void updateValue(const Value &value);
60
62 void changeValue(const Value &newValue);
63
64 unsigned int width() const;
65 void setWidth(unsigned int width);
66
67 unsigned int height() const;
68 void setHeight(unsigned int height);
69
70 int x() const;
71 void setX(int x);
72
73 int y() const;
74 void setY(int y);
75
76 bool visible() const;
77 void setVisible(bool visible);
78
79 double sliderMin() const;
80 void setSliderMin(double sliderMin);
81
82 double sliderMax() const;
83 void setSliderMax(double sliderMax);
84
85 bool discrete() const;
86 void setDiscrete(bool discrete);
87
88 bool needsAutoPosition() const;
89 void autoPosition(const std::vector<std::shared_ptr<Monitor>> &allMonitors);
90
91 private:
92 static bool monitorRectsIntersect(const Rect &a, const Rect &b);
93
94 spimpl::unique_impl_ptr<MonitorPrivate> impl;
95};
96
97} // namespace libscratchcpp
The Block class represents a Scratch block.
Definition block.h:24
Entity(const std::string &id)
Definition entity.cpp:10
The IExtension class is an interface for extensions.
Definition iextension.h:18
Definition imonitorhandler.h:14
The Monitor class represents a stage monitor.
Definition monitor.h:23
Monitor(const Monitor &)=delete
void setHeight(unsigned int height)
Definition monitor.cpp:170
int y() const
Definition monitor.cpp:192
unsigned int width() const
Definition monitor.cpp:152
void setY(int y)
Definition monitor.cpp:198
void changeValue(const Value &newValue)
Definition monitor.cpp:142
bool visible() const
Definition monitor.cpp:208
void setValueChangeFunction(MonitorChangeFunc f)
Definition monitor.cpp:132
friend class Engine
Definition monitor.h:25
void setSprite(Sprite *sprite)
Definition monitor.cpp:107
void updateValue(const Value &value)
Definition monitor.cpp:122
void setMode(Mode mode)
Definition monitor.cpp:57
void setVisible(bool visible)
Definition monitor.cpp:214
void setSliderMin(double sliderMin)
Definition monitor.cpp:229
const std::string & name() const
Definition monitor.cpp:39
void autoPosition(const std::vector< std::shared_ptr< Monitor > > &allMonitors)
Definition monitor.cpp:268
void setName(const std::string &name)
Definition monitor.cpp:45
void setExtension(IExtension *extension)
Definition monitor.cpp:90
IExtension * extension() const
Definition monitor.cpp:84
void setSliderMax(double sliderMax)
Definition monitor.cpp:241
bool discrete() const
Definition monitor.cpp:247
Mode
Definition monitor.h:28
@ Slider
Definition monitor.h:31
@ Large
Definition monitor.h:30
@ List
Definition monitor.h:32
@ Default
Definition monitor.h:29
const std::string & opcode() const
Definition monitor.cpp:113
void setX(int x)
Definition monitor.cpp:182
unsigned int height() const
Definition monitor.cpp:164
Monitor(const std::string &id, const std::string &opcode)
Definition monitor.cpp:20
void setInterface(IMonitorHandler *iface)
Definition monitor.cpp:27
std::shared_ptr< Script > script() const
Definition monitor.cpp:69
void setScript(std::shared_ptr< Script > script)
Definition monitor.cpp:75
int x() const
Definition monitor.cpp:176
double sliderMax() const
Definition monitor.cpp:235
Mode mode() const
Definition monitor.cpp:51
std::shared_ptr< Block > block() const
Definition monitor.cpp:63
void setDiscrete(bool discrete)
Definition monitor.cpp:253
bool needsAutoPosition() const
Definition monitor.cpp:259
void setWidth(unsigned int width)
Definition monitor.cpp:158
Sprite * sprite() const
Definition monitor.cpp:96
double sliderMin() const
Definition monitor.cpp:223
Definition rect.h:15
The Script class represents a compiled Scratch script.
Definition script.h:23
The Sprite class represents a Scratch sprite.
Definition sprite.h:18
The Value class represents a Scratch value.
Definition value.h:22
#define LIBSCRATCHCPP_EXPORT
Definition global.h:17
The main namespace of the library.
Definition asset.h:10
void(*)(Block *, const Value &newValue) MonitorChangeFunc
Definition global.h:50