//---------------------------------------------------------------------------

#ifndef CDSFormFH
#define CDSFormFH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <stdio.h>
#include <ADODB.hpp>
#include <DB.hpp>
#include <SyncObjs.hpp>
#include <ExtCtrls.hpp>
#include <jpeg.hpp>
#include <GIFimg.hpp>
//---------------------------------------------------------------------------
#include "ITSLibF.h"
#include "CDSItsObjectF.h"
//---------------------------------------------------------------------------

typedef enum _e_form_type
{
    eFormTp_traf_1   = 11,  //	소통상황(1단)
    eFormTp_traf_2   = 12,  //	소통상황(2단)
    eFormTp_traf_3   = 13,  //	소통상황(3단)
    eFormTp_traf_4   = 14,  //	소통상황(4단)
    eFormtp_figure   = 15,  //	소통상황(도형식배경소통정보)
    eFormTp_congest  = 16,  //	정체소통상황
    eFormTp_incident = 20,  //	돌발문안
    eFormTp_gongsa   = 30,  //	공사/행사문안
    eFormTp_hongbo   = 40,  //	홍보문안
    eFormTp_deture   = 50,  //	우회도로
    eFormTp_safe     = 60,  //	재난안전
    eFormTp_video    = 70,  //	동영상
    eFormTp_stream   = 80,  //	스트리밍영상
    eFormTp_atmp     = 90,  //	대기환경
    eFormTp_park     = 91,  //	주차정보
} e_form_type;

typedef enum _e_schedule_type
{
    eSchTp_traffic  = 0,    //0:교통,
    eSchTp_incident = 1,    //1:돌발,
    eSchTp_gongsa   = 2,    //2:공사행사,
    eSchTp_hongbo   = 3,    //3:홍보,
    eSchTp_deture   = 4,    //4:우회,
    eSchTp_congest  = 5,    //5:정체,
    eSchTp_safe     = 6,    //6:안전,
    eSchTp_video    = 7,    //7:동영상,
    eSchTp_stream   = 8,    //8:스트리밍영상
    eSchTp_atmp     = 9,    //9:대기환경
    eSchTp_park     = 10,   //10:주차정보
    eSchTp_max,
} e_schedule_type;

class TCDSFormObj
{
public:
    TCDSFormObj();
    ~TCDSFormObj();

public:
    int        VMS_FORM_OBJECT_ID;      //NUMBER(5)	N			FORM OBJECT ID
    AnsiString VMS_FORM_ID;             //NUMBER(5)	N			VMS FORM ID
    int        VMS_FORM_DSPL_ROW;       //NUMBER(2)	Y			VMS FORM 표출 행
    int        VMS_FORM_DSPL_CLMN;      //NUMBER(2)	Y			VMS FORM 표출 칼럼
    int        VMS_FORM_OBJECT_TYPE_CD; //NUMBER(3)	N			VMS FORM OBJECT 유형 코드
    int        VMS_FONT_NAME_CD;        //NUMBER(3)	N			VMS 글꼴 유형 코드
    int        VMS_FONT_COLR_CD;        //NUMBER(3)	N			VMS 글꼴 색상 코드
    int        VMS_FONT_BOLD;           //NUMBER(1)	Y			VMS 글꼴 방식 코드(0:Normal,1:Bold)
    int        VMS_FONT_SIZE;           //NUMBER(3)	Y	0		VMS 글꼴 크기
    int        VMS_FONT_ALIGN;          //NUMBER(1)	Y	0		VMS 표출 문자열정열방식(0:LEFT,1:RIGHT,2:CENTER)
    AnsiString VMS_DSPL_TXT;            //VARCHAR2(200)	Y		VMS 표출 텍스트
    int        VMS_DSPL_XCRDN;          //NUMBER(5)	Y			VMS 표출 X좌표
    int        VMS_DSPL_YCRDN;          //NUMBER(5)	Y			VMS 표출 Y좌표
    int        VMS_DSPL_WIDTH;          //NUMBER(5)	Y	0		VMS 표출 넓이
    int        VMS_DSPL_HEIGHT;         //NUMBER(5)	Y	0		VMS 표출 높이
    int        VMS_DSPL_BLINKING;       //NUMBER(1)	Y	0		VMS 표출 점멸 여부(0:지속, 1:점멸)
    int        VMS_DSPL_BKCOLOR;        //NUMBER(1)	Y	0		VMS 표출 배경색상코드
    int        VMS_DSPL_SIZE;           //NUMBER(7)	Y	0		VMS 표출 크기(문자:문자길이,이미지:이미지전체크기)
    AnsiString TRFC_FILL_CD;            //CHAR(1)	Y	'N'		FILL-IN 메시지 여부
    AnsiString SYMB_LIB_NMBR;           //NUMBER(4)	N	0		심벌라이브러리 번호
    AnsiString VMS_IFSC_ID;             //NUMBER(10)	Y		VMS 정보제공구간 ID
	TImage    *pImage;

public:
    void Clear();
};
//---------------------------------------------------------------------------

class TCDSForm
{
public:
    TCDSForm();
    ~TCDSForm();

public:
    AnsiString VMS_FORM_ID;             //NUMBER(5)	    N			VMS FORM ID
    AnsiString VMS_TYPE_CD;             //VARCHAR2(7)	Y			VMS 유형 코드
    int        VMS_FORM_TYPE_CD;        //NUMBER(3)	    N			VMS FORM 유형 코드
    int        VMS_FORM_COLR_CD;        //NUMBER(3)	    N			VMS FORM 배경 색상 코드
    int        VMS_FORM_DSPL_DRCT_CD;   //NUMBER(3)	    Y			VMS 메시지 표출 방향 코드
    int        VMS_FORM_DSPL_MTHD_CD;   //NUMBER(3)	    Y	0		VMS 메시지 표출 방법 코드
    //int        SYMB_LIB_NMBR;           //	N	NUMBER(4)	Y			심벌라이브러리 번호
    //AnsiString VMS_FORM_IMAG;           //	N	BLOB	Y			VMS 폼 이미지
    AnsiString UPDT_DT;                 //VARCHAR2(14)	N	TO_CHAR(sysdate, 'YYYYMMDDHH24MISS')		갱신 일시

    AnsiString LocalFileName;
    AnsiString FtpFileName;
    AnsiString TrfBakImgId;

    bool       TrfIfsc;     //도형식 하단 정보제공구간소통정보
    bool       TrfAxis;     //도형식 하단 축소통정보
    bool       TrfFixed;    //도형식 하단에 소통정보가 없을 경우 기본문자 표출여부, 20200515 추가함
    bool       IsNewForm;   //신규이거나 변경된 경우 true
public:
    TItsMap<int, TCDSFormObj*> FLists;

    void Clear();
};
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
class TCDSFormManager : public TCDSItsObject
{
public:
    TCDSFormManager();
    ~TCDSFormManager();

private:

public:
    TItsMap<AnsiString, TCDSForm*> FLists;

private:
    int LoadVmsFormObjectInfo(TADOConnection *ADbConn);

public:
    int LoadVmsFormInfo(TADOConnection *ADbConn);

};
//---------------------------------------------------------------------------
extern TCDSFormManager *CDSFormManager;
typedef std::map<AnsiString, TCDSForm*>::iterator FormItr;
//---------------------------------------------------------------------------



#endif
