You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
3.4 KiB
83 lines
3.4 KiB
#include "pch.h"
|
|
#include "RenderableViewManager.h"
|
|
#if __has_include("RenderableViewManager.g.cpp")
|
|
#include "RenderableViewManager.g.cpp"
|
|
#endif
|
|
|
|
using namespace winrt;
|
|
using namespace Microsoft::ReactNative;
|
|
|
|
namespace winrt::RNSVG::implementation {
|
|
Windows::UI::Xaml::FrameworkElement RenderableViewManager::CreateView() {
|
|
switch (m_class) {
|
|
case RNSVG::SVGClass::RNSVGGroup:
|
|
return winrt::RNSVG::GroupView(m_reactContext);
|
|
case RNSVG::SVGClass::RNSVGPath:
|
|
return winrt::RNSVG::PathView();
|
|
case RNSVG::SVGClass::RNSVGRect:
|
|
return winrt::RNSVG::RectView();
|
|
case RNSVG::SVGClass::RNSVGCircle:
|
|
return winrt::RNSVG::CircleView();
|
|
case RNSVG::SVGClass::RNSVGEllipse:
|
|
return winrt::RNSVG::EllipseView();
|
|
case RNSVG::SVGClass::RNSVGLine:
|
|
return winrt::RNSVG::LineView();
|
|
case RNSVG::SVGClass::RNSVGUse:
|
|
return winrt::RNSVG::UseView();
|
|
case RNSVG::SVGClass::RNSVGImage:
|
|
return winrt::RNSVG::ImageView();
|
|
case RNSVG::SVGClass::RNSVGText:
|
|
return winrt::RNSVG::TextView();
|
|
case RNSVG::SVGClass::RNSVGTSpan:
|
|
return winrt::RNSVG::TSpanView();
|
|
case RNSVG::SVGClass::RNSVGSymbol:
|
|
return winrt::RNSVG::SymbolView();
|
|
case RNSVG::SVGClass::RNSVGDefs:
|
|
return winrt::RNSVG::DefsView();
|
|
case RNSVG::SVGClass::RNSVGLinearGradient:
|
|
return winrt::RNSVG::LinearGradientView();
|
|
case RNSVG::SVGClass::RNSVGRadialGradient:
|
|
return winrt::RNSVG::RadialGradientView();
|
|
case RNSVG::SVGClass::RNSVGPattern:
|
|
return winrt::RNSVG::PatternView();
|
|
case RNSVG::SVGClass::RNSVGClipPath:
|
|
return winrt::RNSVG::ClipPathView();
|
|
}
|
|
|
|
throw hresult_not_implemented();
|
|
}
|
|
|
|
// IViewManagerWithNativeProperties
|
|
IMapView<hstring, ViewManagerPropertyType> RenderableViewManager::NativeProps() {
|
|
auto const &nativeProps{winrt::single_threaded_map<hstring, ViewManagerPropertyType>()};
|
|
|
|
nativeProps.Insert(L"name", ViewManagerPropertyType::String);
|
|
nativeProps.Insert(L"fill", ViewManagerPropertyType::Number);
|
|
nativeProps.Insert(L"fillRule", ViewManagerPropertyType::Number);
|
|
nativeProps.Insert(L"fillOpacity", ViewManagerPropertyType::Number);
|
|
nativeProps.Insert(L"stroke", ViewManagerPropertyType::Number);
|
|
nativeProps.Insert(L"strokeOpacity", ViewManagerPropertyType::Number);
|
|
nativeProps.Insert(L"strokeWidth", ViewManagerPropertyType::String);
|
|
nativeProps.Insert(L"strokeLinecap", ViewManagerPropertyType::Number);
|
|
nativeProps.Insert(L"strokeLinejoin", ViewManagerPropertyType::Number);
|
|
nativeProps.Insert(L"strokeMiterlimit", ViewManagerPropertyType::Number);
|
|
nativeProps.Insert(L"strokeDashoffset", ViewManagerPropertyType::Number);
|
|
nativeProps.Insert(L"strokeDasharray", ViewManagerPropertyType::Array);
|
|
nativeProps.Insert(L"matrix", ViewManagerPropertyType::Array);
|
|
nativeProps.Insert(L"opacity", ViewManagerPropertyType::Number);
|
|
nativeProps.Insert(L"propList", ViewManagerPropertyType::Array);
|
|
nativeProps.Insert(L"clipPath", ViewManagerPropertyType::String);
|
|
nativeProps.Insert(L"responsible", ViewManagerPropertyType::Boolean);
|
|
|
|
return nativeProps.GetView();
|
|
}
|
|
|
|
void RenderableViewManager::UpdateProperties(
|
|
Windows::UI::Xaml::FrameworkElement const &view,
|
|
Microsoft::ReactNative::IJSValueReader const &propertyMapReader) {
|
|
if (auto const &renderable{view.try_as<RenderableView>()}) {
|
|
renderable->UpdateProperties(propertyMapReader);
|
|
}
|
|
}
|
|
} // namespace winrt::RNSVG::implementation
|