use crate::Arena;
use crate::core::texture::{
    CreateFloatTexture, CreateSpectrumTexture, FloatTextureTrait, SpectrumTexture,
    SpectrumTextureTrait,
};
use anyhow::Result;
use shared::core::texture::{SpectrumType, TextureEvalContext};
use shared::{
    spectra::{SampledSpectrum, SampledWavelengths},
    textures::{FloatBilerpTexture, SpectrumBilerpTexture},
    utils::Transform,
};

use crate::{
    core::texture::FloatTexture,
    utils::{FileLoc, TextureParameterDictionary},
};

impl CreateFloatTexture for FloatBilerpTexture {
    fn create(
        _render_from_texture: Transform,
        _parameters: TextureParameterDictionary,
        _loc: FileLoc,
        _arena: &Arena,
    ) -> Result<FloatTexture> {
        todo!()
    }
}

impl FloatTextureTrait for FloatBilerpTexture {
    fn evaluate(&self, _ctx: &TextureEvalContext) -> shared::Float {
        todo!()
    }
}

impl CreateSpectrumTexture for SpectrumBilerpTexture {
    fn create(
        _render_from_texture: Transform,
        _parameters: TextureParameterDictionary,
        _spectrum_type: SpectrumType,
        _loc: FileLoc,
    ) -> Result<SpectrumTexture> {
        todo!()
    }
}

impl SpectrumTextureTrait for SpectrumBilerpTexture {
    fn evaluate(&self, _ctx: &TextureEvalContext, _lambda: &SampledWavelengths) -> SampledSpectrum {
        todo!()
    }
}
