//================================================================
// lib2D
//
// Programmable lights. For example, CyCal (camera calibrator)
//
// AUTHOR:  Gabor Nagy
// DATE:    2023-Dec-07 01:44:08
//
// Copyright (C) 2014-2026 by Gabor Nagy. All rights reserved.
//================================================================
#ifndef _EpLight_h
#define _EpLight_h

#ifndef EClass_h
#include <EClass.h>
#endif  // EClass_h

#include <EThreads.h>

#include <Image/GL/Texture.h>

#if defined (__cplusplus) && (!(defined (__CPLUSLIBS)))
extern "C" {
#endif



typedef struct EpLight_S                EpLight;
typedef struct EpLightClass_S           EpLightClass;



#define EpLightCore\
	EObjectCore(EpLight);\
	EcColor        Request_Color;\
	EcColor        Color;\
	EcRGBf32Color  RGBMin, RGBMax


struct EpLightClass_S
{
	EBaseClassCore(EpLight);

	int  (*SetColorRGB)(EpLight* PLight, const EcRGBf32Color* PColor);
};


extern EpLightClass   EpLight_class[];

extern EpLightClass*  EpLight_ClassRegister(EpLightClass* PClassTemplate);
extern int            EpLight_ClassDeactivate(EpLightClass* PClass);
extern EpLightClass*  EpLightClass_ByName(const char* PName);
extern int            EpLight_ClassesFree(void);


struct EpLight_S
{
	EpLightCore;
};


extern EpLightClass  EpLight_class[];

extern int  Ep_LightNew(EpLight* PLight, const char* PDevicePath);




#if defined (__cplusplus) && (!(defined (__CPLUSLIBS)))
}  // Close scope of 'extern "C"' declaration
#endif

#endif // _EpLight_h
