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

#include <vcl.h>
#pragma hdrstop

#include "gui_captionbar.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Tgui_captionbar_Form *gui_captionbar_Form;
//---------------------------------------------------------------------------


#include "ide_main.h"
#include "gui.h"


__fastcall Tgui_captionbar_Form::Tgui_captionbar_Form(TComponent* Owner)
        : TForm(Owner)
{
  //[환경변수]
  //{
      //[2007.10.02.화][추가!!!]
      IDE_Get_Option(&_ide_option);

  //}

  //[form]
  //{
      //[캡션] 높이는 기본 크기로 지정한다.
      _captionbar_height = 17;

      this->Left   = 0;
      this->Top    = 0;
      this->Width  = ((TForm *)Owner)->Width;
      this->Height = _captionbar_height;

      this->Color  = clWhite;
  //}

  //[bmp]
  //{
      //실제 그림 영역을 생성한다.
      _bmp_ = new Graphics::TBitmap;

      //그림 영역 크기 설정.
      _bmp_->Width       = Screen->Width;
      _bmp_->Height      = _captionbar_height;

      //24bit bitmap 으로 지정한다.
      _bmp_->PixelFormat = pf24bit;
  //}

  //[글꼴 설정]
  //{
      //[기본 끌꼴 등록]{------------------------------------------------
      //모든 프로그램에서 기본적으로 사용하는 [system 글꼴] 을 등록한다.
      FONTPACK_SetDefault(&_font);
      //}----------------------------------------------------------------

      _font.margin_size   = 2;

      _font.offset_left   = 0;
      _font.offset_right  = 0;
      _font.offset_top    = 1;
      _font.offset_bottom = 1;

      //[2010.01.26.화][추가!!!]{---
      _font.en_offset_left  = 0;
      _font.en_offset_right = 0;
      //}---------------------------

  //}

  //[컨트롤 그리기]
  //{
      //컨트롤을 그려서 모양을 만든다.
      _Shape();
  //}

  return;

}

__fastcall Tgui_captionbar_Form::~Tgui_captionbar_Form(void)
{
  //[2012.04.29.일][수정!!!]

  if(_bmp_ != NULL) { delete _bmp_; _bmp_ = NULL; }

}

//[서브클래싱]------------------------------------------------------------------

void __fastcall Tgui_captionbar_Form::WndProc(Messages::TMessage  &Message)
{
  //[2006.12.12.화][생성!!!]{-----------------------------------------------------
  //TForm 의 경우는 바탕을 칠하고 OnPaint() 를 발생하게 되므로 실제 _Draw() 를
  //OnPaint() 에서 사용하는 경우는 크기가 변경되는 경우 바로 칠해지지 않아서
  //하얀색 바탕이 그대로 나오게 되어 보기 좋지 않게 된다.
  //따라서 TForm 자체의 바탕을 그리는 WM_ERASEBKGND 에서 바로 _Draw() 를 사용하여
  //그리고 OnPaint() 는 처리하지 않는다.
  //C++Builder 와 같이 완벽하게 처리되는 깜박임이 전혀 없는 화면을 만들수 있다.
  //}-----------------------------------------------------------------------------

  if(Message.Msg == WM_ERASEBKGND)
  {
    _Draw();

    //바로 죵료하지 않으면 WM_ERASEBKGND 메세지가 다음 TForm::WndProc(Message); 에서
    //다시 처리 되어 TForm->Color 로 칠해지게 되어 _Draw() 로 그린 것이 다 지워지므로
    //바로 종료한다.
    return;

  }

  //[기본처리]
  //{
      //기본 메세지는 반드시 처리 되어야 한다.
      TForm::WndProc(Message);
  //}

  return;

}

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

void __fastcall Tgui_captionbar_Form::_Shape(void)
{
  //[2006.10.26.목][생성!!!]

  //[캡션출력]
  //{
      //기본 caption 을 출력한다.
      _Caption("제목글");
  //}

  return ;

}

void __fastcall Tgui_captionbar_Form::_Caption(AnsiString  pSTR)
{
  //[2006.10.26.목][생성!!!]

  //[VAR]
  //{
      int   w, h;

      int   color;

  //}

  //[바탕색]
  //{
      //칠할 색을 수정한다.
      BMP_Get_Bright_Color(_ide_option->color_0, IDE_BRIGHT_captionbar, &color);

      _bmp_->Canvas->Brush->Color = color;
      _bmp_->Canvas->FillRect(_bmp_->Canvas->ClipRect);

  //}

  //[테두리 만들기]
  //{
      _bmp_->Canvas->Pen->Color   = _ide_option->color_0;
      _bmp_->Canvas->Pen->Width   = 1;
      _bmp_->Canvas->Brush->Style = bsClear;
      _bmp_->Canvas->Rectangle(_bmp_->Canvas->ClipRect);
     
  //}

  //[caption 문자열]
  //{                                    
      FONT_Out_StyleString2(_bmp_, &_font, 3, 2,
                            IDE_COLOR_3, color, false,
                            d_FONTSTYLE_default,
                            pSTR.c_str(),
                            d_FONT_underline_no, true, 2, IDE_COLOR_3,
                            &w, &h);
  //}

  //[view]{-------------
  //그린 것을 보여준다.
  _Draw();
  //}-------------------

  return;

}

void __fastcall Tgui_captionbar_Form::_Resize(void)
{
  //[2006.10.26.목][생성!!!]{--
  //크기를 조정한다.
  //}--------------------------

  this->Width = this->Parent->Width;

  //[view]{-------------
  //그린 것을 보여준다.
  _Draw();
  //}-------------------

  return;

}

void __fastcall Tgui_captionbar_Form::_Draw(void)
{
  //[2006.10.31.화][생성!!!]

  BitBlt(this->Canvas->Handle, 0, 0,
         this->Width, this->Height,
         _bmp_->Canvas->Handle, 0, 0, SRCCOPY);

  return;

}

//[EVENT]-----------------------------------------------------------------------

