mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 12:07:45 +00:00
PixelPaint: Reference-count filters
For multi-threading filter application, shared ownership is much easier to work with.
This commit is contained in:
parent
5f76ab9836
commit
056b081e2d
3 changed files with 4 additions and 4 deletions
|
@ -32,7 +32,7 @@ ErrorOr<NonnullRefPtr<GUI::TreeViewModel>> create_filter_tree_model(ImageEditor*
|
||||||
auto filter_tree_model = GUI::TreeViewModel::create();
|
auto filter_tree_model = GUI::TreeViewModel::create();
|
||||||
|
|
||||||
auto add_filter_node = [&]<typename FilterType>(GUI::TreeViewModel::Node& node) {
|
auto add_filter_node = [&]<typename FilterType>(GUI::TreeViewModel::Node& node) {
|
||||||
auto filter = adopt_own(*new FilterType(editor));
|
auto filter = make_ref_counted<FilterType>(editor);
|
||||||
(void)node.add_node<FilterNode>(filter->filter_name(), filter_icon, move(filter));
|
(void)node.add_node<FilterNode>(filter->filter_name(), filter_icon, move(filter));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ namespace PixelPaint {
|
||||||
|
|
||||||
class FilterNode final : public GUI::TreeViewModel::Node {
|
class FilterNode final : public GUI::TreeViewModel::Node {
|
||||||
public:
|
public:
|
||||||
FilterNode(String text, Optional<GUI::Icon> icon, Node* parent_node, NonnullOwnPtr<Filter> filter)
|
FilterNode(String text, Optional<GUI::Icon> icon, Node* parent_node, NonnullRefPtr<Filter> filter)
|
||||||
: Node(move(text), move(icon), parent_node)
|
: Node(move(text), move(icon), parent_node)
|
||||||
, m_filter(move(filter))
|
, m_filter(move(filter))
|
||||||
{
|
{
|
||||||
|
@ -26,7 +26,7 @@ public:
|
||||||
Filter& filter() { return *m_filter; }
|
Filter& filter() { return *m_filter; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
NonnullOwnPtr<Filter> m_filter;
|
NonnullRefPtr<Filter> m_filter;
|
||||||
};
|
};
|
||||||
|
|
||||||
ErrorOr<NonnullRefPtr<GUI::TreeViewModel>> create_filter_tree_model(ImageEditor*);
|
ErrorOr<NonnullRefPtr<GUI::TreeViewModel>> create_filter_tree_model(ImageEditor*);
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
namespace PixelPaint {
|
namespace PixelPaint {
|
||||||
|
|
||||||
class Filter {
|
class Filter : public RefCounted<Filter> {
|
||||||
public:
|
public:
|
||||||
virtual void apply() const;
|
virtual void apply() const;
|
||||||
virtual void apply(Gfx::Bitmap& target_bitmap, Gfx::Bitmap const& source_bitmap) const = 0;
|
virtual void apply(Gfx::Bitmap& target_bitmap, Gfx::Bitmap const& source_bitmap) const = 0;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue