66#include " flutter_tizen_view.h"
77
88#include " flutter/shell/platform/tizen/logger.h"
9+ #include " flutter/shell/platform/tizen/tizen_view.h"
10+ #include " flutter/shell/platform/tizen/tizen_window.h"
911
1012namespace {
1113
@@ -40,10 +42,10 @@ const std::vector<std::string> kBindableSystemKeys = {
4042
4143namespace flutter {
4244
43- FlutterTizenView::FlutterTizenView (std::unique_ptr<TizenWindow> window )
44- : window_ (std::move(window )) {
45- window_ ->SetView (this );
46- window_ ->BindKeys (kBindableSystemKeys );
45+ FlutterTizenView::FlutterTizenView (std::unique_ptr<TizenViewBase> tizen_view )
46+ : tizen_view_ (std::move(tizen_view )) {
47+ tizen_view_ ->SetView (this );
48+ tizen_view_ ->BindKeys (kBindableSystemKeys );
4749}
4850
4951FlutterTizenView::~FlutterTizenView () {}
@@ -57,19 +59,34 @@ void FlutterTizenView::SetEngine(std::unique_ptr<FlutterTizenEngine> engine) {
5759
5860 // Set up window dependent channels.
5961 BinaryMessenger* messenger = internal_plugin_registrar_->messenger ();
60- platform_channel_ =
61- std::make_unique<PlatformChannel>(messenger, window_.get ());
62- window_channel_ = std::make_unique<WindowChannel>(messenger, window_.get ());
62+
63+ if (tizen_view_->GetType () == TizenViewType::kWindow ) {
64+ auto * window = reinterpret_cast <TizenWindow*>(tizen_view_.get ());
65+ platform_channel_ = std::make_unique<PlatformChannel>(messenger, window);
66+ window_channel_ = std::make_unique<WindowChannel>(messenger, window);
67+ } else {
68+ platform_channel_ = std::make_unique<PlatformChannel>(messenger, nullptr );
69+ window_channel_ = std::make_unique<WindowChannel>(messenger, nullptr );
70+ }
71+
6372 text_input_channel_ = std::make_unique<TextInputChannel>(
64- internal_plugin_registrar_->messenger (), window_->input_method_context ());
73+ internal_plugin_registrar_->messenger (),
74+ tizen_view_->input_method_context ());
6575}
6676
6777void FlutterTizenView::CreateRenderSurface () {
6878 if (engine_ && engine_->renderer ()) {
69- TizenWindow::Geometry geometry = window_->GetWindowGeometry ();
70- engine_->renderer ()->CreateSurface (window_->GetRenderTarget (),
71- window_->GetRenderTargetDisplay (),
72- geometry.width , geometry.height );
79+ TizenGeometry geometry = tizen_view_->GetGeometry ();
80+ if (tizen_view_->GetType () == TizenViewType::kWindow ) {
81+ auto * window = reinterpret_cast <TizenWindow*>(tizen_view_.get ());
82+ engine_->renderer ()->CreateSurface (window->GetRenderTarget (),
83+ window->GetRenderTargetDisplay (),
84+ geometry.width , geometry.height );
85+ } else {
86+ auto * tizen_view = reinterpret_cast <TizenView*>(tizen_view_.get ());
87+ engine_->renderer ()->CreateSurface (tizen_view->GetRenderTarget (), nullptr ,
88+ geometry.width , geometry.height );
89+ }
7390 }
7491}
7592
@@ -111,16 +128,15 @@ void FlutterTizenView::OnResize(int32_t left,
111128 std::swap (width, height);
112129 }
113130
114- window_->ResizeRenderTargetWithRotation ({left, top, width, height},
115- rotation_degree_);
131+ tizen_view_->ResizeWithRotation ({left, top, width, height}, rotation_degree_);
116132 SendWindowMetrics (left, top, width, height, 0.0 );
117133}
118134
119135void FlutterTizenView::OnRotate (int32_t degree) {
120136 rotation_degree_ = degree;
121137 // Compute renderer transformation based on the angle of rotation.
122138 double rad = (360 - rotation_degree_) * M_PI / 180 ;
123- TizenWindow::Geometry geometry = window_-> GetWindowGeometry ();
139+ TizenGeometry geometry = tizen_view_-> GetGeometry ();
124140 int32_t width = geometry.width ;
125141 int32_t height = geometry.height ;
126142
@@ -144,8 +160,8 @@ void FlutterTizenView::OnRotate(int32_t degree) {
144160 std::swap (width, height);
145161 }
146162
147- window_-> ResizeRenderTargetWithRotation (
148- {geometry. left , geometry. top , width, height}, rotation_degree_);
163+ tizen_view_-> ResizeWithRotation ({geometry. left , geometry. top , width, height},
164+ rotation_degree_);
149165
150166 // Window position does not change on rotation regardless of its orientation.
151167 SendWindowMetrics (geometry.left , geometry.top , width, height, 0.0 );
@@ -254,7 +270,14 @@ void FlutterTizenView::OnCommit(const std::string& str) {
254270}
255271
256272void FlutterTizenView::SendInitialGeometry () {
257- OnRotate (window_->GetRotation ());
273+ if (tizen_view_->GetType () == TizenViewType::kWindow ) {
274+ auto * window = reinterpret_cast <TizenWindow*>(tizen_view_.get ());
275+ OnRotate (window->GetRotation ());
276+ } else {
277+ TizenGeometry geometry = tizen_view_->GetGeometry ();
278+ SendWindowMetrics (geometry.left , geometry.top , geometry.width ,
279+ geometry.height , 0.0 );
280+ }
258281}
259282
260283void FlutterTizenView::SendWindowMetrics (int32_t left,
@@ -270,7 +293,7 @@ void FlutterTizenView::SendWindowMetrics(int32_t left,
270293#ifdef TV_PROFILE
271294 double dpi = 72.0 ;
272295#else
273- double dpi = static_cast <double >(window_ ->GetDpi ());
296+ double dpi = static_cast <double >(tizen_view_ ->GetDpi ());
274297#endif
275298 double scale_factor = dpi / 90.0 * kProfileFactor ;
276299 computed_pixel_ratio = std::max (scale_factor, 1.0 );
@@ -290,7 +313,7 @@ void FlutterTizenView::SendFlutterPointerEvent(
290313 size_t timestamp,
291314 FlutterPointerDeviceKind device_kind,
292315 int device_id) {
293- TizenWindow::Geometry geometry = window_-> GetWindowGeometry ();
316+ TizenGeometry geometry = tizen_view_-> GetGeometry ();
294317 double new_x = x, new_y = y;
295318
296319 if (rotation_degree_ == 90 ) {
@@ -307,8 +330,8 @@ void FlutterTizenView::SendFlutterPointerEvent(
307330 FlutterPointerEvent event = {};
308331 event.struct_size = sizeof (event);
309332 event.phase = phase;
310- event.x = new_x;
311- event.y = new_y;
333+ event.x = new_x - geometry. left ;
334+ event.y = new_y - geometry. top ;
312335 if (delta_x != 0 || delta_y != 0 ) {
313336 event.signal_kind = kFlutterPointerSignalKindScroll ;
314337 }
0 commit comments