
                                    
#include <vcl.h>
#pragma hdrstop

//[2012.08.18.토][생성!!!]{---
//<GPicture> 관련을 처리한다.
//}---------------------------

#include  "GUI_GPicture.h"

#include  "vmos_def.h"
#include  "vmos.h"
#include  "c_define.h"

#include  "gui.h"

#include  "main.h"

#include  "ide_library.h"


void __fastcall _GUI_GPicture_OpenDialog(void)
{
  //[2012.08.18.토][생성!!!]

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU1  rReturn;

      //}

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{------------------------------------
  //unsigned char _GPicture_열기대화상자_(void);
  //}--------------------------------------------

  //[기본주소 얻기]
  //{
      //[!]{--------------------------------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[명령처리]
  //{
      //[열기 대화상자] 를 보여준다.
      rReturn = main_Form->vmos_OpenPictureDialog->Execute();

  //}

  //[반환]
  //{
      //[값] 쓰기.
      if(vmos->VMOS_WrRd(d_Wr, ADR, (1), (DTU1 *)(&rReturn)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

  //}

}

void __fastcall _GUI_GPicture_OpenDialog_FileName(void)
{
  //[2012.08.18.토][생성!!!]

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   rFileName;

      //}

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{------------------------------------------------
  //void _GPicture_열기대화상자_문서이름_(char  *r문서이름);
  //}--------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[!]{--------------------------------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[char  *r문서이름]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&rFileName)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //<Ide> 내부적으로만 사용되므로 바로 실제 주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(rFileName, &rFileName);

  //}

  //[명령처리]
  //{
	  //현재 대화상자의 [문서이름] 을 반환한다.
	  STR_Assign((char *)rFileName, ((AnsiString)(main_Form->vmos_OpenPictureDialog->FileName)).c_str());

  //}

  return;

}

void __fastcall _GUI_GPicture_GetImageSize(void)
{
  //[2021.04.17.토][생성]

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8  pPathNameExt;
          DTU8  rWidth;
          DTU8  rHeight;

          DTU1  rReturn;

      //}

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{-------------------------------------------------------------------
  //unsigned char _GPicture_그림크기_얻기_(char          *p그림_경로이름확장자,
  //                                       unsigned int  *r폭,
  //                                       unsigned int  *r높이);
  //}---------------------------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[!]{--------------------------------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[char  *p그림_경로이름확장자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pPathNameExt)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //<Ide> 내부적으로만 사용되므로 바로 실제 주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pPathNameExt, &pPathNameExt);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned int  *r폭]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&rWidth)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //<Ide> 내부적으로만 사용되므로 바로 실제 주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(rWidth, &rWidth);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned int  *r높이]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&rHeight)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //<Ide> 내부적으로만 사용되므로 바로 실제 주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(rHeight, &rHeight);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[명령처리]
  //{
      rReturn = Image_Get_Size((char *)pPathNameExt,
                               (unsigned int *)rWidth,
                               (unsigned int *)rHeight);

  //}

  //[반환]
  //{
      //[값] 쓰기.
      if(vmos->VMOS_WrRd(d_Wr, ADR, (1), (DTU1 *)(&rReturn)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

  //}

}




