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

Framing-from-intent computation — aspect ratio fitting with protection. More...

#include "fdl_framing.h"
#include "fdl_constants.h"

Functions

fdl_from_intent_result_t fdl::detail::compute_framing_from_intent (fdl_dimensions_f64_t canvas_dims, fdl_dimensions_f64_t working_dims, double squeeze, fdl_dimensions_i64_t aspect_ratio, double protection, fdl_round_strategy_t rounding)
 Compute a framing decision from a framing intent.
 

Detailed Description

Framing-from-intent computation — aspect ratio fitting with protection.

Algorithm:

  1. Compare intent aspect ratio with working (effective or canvas) aspect ratio.
  2. If intent is wider: letterbox (fit to width, shrink height). If intent is narrower: pillarbox (fit to height, shrink width).
  3. If protection > 0, round to get protection dimensions, then shrink by the protection factor to get final framing dimensions.
  4. Center both framing and protection anchors within the full canvas.

Function Documentation

◆ compute_framing_from_intent()

fdl_from_intent_result_t fdl::detail::compute_framing_from_intent ( fdl_dimensions_f64_t  canvas_dims,
fdl_dimensions_f64_t  working_dims,
double  squeeze,
fdl_dimensions_i64_t  aspect_ratio,
double  protection,
fdl_round_strategy_t  rounding 
)

Compute a framing decision from a framing intent.

Returns a zeroed result if aspect_ratio.height or working_dims.height is zero (guards against division by zero).

Parameters
canvas_dimsFull canvas dimensions (for anchor centering).
working_dimsEffective dimensions if available, else canvas dims.
squeezeAnamorphic squeeze factor.
aspect_ratioTarget aspect ratio as integer width:height (height must be > 0).
protectionProtection factor (0.0 for no protection).
roundingRounding strategy.
Returns
Computed framing dimensions, anchors, and optional protection.