Centralize legacy brush UI bridge
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#include "pch.h"
|
||||
#include "app_core/brush_ui.h"
|
||||
#include "legacy_brush_ui_services.h"
|
||||
#include "log.h"
|
||||
#include "node_panel_stroke.h"
|
||||
#include "canvas.h"
|
||||
@@ -7,137 +8,6 @@
|
||||
#include "app.h"
|
||||
#include "abr.h"
|
||||
|
||||
namespace {
|
||||
|
||||
class LegacyBrushStrokeControlServices final : public pp::app::BrushStrokeControlServices {
|
||||
public:
|
||||
explicit LegacyBrushStrokeControlServices(NodePanelStroke& panel) : panel_(panel) {}
|
||||
|
||||
void set_float_setting(pp::app::BrushStrokeFloatSetting setting, float value) override
|
||||
{
|
||||
auto& brush = *Canvas::I->m_current_brush;
|
||||
switch (setting) {
|
||||
case pp::app::BrushStrokeFloatSetting::tip_size: brush.m_tip_size = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::tip_spacing: brush.m_tip_spacing = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::tip_flow: brush.m_tip_flow = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::tip_opacity: brush.m_tip_opacity = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::tip_angle: brush.m_tip_angle = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::tip_angle_smooth: brush.m_tip_angle_smooth = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::tip_mix: brush.m_tip_mix = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::tip_wet: brush.m_tip_wet = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::tip_noise: brush.m_tip_noise = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::tip_hue: brush.m_tip_hue = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::tip_saturation: brush.m_tip_sat = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::tip_value: brush.m_tip_val = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::jitter_scale: brush.m_jitter_scale = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::jitter_angle: brush.m_jitter_angle = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::jitter_scatter: brush.m_jitter_scatter = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::jitter_flow: brush.m_jitter_flow = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::jitter_opacity: brush.m_jitter_opacity = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::jitter_hue: brush.m_jitter_hue = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::jitter_saturation: brush.m_jitter_sat = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::jitter_value: brush.m_jitter_val = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::jitter_aspect: brush.m_jitter_aspect = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::dual_size: brush.m_dual_size = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::dual_spacing: brush.m_dual_spacing = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::dual_scatter: brush.m_dual_scatter = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::tip_aspect: brush.m_tip_aspect = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::dual_opacity: brush.m_dual_opacity = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::dual_flow: brush.m_dual_flow = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::dual_rotate: brush.m_dual_rotate = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::pattern_scale: brush.m_pattern_scale = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::pattern_brightness: brush.m_pattern_brightness = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::pattern_contrast: brush.m_pattern_contrast = value; break;
|
||||
case pp::app::BrushStrokeFloatSetting::pattern_depth: brush.m_pattern_depth = value; break;
|
||||
}
|
||||
}
|
||||
|
||||
void set_bool_setting(pp::app::BrushStrokeBoolSetting setting, bool value) override
|
||||
{
|
||||
auto& brush = *Canvas::I->m_current_brush;
|
||||
switch (setting) {
|
||||
case pp::app::BrushStrokeBoolSetting::tip_angle_init: brush.m_tip_angle_init = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::tip_angle_follow: brush.m_tip_angle_follow = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::tip_flow_pressure: brush.m_tip_flow_pressure = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::tip_opacity_pressure: brush.m_tip_opacity_pressure = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::tip_size_pressure: brush.m_tip_size_pressure = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::jitter_scatter_both_axis: brush.m_jitter_scatter_bothaxis = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::jitter_aspect_both_axis: brush.m_jitter_aspect_bothaxis = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::jitter_hsv_each_sample: brush.m_jitter_hsv_eachsample = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::tip_invert: brush.m_tip_invert = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::tip_flip_x: brush.m_tip_flipx = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::tip_flip_y: brush.m_tip_flipy = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::pattern_enabled: brush.m_pattern_enabled = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::dual_enabled: brush.m_dual_enabled = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::dual_scatter_both_axis: brush.m_dual_scatter_bothaxis = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::dual_invert: brush.m_dual_invert = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::dual_flip_x: brush.m_dual_flipx = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::dual_flip_y: brush.m_dual_flipy = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::dual_random_flip: brush.m_dual_randflip = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::tip_random_flip_x: brush.m_tip_randflipx = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::tip_random_flip_y: brush.m_tip_randflipy = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::pattern_each_sample: brush.m_pattern_eachsample = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::pattern_invert: brush.m_pattern_invert = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::pattern_flip_x: brush.m_pattern_flipx = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::pattern_flip_y: brush.m_pattern_flipy = value; break;
|
||||
case pp::app::BrushStrokeBoolSetting::pattern_random_offset: brush.m_pattern_rand_offset = value; break;
|
||||
}
|
||||
}
|
||||
|
||||
void set_blend_mode(pp::app::BrushStrokeBlendSetting setting, int blend_mode) override
|
||||
{
|
||||
auto& brush = *Canvas::I->m_current_brush;
|
||||
switch (setting) {
|
||||
case pp::app::BrushStrokeBlendSetting::tip: brush.m_blend_mode = blend_mode; break;
|
||||
case pp::app::BrushStrokeBlendSetting::dual: brush.m_dual_blend_mode = blend_mode; break;
|
||||
case pp::app::BrushStrokeBlendSetting::pattern: brush.m_pattern_blend_mode = blend_mode; break;
|
||||
}
|
||||
}
|
||||
|
||||
void reset_tip_aspect(float value) override
|
||||
{
|
||||
panel_.m_tip_aspect->set_value(value);
|
||||
Canvas::I->m_current_brush->m_tip_aspect = value;
|
||||
}
|
||||
|
||||
void reset_default_brush() override
|
||||
{
|
||||
auto brush = std::make_shared<Brush>();
|
||||
brush->load_tip(
|
||||
panel_.m_brush_popup->get_texture_path(panel_.m_default_brush_index),
|
||||
panel_.m_brush_popup->get_thumb_path(panel_.m_default_brush_index));
|
||||
brush->m_tip_size = 30;
|
||||
brush->m_tip_flow = .9f;
|
||||
brush->m_tip_spacing = .1f;
|
||||
brush->m_tip_opacity = 1.f;
|
||||
Canvas::I->m_current_brush = brush;
|
||||
}
|
||||
|
||||
void update_stroke_controls() override
|
||||
{
|
||||
panel_.update_controls();
|
||||
}
|
||||
|
||||
void refresh_stroke_preview() override
|
||||
{
|
||||
if (panel_.m_preview) {
|
||||
panel_.m_preview->m_brush = Canvas::I->m_current_brush;
|
||||
}
|
||||
}
|
||||
|
||||
void notify_stroke_changed() override
|
||||
{
|
||||
if (panel_.on_stroke_change) {
|
||||
panel_.on_stroke_change(&panel_);
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
NodePanelStroke& panel_;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
Node* NodePanelStroke::clone_instantiate() const
|
||||
{
|
||||
return new NodePanelStroke();
|
||||
@@ -704,8 +574,7 @@ void NodePanelStroke::handle_checkbox(
|
||||
|
||||
void NodePanelStroke::execute_stroke_control_plan(const pp::app::BrushStrokeControlPlan& plan)
|
||||
{
|
||||
LegacyBrushStrokeControlServices services(*this);
|
||||
const auto status = pp::app::execute_brush_stroke_control_plan(plan, services);
|
||||
const auto status = pp::panopainter::execute_legacy_brush_stroke_control_plan(*this, plan);
|
||||
if (!status.ok()) {
|
||||
LOG("Brush stroke control action failed: %s", status.message);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user