diff --git a/src/common/serialization/vst3/plug-view-proxy.cpp b/src/common/serialization/vst3/plug-view-proxy.cpp index d873367a..26275736 100644 --- a/src/common/serialization/vst3/plug-view-proxy.cpp +++ b/src/common/serialization/vst3/plug-view-proxy.cpp @@ -23,11 +23,14 @@ Vst3PlugViewProxy::ConstructArgs::ConstructArgs( size_t owner_instance_id) : owner_instance_id(owner_instance_id), plug_view_args(object), - parameter_finder_args(object) {} + parameter_finder_args(object), + plug_view_content_scale_support_args(object) {} Vst3PlugViewProxy::Vst3PlugViewProxy(const ConstructArgs&& args) : YaPlugView(std::move(args.plug_view_args)), YaParameterFinder(std::move(args.parameter_finder_args)), + YaPlugViewContentScaleSupport( + std::move(args.plug_view_content_scale_support_args)), arguments(std::move(args)){FUNKNOWN_CTOR} Vst3PlugViewProxy::~Vst3PlugViewProxy() { @@ -51,6 +54,10 @@ tresult PLUGIN_API Vst3PlugViewProxy::queryInterface(Steinberg::FIDString _iid, QUERY_INTERFACE(_iid, obj, Steinberg::Vst::IParameterFinder::iid, Steinberg::Vst::IParameterFinder) } + if (YaPlugViewContentScaleSupport::supported()) { + QUERY_INTERFACE(_iid, obj, Steinberg::IPlugViewContentScaleSupport::iid, + Steinberg::IPlugViewContentScaleSupport) + } *obj = nullptr; return Steinberg::kNoInterface; diff --git a/src/common/serialization/vst3/plug-view-proxy.h b/src/common/serialization/vst3/plug-view-proxy.h index 4bb2f45c..c16b6bd6 100644 --- a/src/common/serialization/vst3/plug-view-proxy.h +++ b/src/common/serialization/vst3/plug-view-proxy.h @@ -18,6 +18,7 @@ #include "../common.h" #include "plug-view/parameter-finder.h" +#include "plug-view/plug-view-content-scale-support.h" #include "plug-view/plug-view.h" #pragma GCC diagnostic push @@ -30,7 +31,9 @@ * `IEditController::createView()`, and it works exactly the same as * `Vst3PluginProxy`. */ -class Vst3PlugViewProxy : public YaPlugView, public YaParameterFinder { +class Vst3PlugViewProxy : public YaPlugView, + public YaParameterFinder, + public YaPlugViewContentScaleSupport { public: /** * These are the arguments for constructing a @@ -56,12 +59,15 @@ class Vst3PlugViewProxy : public YaPlugView, public YaParameterFinder { YaPlugView::ConstructArgs plug_view_args; YaParameterFinder::ConstructArgs parameter_finder_args; + YaPlugViewContentScaleSupport::ConstructArgs + plug_view_content_scale_support_args; template void serialize(S& s) { s.value8b(owner_instance_id); s.object(plug_view_args); s.object(parameter_finder_args); + s.object(plug_view_content_scale_support_args); } }; diff --git a/src/plugin/bridges/vst3-impls/plug-view-proxy.cpp b/src/plugin/bridges/vst3-impls/plug-view-proxy.cpp index 98e3fa45..49cbfe8b 100644 --- a/src/plugin/bridges/vst3-impls/plug-view-proxy.cpp +++ b/src/plugin/bridges/vst3-impls/plug-view-proxy.cpp @@ -186,3 +186,12 @@ tresult PLUGIN_API Vst3PlugViewProxyImpl::findParameter( return response.result; } + +tresult PLUGIN_API +Vst3PlugViewProxyImpl::setContentScaleFactor(ScaleFactor factor) { + // TODO: Implement + bridge.logger.log( + "TODO: Implement " + "iplugviewcontentscalesupport::setContentScaleFactor()"); + return Steinberg::kNotImplemented; +} diff --git a/src/plugin/bridges/vst3-impls/plug-view-proxy.h b/src/plugin/bridges/vst3-impls/plug-view-proxy.h index c50ba98f..56b2739d 100644 --- a/src/plugin/bridges/vst3-impls/plug-view-proxy.h +++ b/src/plugin/bridges/vst3-impls/plug-view-proxy.h @@ -63,6 +63,9 @@ class Vst3PlugViewProxyImpl : public Vst3PlugViewProxy { int32 yPos, Steinberg::Vst::ParamID& resultTag /*out*/) override; + // From `iplugviewcontentscalesupport` + tresult PLUGIN_API setContentScaleFactor(ScaleFactor factor) override; + /** * The `IPlugFrame` object passed by the host passed to us in * `IPlugView::setFrame()`. When the plugin makes a callback on the