satdump/src-core/angelscript/scriptsatdump/bind_image.h

74 lines
2.1 KiB
C
Raw Permalink Normal View History

2025-05-10 11:52:24 +02:00
#pragma once
#include "angelscript/angelscript.h"
#include "image/image.h"
2025-05-10 11:52:24 +02:00
namespace satdump
{
namespace script
{
namespace
{
class CScriptImage
{
public:
// Constructors
CScriptImage()
{
refCount = 1;
img = new image::Image();
}
CScriptImage(int bit_depth, size_t width, size_t height, int channels)
{
refCount = 1;
img = new image::Image(bit_depth, width, height, channels);
}
CScriptImage(image::Image i)
{
refCount = 1;
img = new image::Image();
*img = i;
}
// Memory management
int AddRef() const
{
// Increase counter
return asAtomicInc(refCount);
}
int Release() const
{
// Decrease the ref counter
if (asAtomicDec(refCount) == 0)
{
// Delete this object as no more references to it exists
delete this;
return 0;
}
return refCount;
}
// Copy the stored value from another any object
CScriptImage &operator=(const CScriptImage &other)
{
*img = *other.img;
return *this;
}
protected:
virtual ~CScriptImage() { delete img; }
mutable int refCount;
public:
image::Image *img;
};
static CScriptImage *ScriptImageFactory() { return new CScriptImage(); }
static CScriptImage *ScriptImageFactory2(int bit_depth, size_t width, size_t height, int channels) { return new CScriptImage(bit_depth, width, height, channels); }
} // namespace
} // namespace script
} // namespace satdump