FDL Core Library
ASC Framing Decision List — C/C++ Reference Implementation
Loading...
Searching...
No Matches
fdl_builder.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2024-present American Society Of Cinematographers
2// SPDX-License-Identifier: Apache-2.0
10#ifndef FDL_BUILDER_INTERNAL_H
11#define FDL_BUILDER_INTERNAL_H
12
13#include "fdl/fdl_core.h"
14#include "fdl_doc.h"
15#include "fdl_handles.h"
16
17#include <jsoncons/json.hpp>
18#include <string>
19
20namespace fdl::detail {
21
22using ojson = jsoncons::ojson;
23
33ojson make_version(int major, int minor);
34
41ojson make_dimensions_int(int64_t width, int64_t height);
42
49ojson make_dimensions_float(double width, double height);
50
57ojson make_point_float(double x, double y);
58
65ojson make_round_strategy(const char* even, const char* mode);
78 const char* uuid,
79 int version_major,
80 int version_minor,
81 const char* fdl_creator,
82 const char* default_framing_intent);
83
96ojson make_framing_intent(const char* id, const char* label, int64_t aspect_w, int64_t aspect_h, double protection);
97
104ojson make_context(const char* label, const char* context_creator);
105
117 const char* id, const char* label, const char* source_canvas_id, int64_t dim_w, int64_t dim_h, double squeeze);
118
131 const char* id,
132 const char* label,
133 const char* framing_intent_id,
134 double dim_w,
135 double dim_h,
136 double anchor_x,
137 double anchor_y);
138
154 const char* id,
155 const char* label,
156 int64_t target_w,
157 int64_t target_h,
158 double target_squeeze,
159 fdl_geometry_path_t fit_source,
160 fdl_fit_method_t fit_method,
161 fdl_halign_t halign,
162 fdl_valign_t valign,
163 fdl_round_strategy_t rounding);
166} // namespace fdl::detail
167
168#endif // FDL_BUILDER_INTERNAL_H
ojson make_dimensions_float(double width, double height)
Build a floating-point dimensions object (width, height).
Definition fdl_builder.cpp:29
ojson make_canvas(const char *id, const char *label, const char *source_canvas_id, int64_t dim_w, int64_t dim_h, double squeeze)
Build a canvas object with dimensions and squeeze.
Definition fdl_builder.cpp:101
ojson make_dimensions_int(int64_t width, int64_t height)
Build an integer dimensions object (width, height).
Definition fdl_builder.cpp:21
ojson make_framing_intent(const char *id, const char *label, int64_t aspect_w, int64_t aspect_h, double protection)
Build a framing intent object with aspect ratio and protection.
Definition fdl_builder.cpp:74
ojson make_round_strategy(const char *even, const char *mode)
Build a rounding strategy object (even, mode).
Definition fdl_builder.cpp:45
ojson make_context(const char *label, const char *context_creator)
Build a context object with label and creator.
Definition fdl_builder.cpp:87
ojson make_point_float(double x, double y)
Build a floating-point point object (x, y).
Definition fdl_builder.cpp:37
ojson make_framing_decision(const char *id, const char *label, const char *framing_intent_id, double dim_w, double dim_h, double anchor_x, double anchor_y)
Build a framing decision object with dimensions and anchor point.
Definition fdl_builder.cpp:120
ojson make_version(int major, int minor)
Build a version object with major and minor fields.
Definition fdl_builder.cpp:13
ojson make_root(const char *uuid, int version_major, int version_minor, const char *fdl_creator, const char *default_framing_intent)
Build a minimal FDL root document object with canonical key order.
Definition fdl_builder.cpp:52
ojson make_canvas_template(const char *id, const char *label, int64_t target_w, int64_t target_h, double target_squeeze, fdl_geometry_path_t fit_source, fdl_fit_method_t fit_method, fdl_halign_t halign, fdl_valign_t valign, fdl_round_strategy_t rounding)
Build a canvas template object with all transform parameters.
Definition fdl_builder.cpp:142
jsoncons::ojson ojson
Use ojson (ordered JSON) to preserve key insertion order for canonical serialization.
Definition fdl_builder.h:22
Public C ABI for the FDL (Framing Decision List) core library.
uint32_t fdl_fit_method_t
Fit method — how source content is scaled into the target canvas.
Definition fdl_core.h:151
uint32_t fdl_geometry_path_t
Geometry path — selects a dimension layer within the FDL hierarchy.
Definition fdl_core.h:144
uint32_t fdl_valign_t
Vertical alignment — how content is positioned vertically.
Definition fdl_core.h:164
uint32_t fdl_halign_t
Horizontal alignment — how content is positioned horizontally.
Definition fdl_core.h:158
Internal Document class and opaque fdl_doc handle definition.
Internal handle types and handle cache for opaque FDL sub-objects.
double anchor_y
Anchor Y offset.
Definition fdl_validate.cpp:339
double anchor_x
Anchor X offset.
Definition fdl_validate.cpp:338
double dim_h
Height in pixels.
Definition fdl_validate.cpp:337
double dim_w
Width in pixels.
Definition fdl_validate.cpp:336
Rounding strategy combining even-snap and direction mode.
Definition fdl_core.h:186