
#ifndef str_conf_h
#define str_conf_h


#include  "str_heap.h"

//[2012.05.17.목][추가!!!]
#include  "font.h"


struct STRCONFITEM
{
  //[2012.05.16.수][생성!!!]{---------------------------------
  //[문자열] 안의 지정 [구간] 한개의 [출력설정] 정보.
  //
  //실제 총 [10바이트] 크기로 [자료열] 에 배치된다.
  //
  //[주의!!!]-------------------------------------------------
  //[단어] 가 아니라 [구간] 이다.
  //[공백] 이나 [구간] 정보가 없는 경우는 [기본정보] 로 출력.
  //}---------------------------------------------------------

  //문자색(4바이트).
  int            frontColor;

  //배경색(4바이트).
  int            backColor;

  //문자 형식(1바이트) 정보면 충분.
  //현재 [기본/굵은:문자] 로 두개밖에 없음.
  unsigned char  style;

  //투명속성 적용 [유/무](1바이트).
  bool           transparent;

};

struct STRCONF_STRHEAP_ITEM
{
  //[2012.05.16.수][생성!!!]{------------------------------------------
  //[STRHEAP] 상 지정 [목록 구간] 에 해당하는 [문자열] 에 적용할 속성.
  //이 정보는 [형식 적용 문자열] 을 만드는데 사용된다.
  //}------------------------------------------------------------------

  //비교 구간 시작 번호.
  int  sn;
  //비교 구간 끝 번호
  int  en;

  //이 [목록 구간] 해당 [문자열] 과 일치하는 [구간] 에 적용할 [출력 설정] 정보.
  struct STRCONFITEM  conf;

};

//[2012.05.17.목][완료!!!]
//[2019.02.24.일][완료]
void __fastcall StrConf_Word_Set(//[형식 적용 문자열] 자료열을 반환(배열).
                                 //반드시 처리할 문자열에 비례한 넉넉한 크기를 가져야 한다.
                                 unsigned char                *rConfStr_,
                                 //[판별정보]{-------------------------------------
                                 //적용 [비교 문자열] 정보가 있는 [STRHEAP].
                                 struct STRHEAP               *pStrHeap_,
                                 //[STRHEAP] 상 [목록구간] 별 [출력설정] 정보배열.
                                 struct STRCONF_STRHEAP_ITEM  *pSetList_,
                                 //<pSetList> 배열의 크기.
                                 unsigned char                 pSetListCount,
                                 //[기본정보][2012.05.17.목][추가!!!]--------------
                                 //[기본 출력 형식] 을 지정.
                                 struct STRCONFITEM            pStdConf,
                                 //}-----------------------------------------------
                                 //처리할 문자열.
                                 char                         *pStr_);

//[2019.02.26.화][완료]
void __fastcall StrConf_StrBound_Set(//처리할 문자열.
                                     char                *pStr_,
                                     //지정 범위(시작/끝).
                                     int                  pStartIndex,
                                     int                  pEndIndex,
                                     //[기본 출력 형식]-------------
                                     struct STRCONFITEM   pStdConf,
                                     //[지정 출력 형식]-------------
                                     struct STRCONFITEM   pSetConf,
                                     //}----------------------------
                                     //[형식 적용 문자열] 자료열을 반환(배열(실제는 메모리에 가깝다)).
                                     //반드시 처리할 문자열에 비례한 넉넉한 크기를 가져야 한다.
                                     unsigned char       *rConfStr_);

//[2012.05.19.토][완료!!!]
void __fastcall StrConf_Out_AutoLine(//[기본정보]{------------------------------------------------
                                     //[문자] 를 출력할 bitmap handle.
                                     Graphics::TBitmap  *pViewHandle_,
                                     //[사용 글꼴 묶음].
                                     struct FONTPACK    *pFontPack_,
                                     //문자열을 출력할 시작 위치.(BASE:0)
                                     int                 pX,
                                     int                 pY,
                                     //[출력폭] 을 지정(0 인 경우 사용하지 않음).
                                     //이 [출력폭] 을 넘는 경우 CRLF 없이 자동으로 행을 바꿔준다.
                                     //<pViewHandle> (0, 0) 위치를 기준으로 한 폭이 된다.
                                     int                 pWidth,
                                     //출력할 [형식 적용 문자열]----------------------------------
                                     //출력할 [형식 적용 문자열] 자료열(배열).
                                     unsigned char      *pConfStr_,
                                     //[반환정보]-------------------------------------------------
                                     //문자열 출력후 변경된 (x, y) 좌표를 반환한다.
                                     int                *rX_,
                                     int                *rY_);
                                     //}----------------------------------------------------------

//[2012.05.19.토][완료!!!]
bool __fastcall StrConf_AutoLine_OutAreaInfo(//[기본정보]{------------------------------------------------
                                             //[사용 글꼴 묶음].
                                             struct FONTPACK    *pFontPack_,
                                             //[출력폭] 을 지정(0 인 경우 사용하지 않음).
                                             //이 [출력폭] 을 넘는 경우 CRLF 없이 자동으로 행을 바꿔준다.
                                             //<pViewHandle> (0, 0) 위치를 기준으로 한 폭이 된다.
                                             int                 pWidth,
                                             //출력할 [형식 적용 문자열]----------------------------------
                                             //출력할 [형식 적용 문자열] 자료열(배열).
                                             unsigned char      *pConfStr_,
                                             //[반환정보]-------------------------------------------------
                                             //문자열 출력후 변경된 (x, y) 좌표를 반환한다.
                                             int                *rWidth_,
                                             int                *rHeight_);
                                             //}----------------------------------------------------------

//[2012.06.29.금][완료!!!]
int __fastcall StrConf_GetSize(//출력할 [형식 적용 문자열] 자료열(배열).
                               unsigned char  *pConfStr_);



#endif
