use crate::Arena;
use anyhow::Result;
use shared::{
    core::texture::{SpectrumType, TextureEvalContext},
    textures::{FloatConstantTexture, SpectrumConstantTexture},
    utils::Transform,
};

use crate::{
    core::texture::{
        CreateFloatTexture, CreateSpectrumTexture, FloatTexture, FloatTextureTrait,
        SpectrumTexture, SpectrumTextureTrait,
    },
    utils::{FileLoc, TextureParameterDictionary},
};

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

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

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

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