Files
oak-editor/app/widget
Mike-Solar 4aa4d59770 feat: hide non-texture OFX params from node graph + host coordinate standardization
Hide non-texture OFX params from node graph
  --------------------------------------------
  OFX plugins like ColorCorrect expose dozens of scalar parameters as
  node inputs, making nodes extremely tall and pushing Source/Mask far
  down. Previously attempted via kInputFlagHidden, but that also hid
  them from the parameter panel.

  Fix: move the filter to NodeViewItem::IsInputValid() instead.
  For OFX plugin nodes (getPluginInstance() != nullptr), only
  kTexture inputs are rendered as ports. Scalar parameters remain
  fully visible in the parameter panel.

  Files: app/widget/nodeview/nodeviewitem.cpp
         app/node/plugins/Plugin.cpp

  Standardize OFX host coordinate system
  --------------------------------------
  Olive's OFX host had partial and inconsistent coordinate handling.

  1. Fix Project coordinate methods
     - getProjectSize() / getProjectExtent() / getProjectOffset()
       now multiply X by pixel_aspect_ratio(), returning canonical
       coordinates per the OFX spec.

  2. Fix Clip default RoD
     - OliveClipInstance::getRegionOfDefinition() default now returns
       {0, 0, width*PAR, height} instead of raw pixel coords.

  3. Add parameter coordinate system conversion
     - DoubleInstance / Double2DInstance / Double3DInstance now check
       _descriptor.getDefaultCoordinateSystem().
     - For kOfxParamCoordinatesNormalised:
         get: internal pixel value -> normalised (divide by extent)
         set: normalised plugin value -> pixel (multiply by extent)
     - DefaultValueForParam() also converts normalised defaults to
       canonical before storing in Node, keeping Olive internal/UI
       values consistently in pixel space.

  Files: app/pluginSupport/OlivePluginInstance.cpp
         app/pluginSupport/OliveClip.cpp
         app/pluginSupport/paraminstance.h
         app/node/plugins/Plugin.cpp
2026-05-14 21:54:18 +08:00
..
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-01-16 21:22:05 +08:00
2026-05-14 20:26:17 +08:00
2026-01-16 21:22:05 +08:00