FDL Core Library
ASC Framing Decision List — C/C++ Reference Implementation
Loading...
Searching...
No Matches
Functions
fdl_pipeline_api.cpp File Reference

C ABI wrappers for pipeline helper functions. More...

#include "fdl/fdl_core.h"
#include "fdl_pipeline.h"

Functions

double fdl_calculate_scale_factor (fdl_dimensions_f64_t fit_norm, fdl_dimensions_f64_t target_norm, fdl_fit_method_t fit_method)
 Calculate scale factor based on fit method.
 
double fdl_output_size_for_axis (double canvas_size, double max_size, int has_max, int pad_to_max)
 Determine output canvas size for a single axis.
 
double fdl_alignment_shift (double fit_size, double fit_anchor, double output_size, double canvas_size, double target_size, int is_center, double align_factor, int pad_to_max)
 Calculate content translation shift for a single axis.
 
fdl_dimensions_f64_t fdl_dimensions_clamp_to_dims (fdl_dimensions_f64_t dims, fdl_dimensions_f64_t clamp_dims, fdl_point_f64_t *out_delta)
 Clamp dimensions to maximum bounds.
 

Detailed Description

C ABI wrappers for pipeline helper functions.

Function Documentation

◆ fdl_calculate_scale_factor()

double fdl_calculate_scale_factor ( fdl_dimensions_f64_t  fit_norm,
fdl_dimensions_f64_t  target_norm,
fdl_fit_method_t  fit_method 
)

Calculate scale factor based on fit method.

Computes the ratio needed to scale source (fit_norm) into target (target_norm) using the specified fit method.

Parameters
fit_normNormalized source dimensions.
target_normNormalized target dimensions.
fit_methodFit method (WIDTH, HEIGHT, FIT_ALL, or FILL).
Returns
Scale factor (always > 0).

◆ fdl_output_size_for_axis()

double fdl_output_size_for_axis ( double  canvas_size,
double  max_size,
int  has_max,
int  pad_to_max 
)

Determine output canvas size for a single axis.

Handles three regimes: PAD (pad_to_max -> max_size), CROP (canvas > max -> max_size), FIT (canvas_size unchanged).

Parameters
canvas_sizeComputed canvas size for this axis.
max_sizeMaximum allowed size for this axis.
has_maxFDL_TRUE if max_size constraint is active, FDL_FALSE if unconstrained.
pad_to_maxFDL_TRUE to pad output to max_size, FDL_FALSE otherwise.
Returns
Final output size for this axis.

◆ fdl_alignment_shift()

double fdl_alignment_shift ( double  fit_size,
double  fit_anchor,
double  output_size,
double  canvas_size,
double  target_size,
int  is_center,
double  align_factor,
int  pad_to_max 
)

Calculate content translation shift for a single axis.

Handles three regimes: FIT (no shift), PAD (center/align content in padded area), CROP (clip/align content that exceeds canvas).

Parameters
fit_sizeSize of the content in this axis.
fit_anchorAnchor position of the content.
output_sizeFinal output canvas size.
canvas_sizeComputed canvas size before clamping.
target_sizeTarget template size.
is_centerFDL_TRUE if alignment is center, FDL_FALSE for edge alignment.
align_factorAlignment factor (0.0 = left/top, 1.0 = right/bottom).
pad_to_maxFDL_TRUE if padding to maximum, FDL_FALSE otherwise.
Returns
Translation shift for this axis.

◆ fdl_dimensions_clamp_to_dims()

fdl_dimensions_f64_t fdl_dimensions_clamp_to_dims ( fdl_dimensions_f64_t  dims,
fdl_dimensions_f64_t  clamp_dims,
fdl_point_f64_t out_delta 
)

Clamp dimensions to maximum bounds.

Parameters
dimsDimensions to clamp.
clamp_dimsMaximum allowed dimensions.
out_delta[out] Amount clamped per axis (dims - result), as a point.
Returns
Clamped dimensions (each axis independently capped at clamp_dims).