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

#ifndef msg_msgH
#define msg_msgH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------


#include "font.h"

#include "c_define.h"


class Tmsg_msg_Form : public TForm
{
__published:	// IDE-managed Components
        void __fastcall FormMouseWheel(TObject *Sender, TShiftState Shift,
          int WheelDelta, TPoint &MousePos, bool &Handled);
        void __fastcall FormMouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y);
    void __fastcall FormMouseUp(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y);
private:	// User declarations
public:		// User declarations

        __fastcall Tmsg_msg_Form(TComponent* Owner);

        //[2012.04.29.일][완료!!!]
        __fastcall Tmsg_msg_Form::~Tmsg_msg_Form(void);

        //[서브클래싱]
        //{
            void __fastcall WndProc(Messages::TMessage &Message);
        //}

        //[VAR]
        //{
            //[환경변수]
            //{
                //[2007.10.02.화][추가!!!]
                struct  IDE_OPTION   *_ide_option;

            //}

            //[실제 그리는 영역]{-----------
            Graphics::TBitmap  *_bmp_;

            Graphics::TBitmap  *_bmp_back_;
            //}-----------------------------

            //[사용글꼴]{--------------
            struct FONTPACK     _font;
            //}------------------------

            //사용 폰트를 적용한 한 행의 높이.
            int                 _line_height;
            //사용 폰트를 적용한 문자 한개의 넓이.
            int                 _word_width;
            //현재 표시할 [문서상자] 의 index.
            int                 _text_index;

            //[출력문자열]
            //{
                //[출력내용]------------------------------------------------------------
                //10kbyte 정도면 알림글을 출력하는데 충분하다.
                //이 문서는 사용자가 접근할수 없는 문서로 완전히 용량을 관리 할수 있다.
                char            _buf_msg[OPT_MsgBufSize]; //일단 용량은 1M 로 정한다.

                //[2009.04.24.금][추가!!!]
                //저장된 크기를 관리한다('\0' 이 포함된 크기).
                int             _buf_msgSize; //(BASE : 0)
                //[개발내용검증]--------------------------------------------------------
                //계속 출력되는 경우 용량이 넘치지 않도록 1M 정도로 설정한다.
                char            _buf_debug[OPT_DebugBufSize];

                //[2009.04.24.금][추가!!!]
                //저장된 크기를 관리한다('\0' 이 포함된 크기).
                int             _buf_debugSize; //(BASE : 0)
                //----------------------------------------------------------------------
            //}

            //[문서상자]
            //{
                //실제 [문서상자] 의 주소값을 관리한다.
                //현재 2 개의 탭을 가지고 있으므로 2 개만 생성한다.
                //이렇게 하는 것은 두개의 저장소의 크기를 달리 해야 하기 때문이다.
                char           *_buf[2];

                //scroll 위치를 관리한다.
                int             _scroll_position[2];

                //{
                    #define  d_msg_msg      0
                    #define  d_msg_debug    1
                //}
            //}

            //[전체배경그림 시작좌표][2007.03.25.일][추가!!!]
            //{
                //전체 배경그림을 사용하는 경우 이 폼에서 표시할 시작 위치 좌표를 가진다.
                //개별 배경 그림의 경우는 사용되지 않는다.
                int   _bmporg_x, _bmporg_y;
            //}

            //[2007.03.31.토][추가!!!]
            //배경 bmp 경로는 전역 변수로 관리 하는 것이 좋다.(수시로 바뀌는 것이 아니므로...)
            AnsiString  _bmp_path;
            
        //}

        //[FUNCTION]
        //{
            //[2007.03.25.일][완료!!!]
            void __fastcall _Shape(void);

            //[2012.06.05.화][완료!!!]
            void __fastcall _Resize(void);

            
            //[2012.06.05.화][완료!!!]
            void __fastcall _Width(int   pWidth,
                                   //[다시 그리기] 하는 경우는 <true>.
                                   bool  pRePaint);

            //[2012.06.05.화][완료!!!]
            void __fastcall _Height(int   pHeight,
                                    //[다시 그리기] 하는 경우는 <true>.
                                    bool  pRePaint);

                                    
            void __fastcall _Draw(void);

            //[2012.06.05.화][완료!!!]
            void __fastcall _Text(int  pTEXTindex);

            //[2009.04.24.금][완료!!!]
            //[2018.10.21.일][완료!!!]
            void __fastcall _BufAdd(int    pTextIndex,
                                    //저장소 처음부터 다시 저장하는 경우는 true.
                                    bool   pClearAdd,
                                    char  *pStr);

            //[2011.08.21.일][완료!!!]
            void __fastcall _Print(int    pTEXTindex,
                                   char  *pSTR);

            //[2009.05.14.금][완료!!!]
            void __fastcall _PrintAdd(int    pTEXTindex,
                                      char  *pSTR);

            //[2009.05.14.금][완료!!!]
            void __fastcall _PrintAddLine(int    pTEXTindex,
                                          char  *pSTR);

            //[2009.05.14.목][완료!!!]
            void __fastcall _Scroll_Set(void);
            
        //}

        //[배경 설정]
        //{
            //[2009.04.20.월][완료!!!]
            void __fastcall _BACKBMP_Brightness(int  pBrightness);

            //[2009.04.20.월][완료!!!]
            void __fastcall _BACKBMP_ChangeJpeg(AnsiString  pJpegFilePath);

        //}


        

};
//---------------------------------------------------------------------------
extern PACKAGE Tmsg_msg_Form *msg_msg_Form;
//---------------------------------------------------------------------------
#endif
