// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package org.chromium.components.paintpreview.player.frame;

import android.graphics.Point;
import android.graphics.Rect;

import org.chromium.ui.modelutil.PropertyKey;
import org.chromium.ui.modelutil.PropertyModel;

/**
 * Binds property changes in {@link PropertyModel} to {@link PlayerFrameView}.
 */
class PlayerFrameViewBinder {
    static void bind(PropertyModel model, PlayerFrameView view, PropertyKey key) {
        if (key.equals(PlayerFrameProperties.BITMAP_MATRIX)) {
            view.updateBitmapMatrix(model.get(PlayerFrameProperties.BITMAP_MATRIX));
        } else if (key.equals(PlayerFrameProperties.TILE_DIMENSIONS)) {
            view.updateTileDimensions(model.get(PlayerFrameProperties.TILE_DIMENSIONS));
        } else if (key.equals(PlayerFrameProperties.OFFSET)) {
            Point offset = model.get(PlayerFrameProperties.OFFSET);
            view.updateOffset(offset.x, offset.y);
        } else if (key.equals(PlayerFrameProperties.VIEWPORT)) {
            Rect viewPort = model.get(PlayerFrameProperties.VIEWPORT);
            view.updateViewPort(viewPort.left, viewPort.top, viewPort.right, viewPort.bottom);
        } else if (key.equals(PlayerFrameProperties.SUBFRAME_VIEWS)) {
            view.updateSubFrameViews(model.get(PlayerFrameProperties.SUBFRAME_VIEWS));
        } else if (key.equals(PlayerFrameProperties.SUBFRAME_RECTS)) {
            view.updateSubFrameRects(model.get(PlayerFrameProperties.SUBFRAME_RECTS));
        } else if (key.equals(PlayerFrameProperties.SCALE_MATRIX)) {
            view.updateScaleMatrix(model.get(PlayerFrameProperties.SCALE_MATRIX));
        }
    }
}
