// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'dart:ui';

import 'channel_util.dart';
import 'scenario.dart';
import 'scenarios.dart';

/// Displays a platform texture with the given width and height.
class DisplayTexture extends Scenario {
  /// Creates the DisplayTexture scenario.
  DisplayTexture(super.view);

  int get _textureId => scenarioParams['texture_id'] as int;
  double get _textureWidth =>
      (scenarioParams['texture_width'] as num).toDouble();
  double get _textureHeight =>
      (scenarioParams['texture_height'] as num).toDouble();

  @override
  void onBeginFrame(Duration duration) {
    final SceneBuilder builder = SceneBuilder();
    builder.addTexture(
      _textureId,
      offset: Offset(
        (view.physicalSize.width / 2.0) - (_textureWidth / 2.0),
        0.0,
      ),
      width: _textureWidth,
      height: _textureHeight,
    );
    final Scene scene = builder.build();
    view.render(scene);
    scene.dispose();

    sendJsonMessage(
      dispatcher: view.platformDispatcher,
      channel: 'display_data',
      json: <String, dynamic>{
        'data': 'ready',
      },
    );
  }
}
