using Minint.Core.Models;

namespace Minint.Core.Services;

public interface IFragmentService
{
    /// <summary>
    /// Copies a rectangular region from one document/layer to another.
    /// Palette colors are merged: missing colors are added to the destination palette.
    /// </summary>
    /// <param name="srcDoc">Source document.</param>
    /// <param name="srcLayerIndex">Index of the source layer.</param>
    /// <param name="srcX">Source rectangle X origin.</param>
    /// <param name="srcY">Source rectangle Y origin.</param>
    /// <param name="regionWidth">Width of the region to copy.</param>
    /// <param name="regionHeight">Height of the region to copy.</param>
    /// <param name="dstDoc">Destination document.</param>
    /// <param name="dstLayerIndex">Index of the destination layer.</param>
    /// <param name="dstX">Destination X origin.</param>
    /// <param name="dstY">Destination Y origin.</param>
    /// <param name="containerWidth">Container width (shared by both docs).</param>
    /// <param name="containerHeight">Container height (shared by both docs).</param>
    void CopyFragment(
        MinintDocument srcDoc, int srcLayerIndex,
        int srcX, int srcY, int regionWidth, int regionHeight,
        MinintDocument dstDoc, int dstLayerIndex,
        int dstX, int dstY,
        int containerWidth, int containerHeight);
}
