libscratchcpp
A library for C++ based Scratch project players
Loading...
Searching...
No Matches
sprite.h
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2
3#pragma once
4
5#include "target.h"
6
7namespace libscratchcpp
8{
9
10class ISpriteHandler;
11class IGraphicsEffect;
12class SpritePrivate;
13
16 : public Target
17 , public std::enable_shared_from_this<Sprite>
18{
19 public:
26
27 Sprite();
28 Sprite(const Sprite &) = delete;
29
30 void setInterface(ISpriteHandler *newInterface);
31 ISpriteHandler *getInterface() const; // NOTE: This can't be called interface because of... Microsoft... (it wouldn't compile on Windows)
32
33 std::shared_ptr<Sprite> clone();
34 void deleteClone();
35
36 bool isClone() const;
37
38 Sprite *cloneSprite() const;
39 const std::vector<std::shared_ptr<Sprite>> &clones() const;
40
41 bool visible() const;
42 void setVisible(bool newVisible);
43
44 double x() const;
45 void setX(double newX);
46
47 double y() const;
48 void setY(double newY);
49
50 void setPosition(double x, double y);
51
52 bool dragging() const;
53 void startDragging();
54 void stopDragging();
55 void dragToPosition(double x, double y);
56
57 double size() const;
58 void setSize(double newSize);
59
60 void setCostumeIndex(int newCostumeIndex) override;
61
62 int currentCostumeWidth() const override;
63 int currentCostumeHeight() const override;
64
65 double direction() const;
66 void setDirection(double newDirection);
67
68 bool draggable() const;
69 void setDraggable(bool newDraggable);
70
72 std::string rotationStyleStr() const;
73 void setRotationStyle(RotationStyle newRotationStyle);
74 void setRotationStyle(const std::string &newRotationStyle);
75 void setRotationStyle(const char *newRotationStyle);
76
77 void setLayerOrder(int newLayerOrder) override;
78
79 Rect boundingRect() const override;
80 Rect fastBoundingRect() const override;
81 void keepInFence(double newX, double newY, double *fencedX, double *fencedY) const;
82
83 bool touchingPoint(double x, double y) const override;
84 bool touchingColor(Rgb color) const override;
85 bool touchingColor(Rgb color, Rgb mask) const override;
86
87 void setGraphicsEffectValue(IGraphicsEffect *effect, double value) override;
88
89 void clearGraphicsEffects() override;
90
91 private:
92 Target *dataSource() const override;
93 bool touchingClones(const std::vector<Sprite *> &clones) const override;
94 void setXY(double x, double y);
95
96 spimpl::unique_impl_ptr<SpritePrivate> impl;
97};
98
99} // namespace libscratchcpp
The IGraphicsEffects class is an interface for custom graphics effects.
Definition igraphicseffect.h:14
The ISpriteHandler class provides a sprite interface for Scratch project players.
Definition ispritehandler.h:13
Definition rect.h:15
The Sprite class represents a Scratch sprite.
Definition sprite.h:18
const std::vector< std::shared_ptr< Sprite > > & clones() const
Definition sprite.cpp:147
void clearGraphicsEffects() override
Definition sprite.cpp:541
bool draggable() const
Definition sprite.cpp:359
Sprite()
Definition sprite.cpp:20
double x() const
Definition sprite.cpp:179
Sprite * cloneSprite() const
Definition sprite.cpp:141
Rect boundingRect() const override
Definition sprite.cpp:433
void setGraphicsEffectValue(IGraphicsEffect *effect, double value) override
Definition sprite.cpp:525
void setInterface(ISpriteHandler *newInterface)
Definition sprite.cpp:35
void setSize(double newSize)
Definition sprite.cpp:273
bool dragging() const
Definition sprite.cpp:229
void startDragging()
Definition sprite.cpp:235
std::string rotationStyleStr() const
Definition sprite.cpp:377
double size() const
Definition sprite.cpp:267
bool touchingPoint(double x, double y) const override
Definition sprite.cpp:498
void setDirection(double newDirection)
Definition sprite.cpp:338
std::shared_ptr< Sprite > clone()
Definition sprite.cpp:49
void setPosition(double x, double y)
Definition sprite.cpp:215
ISpriteHandler * getInterface() const
Definition sprite.cpp:43
void setCostumeIndex(int newCostumeIndex) override
Definition sprite.cpp:297
void deleteClone()
Definition sprite.cpp:115
void dragToPosition(double x, double y)
Definition sprite.cpp:255
void setVisible(bool newVisible)
Definition sprite.cpp:163
double direction() const
Definition sprite.cpp:332
RotationStyle
Definition sprite.h:21
@ DoNotRotate
Definition sprite.h:24
@ AllAround
Definition sprite.h:22
@ LeftRight
Definition sprite.h:23
Sprite(const Sprite &)=delete
bool visible() const
Definition sprite.cpp:157
void setRotationStyle(RotationStyle newRotationStyle)
Definition sprite.cpp:391
bool touchingColor(Rgb color) const override
Definition sprite.cpp:507
void stopDragging()
Definition sprite.cpp:246
double y() const
Definition sprite.cpp:197
bool isClone() const
Definition sprite.cpp:135
void keepInFence(double newX, double newY, double *fencedX, double *fencedY) const
Definition sprite.cpp:457
void setY(double newY)
Definition sprite.cpp:203
RotationStyle rotationStyle() const
Definition sprite.cpp:371
void setLayerOrder(int newLayerOrder) override
Definition sprite.cpp:424
void setX(double newX)
Definition sprite.cpp:185
int currentCostumeWidth() const override
Definition sprite.cpp:314
void setDraggable(bool newDraggable)
Definition sprite.cpp:365
int currentCostumeHeight() const override
Definition sprite.cpp:323
Rect fastBoundingRect() const override
Definition sprite.cpp:442
Target()
Definition target.cpp:26
#define LIBSCRATCHCPP_EXPORT
Definition global.h:17
The main namespace of the library.
Definition asset.h:10
unsigned int Rgb
Definition value_functions.h:11