public override void RequestNewSize(int originX, int originY, int pixelsWide, int pixelsHigh)
{
if (pixelsWide <= 0 || pixelsHigh <= 0) {
throw new ArgumentException("New layer dimensions must be greater than 0.");
}
int tileX = (int)Math.Floor(originX * 1.0 / TileWidth);
int tileY = (int)Math.Floor(originY * 1.0 / TileHeight);
int tilesW = (int)Math.Ceiling((originX + pixelsWide) * 1.0 / TileWidth) - tileX;
int tilesH = (int)Math.Ceiling((originY + pixelsHigh) * 1.0 / TileHeight) - tileY;
if (tileX != _tileOriginX || tileY != _tileOriginY || tilesW != _tilesWide || tilesH != _tilesHigh) {
ResizeLayer(tileX, tileY, tilesW, tilesH);
_tileOriginX = tileX;
_tileOriginY = tileY;
_tilesWide = tilesW;
_tilesHigh = tilesH;
OnLayerSizeChanged(EventArgs.Empty);
}
}