Skip to content

Commit 21c61ca

Browse files
committed
Add data size to asset data info and use void ptr
1 parent e35c3db commit 21c61ca

File tree

15 files changed

+39
-26
lines changed

15 files changed

+39
-26
lines changed

include/scratchcpp/asset.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,12 @@ class LIBSCRATCHCPP_EXPORT Asset : public Entity
2828

2929
const std::string &dataFormat() const;
3030

31-
const char *data() const;
32-
void setData(const char *data);
31+
const void *data() const;
32+
unsigned int dataSize() const;
33+
void setData(unsigned int size, void *data);
3334

3435
protected:
35-
virtual void processData(const char *data) { }
36+
virtual void processData(unsigned int size, void *data) { }
3637

3738
private:
3839
spimpl::unique_impl_ptr<AssetPrivate> impl;

include/scratchcpp/costume.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class LIBSCRATCHCPP_EXPORT Costume : public Asset
4343
Broadcast *broadcast();
4444

4545
protected:
46-
void processData(const char *data) override;
46+
void processData(unsigned int size, void *data) override;
4747

4848
private:
4949
spimpl::unique_impl_ptr<CostumePrivate> impl;

include/scratchcpp/iimageformat.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class LIBSCRATCHCPP_EXPORT IImageFormat
1717
virtual ~IImageFormat() { }
1818

1919
/*! Sets the image data (buffer). */
20-
virtual void setData(const char *data) = 0;
20+
virtual void setData(unsigned int size, void *data) = 0;
2121

2222
/*! Returns the width of the image. */
2323
virtual unsigned int width() const = 0;

src/imageformats/stub/imageformatstub.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ ImageFormatStub::ImageFormatStub()
99
{
1010
}
1111

12-
void ImageFormatStub::setData(const char *)
12+
void ImageFormatStub::setData(unsigned int size, void *)
1313
{
1414
}
1515

src/imageformats/stub/imageformatstub.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class ImageFormatStub : public IImageFormat
1212
public:
1313
ImageFormatStub();
1414

15-
void setData(const char *) override;
15+
void setData(unsigned int size, void *) override;
1616

1717
unsigned int width() const override;
1818
unsigned int height() const override;

src/internal/scratch3reader.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,8 +212,8 @@ bool Scratch3Reader::load()
212212
costume->setRotationCenterY(jsonCostume["rotationCenterY"]);
213213

214214
void *data;
215-
m_zipReader->readFile(costume->fileName(), &data);
216-
costume->setData(static_cast<char *>(data));
215+
unsigned int size = m_zipReader->readFile(costume->fileName(), &data);
216+
costume->setData(size, data);
217217

218218
target->addCostume(costume);
219219
}

src/scratch/asset.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,21 @@ const std::string &Asset::dataFormat() const
4040
}
4141

4242
/*! Returns the asset data. */
43-
const char *Asset::data() const
43+
const void *Asset::data() const
4444
{
4545
return impl->data;
4646
}
4747

48+
/*! Returns the size of the asset data. */
49+
unsigned int Asset::dataSize() const
50+
{
51+
return impl->dataSize;
52+
}
53+
4854
/*! Sets the asset data. */
49-
void Asset::setData(const char *data)
55+
void Asset::setData(unsigned int size, void *data)
5056
{
57+
impl->dataSize = size;
5158
impl->data = data;
52-
processData(data);
59+
processData(size, data);
5360
}

src/scratch/asset_p.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ struct AssetPrivate
1717
std::string name;
1818
std::string dataFormat;
1919
std::string fileName;
20-
const char *data = nullptr;
20+
const void *data = nullptr;
21+
unsigned int dataSize = 0;
2122
};
2223

2324
} // namespace libscratchcpp

src/scratch/costume.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,9 @@ Broadcast *Costume::broadcast()
112112
return &impl->broadcast;
113113
}
114114

115-
void Costume::processData(const char *data)
115+
void Costume::processData(unsigned int size, void *data)
116116
{
117-
impl->image->setData(data);
117+
impl->image->setData(size, data);
118118
impl->freeImage();
119119
impl->updateImage();
120120
}

test/assets/asset_test.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,10 @@ TEST(AssetTest, Data)
2828
TestAsset asset;
2929
ASSERT_EQ(asset.data(), nullptr);
3030

31-
static const char *data = "abcd";
32-
asset.setData(data);
31+
static char data[5] = "abcd";
32+
asset.setData(5, data);
3333
ASSERT_EQ(asset.data(), data);
34+
ASSERT_EQ(asset.size, 5);
3435
ASSERT_EQ(asset.processedData, data);
3536
ASSERT_EQ(asset.callCount, 1);
3637
}

0 commit comments

Comments
 (0)