diff --git a/src/gfx/generated_image.cpp b/src/gfx/generated_image.cpp index 5465c16f..8d0ef742 100644 --- a/src/gfx/generated_image.cpp +++ b/src/gfx/generated_image.cpp @@ -441,7 +441,18 @@ Image BuiltInImage::generate(const Options& opt) const { bool BuiltInImage::operator == (const GeneratedImage& that) const { const BuiltInImage* that2 = dynamic_cast(&that); return that2 && name == that2->name; -} +} + +// ----------------------------------------------------------------------------- : ArbitraryImage + +Image ArbitraryImage::generate(const Options& opt) const { + return image; +} +bool ArbitraryImage::operator == (const GeneratedImage& that) const { + const ArbitraryImage* that2 = dynamic_cast(&that); + return that2 && image.IsSameAs(that2->image); +} + // ----------------------------------------------------------------------------- : SymbolToImage diff --git a/src/gfx/generated_image.hpp b/src/gfx/generated_image.hpp index fd14ccd1..d1e78221 100644 --- a/src/gfx/generated_image.hpp +++ b/src/gfx/generated_image.hpp @@ -346,6 +346,19 @@ public: bool operator == (const GeneratedImage& that) const override; private: String name; +}; + +// ----------------------------------------------------------------------------- : Arbitrary + +class ArbitraryImage : public GeneratedImage { +public: + inline ArbitraryImage(const Image image) + : image(image) + {} + Image generate(const Options& opt) const override; + bool operator == (const GeneratedImage& that) const override; +private: + Image image; }; // ----------------------------------------------------------------------------- : SymbolToImage diff --git a/src/script/functions/image.cpp b/src/script/functions/image.cpp index 3e9caf65..1e147eb6 100644 --- a/src/script/functions/image.cpp +++ b/src/script/functions/image.cpp @@ -15,7 +15,8 @@ #include #include #include -#include +#include +#include #include #include @@ -27,6 +28,12 @@ SCRIPT_FUNCTION(to_image) { SCRIPT_PARAM_C(GeneratedImageP, input); return input; } + +SCRIPT_FUNCTION(to_card_image) { + SCRIPT_PARAM(Set*, set); + SCRIPT_PARAM(CardP, input); + return make_intrusive(export_bitmap(set, input).ConvertToImage()); +} // ----------------------------------------------------------------------------- : Image functions @@ -209,7 +216,8 @@ SCRIPT_FUNCTION(built_in_image) { // ----------------------------------------------------------------------------- : Init void init_script_image_functions(Context& ctx) { - ctx.setVariable(_("to_image"), script_to_image); + ctx.setVariable(_("to_image"), script_to_image); + ctx.setVariable(_("to_card_image"), script_to_card_image); ctx.setVariable(_("linear_blend"), script_linear_blend); ctx.setVariable(_("masked_blend"), script_masked_blend); ctx.setVariable(_("combine_blend"), script_combine_blend);