From c353dd0befea615adf233afa33c47dd9be6b94a0 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Thu, 23 May 2019 10:42:08 +0200 Subject: transfer: allow optional extrapolation --- transfer.c | 4 ++-- transfer.h | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/transfer.c b/transfer.c index 6db1ad2..9c5e125 100644 --- a/transfer.c +++ b/transfer.c @@ -425,8 +425,8 @@ int mg2di_gt_init(GridTransferContext *ctx) ctx->src.size[i] < 2 || ctx->dst.size[i] < 1) return -EINVAL; - src_start = ctx->src.start[i] * ctx->src.step[i]; - src_end = (ctx->src.start[i] + ctx->src.size[i] - 1) * ctx->src.step[i]; + src_start = ctx->src.start[i] * ctx->src.step[i] - ctx->extrapolate_distance; + src_end = (ctx->src.start[i] + ctx->src.size[i] - 1 + ctx->extrapolate_distance) * ctx->src.step[i]; dst_start = ctx->dst.start[i] * ctx->dst.step[i]; dst_end = (ctx->dst.start[i] + ctx->dst.size[i] - 1) * ctx->dst.step[i]; diff --git a/transfer.h b/transfer.h index 0a10f3a..2ed4aea 100644 --- a/transfer.h +++ b/transfer.h @@ -85,6 +85,12 @@ typedef struct GridTransferContext { * Destination grid geometry, must be filled by the caller. */ RegularGrid2D dst; + + /** + * Allow extrapolating this many points beyond the source rectangle. + * Defaults to 0: forbid extrapolation. + */ + int extrapolate_distance; } GridTransferContext; /** -- cgit v1.2.3