cbf-compositor 0.1.0-alpha.3

Scene-based browser surface compositor for CBF applications.
Documentation
use cbf::data::{
    context_menu::ContextMenu,
    drag::{DragOperation, DragStartRequest},
};
#[cfg(feature = "chrome")]
use cbf_chrome::data::choice_menu::ChromeChoiceMenu;

use crate::{
    error::CompositorError,
    model::SurfaceTarget,
    platform::host::{PlatformInputState, PlatformSceneItem, PlatformWindowHost},
};

#[allow(dead_code)]
#[derive(Debug, Default)]
pub(crate) struct UnsupportedPlatformWindowHost;

impl PlatformWindowHost for UnsupportedPlatformWindowHost {
    fn sync_scene(&mut self, _items: &[PlatformSceneItem]) -> Result<(), CompositorError> {
        Ok(())
    }

    fn set_active_item(
        &mut self,
        _item_id: Option<crate::model::CompositionItemId>,
    ) -> Result<(), CompositorError> {
        Err(CompositorError::PlatformUnsupported)
    }

    fn show_context_menu(
        &mut self,
        _target: SurfaceTarget,
        _menu: ContextMenu,
    ) -> Result<(), CompositorError> {
        Err(CompositorError::PlatformUnsupported)
    }

    #[cfg(feature = "chrome")]
    fn show_choice_menu(
        &mut self,
        _target: SurfaceTarget,
        _menu: ChromeChoiceMenu,
    ) -> Result<(), CompositorError> {
        Err(CompositorError::PlatformUnsupported)
    }

    fn start_native_drag(
        &mut self,
        _target: SurfaceTarget,
        _request: DragStartRequest,
    ) -> Result<bool, CompositorError> {
        Err(CompositorError::PlatformUnsupported)
    }

    fn set_external_drag_operation(
        &mut self,
        _target: SurfaceTarget,
        _operation: DragOperation,
    ) -> Result<(), CompositorError> {
        Ok(())
    }

    fn input_state(&self) -> PlatformInputState {
        PlatformInputState::default()
    }
}

#[allow(dead_code)]
pub(crate) fn attach_unsupported_window_host()
-> Result<Box<dyn PlatformWindowHost>, CompositorError> {
    Err(CompositorError::PlatformUnsupported)
}