feat: initial implementation for to_card_image() function (closes #33)

This commit is contained in:
Brendan Hagan
2022-07-27 23:02:01 -04:00
parent 6c5b6a0c4a
commit 0b22b17153
3 changed files with 35 additions and 3 deletions
+11
View File
@@ -443,6 +443,17 @@ bool BuiltInImage::operator == (const GeneratedImage& that) const {
return that2 && name == that2->name; 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<const ArbitraryImage*>(&that);
return that2 && image.IsSameAs(that2->image);
}
// ----------------------------------------------------------------------------- : SymbolToImage // ----------------------------------------------------------------------------- : SymbolToImage
SymbolToImage::SymbolToImage(bool is_local, const LocalFileName& filename, Age age, const SymbolVariationP& variation) SymbolToImage::SymbolToImage(bool is_local, const LocalFileName& filename, Age age, const SymbolVariationP& variation)
+13
View File
@@ -348,6 +348,19 @@ private:
String name; 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 // ----------------------------------------------------------------------------- : SymbolToImage
/// Use a symbol as an image /// Use a symbol as an image
+8
View File
@@ -16,6 +16,7 @@
#include <data/stylesheet.hpp> #include <data/stylesheet.hpp>
#include <data/symbol.hpp> #include <data/symbol.hpp>
#include <data/field/symbol.hpp> #include <data/field/symbol.hpp>
#include <data/format/formats.hpp>
#include <gfx/generated_image.hpp> #include <gfx/generated_image.hpp>
#include <render/symbol/filter.hpp> #include <render/symbol/filter.hpp>
@@ -28,6 +29,12 @@ SCRIPT_FUNCTION(to_image) {
return input; return input;
} }
SCRIPT_FUNCTION(to_card_image) {
SCRIPT_PARAM(Set*, set);
SCRIPT_PARAM(CardP, input);
return make_intrusive<ArbitraryImage>(export_bitmap(set, input).ConvertToImage());
}
// ----------------------------------------------------------------------------- : Image functions // ----------------------------------------------------------------------------- : Image functions
SCRIPT_FUNCTION(linear_blend) { SCRIPT_FUNCTION(linear_blend) {
@@ -210,6 +217,7 @@ SCRIPT_FUNCTION(built_in_image) {
void init_script_image_functions(Context& ctx) { 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(_("linear_blend"), script_linear_blend);
ctx.setVariable(_("masked_blend"), script_masked_blend); ctx.setVariable(_("masked_blend"), script_masked_blend);
ctx.setVariable(_("combine_blend"), script_combine_blend); ctx.setVariable(_("combine_blend"), script_combine_blend);