R8: finish app/ pure C ABI migration (P3-P9) and make OTIO required
- app/ no longer includes engine C++ headers nor holds engine C++ types: engine access goes through the oakengine C ABI plus C++ wrappers (oakutil/oaknode.h, oakutil/oakvideo.h) and app-local mirror types (tooltypes, trackreferencehandle, timelinecommonapp, keyframetypes, subtitleapp, serializedlayoutinfoapp, nodevaluehandle, sliderdisplaytypeapp) - engine: new C ABI functions for block/track/clip/transition navigation and predicates, links, caches, waveform/playback, disk folder, sequence_track_list, node_free, footage_is_valid, block_get_track, get_brush; loadotio/saveotio ported to the current engine API - OTIO is now a required dependency: CI and CD build it on every platform, FindOpenTimelineIO fixed for OTIO 0.16/0.19 (the old deps include requirement silently disabled OTIO everywhere), runtime libraries are bundled into packages and copied next to macOS binaries (oak_copy_otio_runtime) - fix ProjectViewModel drag&drop mime read/write size mismatch (segfault) - unify color label naming (k_olive -> "Oak") in the app-side mirror - docs: OTIO required, FFmpeg minimum corrected to 6.0 (en/zh) - gtest suite: 1925 passed, 0 failed
This commit is contained in:
@@ -156,6 +156,48 @@ OAKENGINE_API int oakengine_gizmo_drag_move(void *gizmo,
|
||||
*/
|
||||
OAKENGINE_API int oakengine_gizmo_drag_end(void *gizmo, void *command);
|
||||
|
||||
/**
|
||||
* @brief 1 if the gizmo is visible (NodeGizmo::is_visible()).
|
||||
*/
|
||||
OAKENGINE_API int oakengine_gizmo_is_visible(void *gizmo);
|
||||
|
||||
/**
|
||||
* @brief Draw the gizmo using the given QPainter (passed as void*).
|
||||
* The painter must be a valid QPainter*. Returns OAKENGINE_OK or
|
||||
* OAKENGINE_E_INVALID.
|
||||
*/
|
||||
OAKENGINE_API int oakengine_gizmo_draw(void *gizmo, void *painter);
|
||||
|
||||
/**
|
||||
* @brief Set the globals on a gizmo (NodeGizmo::set_globals()).
|
||||
* `video_width`/`video_height` describe the resolution; `time_num`/
|
||||
* `time_den` are rational seconds.
|
||||
*/
|
||||
OAKENGINE_API int oakengine_gizmo_set_globals(void *gizmo,
|
||||
int video_width, int video_height,
|
||||
int64_t time_num, int64_t time_den);
|
||||
|
||||
/**
|
||||
* @brief Unified gizmo hit-test used by the viewer to pick a gizmo under
|
||||
* the cursor (replaces the app-side dynamic_cast chain over PointGizmo /
|
||||
* PolygonGizmo / PathGizmo / ScreenGizmo).
|
||||
*
|
||||
* Returns 1 when the gizmo is visible AND the point (`px`,`py`, in gizmo
|
||||
* scene space) hits it, 0 otherwise. `transform6` is the affine QTransform
|
||||
* used for drawing, passed as six doubles in the order
|
||||
* {m11, m12, m21, m22, dx, dy} (it is only needed by point gizmos, whose
|
||||
* clicking rect depends on the draw transform; other types may ignore it).
|
||||
*
|
||||
* Per-type semantics mirror the original viewer logic:
|
||||
* - PointGizmo: get_clicking_rect(transform).contains(p)
|
||||
* - PolygonGizmo: get_polygon().containsPoint(p, Qt::OddEvenFill)
|
||||
* - PathGizmo: get_path().contains(p)
|
||||
* - ScreenGizmo: always hittable (returns 1 when visible)
|
||||
* - TextGizmo / other: never hittable via this call (returns 0)
|
||||
*/
|
||||
OAKENGINE_API int oakengine_gizmo_hit_test(void *gizmo,
|
||||
const double *transform6, double px, double py);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user