예제 #1
0
bool CXtfReader::GetXYXPos(INT_PT& p_)
{
    double _dX, _dY;
    string::size_type  _tPosX ,_tPosY;

    _tPosY = FindLabel('Y');
    if (_tPosY != string::npos)
    {
        m_nLinePos = _tPosY + 1;
        GetDouble(_dY);
        m_cModeInfo.cLastAxis = LABEL_asY;
        m_cModeInfo.cValid[LABEL_asY] = VALID_LABEL;
        p_.y =  _dY * g_fDataMult;
        m_cModeInfo.nXYZ[LABEL_asY] = p_.y;
    }

    _tPosX = FindLabel('X');
    if (_tPosX != string::npos)
    {
        m_nLinePos = _tPosX + 1;
        GetDouble(_dX);
        m_cModeInfo.cLastAxis = LABEL_asX;
        m_cModeInfo.cValid[LABEL_asX] = VALID_LABEL;
        p_.x =  _dX * g_fDataMult;
        m_cModeInfo.nXYZ[LABEL_asX] = p_.x;
    }

    if ((_tPosY == string::npos) && (_tPosX == string::npos))
    {

        if (m_cModeInfo.cLastAxis != INVALID_LABEL && FindFirstDigit(m_nLinePos))
        { 
            double _dVal;
            if (!GetDouble(_dVal))
                return false;
            if (LABEL_asY == m_cModeInfo.cLastAxis)
            {
                p_.y =  _dVal * g_fDataMult;
                m_cModeInfo.nXYZ[LABEL_asY] = p_.y;
            }
            else if (LABEL_asX == m_cModeInfo.cLastAxis)
            {
                p_.x =  _dVal * g_fDataMult;
                m_cModeInfo.nXYZ[LABEL_asX] = p_.x;
            }
            else
                return false;
        }
    }
    else if (_tPosX == string::npos)
    {
        if (m_cModeInfo.cValid[LABEL_asX] == VALID_LABEL)
        {
            p_.x = m_cModeInfo.nXYZ[LABEL_asX];
        }
        else
            return false;
    }
    else if (_tPosY == string::npos)
    {
        if (m_cModeInfo.cValid[LABEL_asY] == VALID_LABEL)
        {
            p_.y = m_cModeInfo.nXYZ[LABEL_asY];
        }
        else
            return false;
    }
    return true;
}
예제 #2
0
void Do_FCode_Command(void)
{
  unsigned char FrameInstructionCode;
  int FIC_Ptr;
#ifdef USE_LVROM_LOG
  fprintf(LVROM_LOG,"%s\n",FCode_Buf);
  fflush(LVROM_LOG);
#endif

  /**************************
   * The FCodes listed in the documentation are: [DMS 02/12/2002]
   * !xy	- sound insert
   * #xy	- RC-5 command out via A/V Euroconnector
   * $0		- replay switch disable 
   * $1		- replay switch enable 
   * '		- Eject
   * )0		- Transmission delay off
   * )1		- Transmission delay on
   * *		- Halt (still mode)
   * *xxxxx+yy	- Repetitive halt and jump forward
   * *xxxxx-yy	- Repetitive halt and jump backward
   * +yy	- Instant jump forward yy tracks
   * ,0		- Standby (unload)
   * ,1		- On (load)
   * -yy	- Instant jump backward yy tracks
   * /		- Pause (halt + all muted)
   * :		- Reset to default values
   * ?F		- Picture number request
   * ?C		- Chapter number request
   * ?D		- Disc program status request
   * ?P		- Player status request
   * ?U		- User code request
   * ?=		- Revision level request
   * A0		- Audio 1-off
   * A1		- Audio 1-on
   * B0		- Audio 2-off
   * B1		- Audio 2-on
   * C0		- Chapter no display off
   * C1		- Chapter no display on
   * D0		- Picture no display off
   * D1		- Picture no display on
   * E0		- Video off
   * E1		- Video on
   * FxxxxxI	- Load picture number information register
   * FxxxxxS	- Load picture number stop register
   * FxxxxxR	- Load picture number then Still mode
   * FxxxxxN	- Load picture number then Normal play
   * FxxxxxQ	- Load picture number and continue previous play mode
   * H0		- Remote control not routed to computer
   * H1		- Remote control routed to computer
   * I0		- Local front-panel buttons disabled
   * I1		- Local front-panel buttons enabled
   * J0		- Remote control diabled
   * J1		- Remote control enabled
   * L		- Still forward
   * M		- Still reverse
   * N		- Normal play forward
   * Nxxxxx+yy	- Repetitive play forward and jump forward
   * Nxxxxx-yy	- Repetitive play forward and jump backward
   * O		- Play reverse
   * Oxxxxx+yy	- Play reverse and jump forward
   * Oxxxxx-yy	- Play reverse and jump forward jump backward
   * QxxR	- Goto chapter and halt
   * QxxN	- Goto chapter and play
   * QxxyyzzS	- Goto chapter and halt
   * SxxF	- Set fast speed value
   * SxxS	- Set slow speed value
   * TxxyyN	- Set fast speed value
   * TxxyyI	- Set slow speed value
   * U		- Slow motion forward
   * V		- Slow motion reverse
   * VPy	- Video overlay (VP1 is default)
   * VPX	- Request current VP mode
   * W		- Fast forward
   * X		- Clear
   * Z		- Fast reverse
   * [0		- Audio-1 from internal
   * [1		- Audio-1 from external
   * \0		- Video from internal
   * \1		- Video from external
   * ]0		- Audio-2 from internal
   * ]1		- Audio-2 from external
   * _0		- Teletext from disc off
   * _1		- Teletext from disc on
   ******************/

  FCode_Ptr=0;
  if (FCode_Buf[0]=='F')
  {
    // Frame code
    FIC_Ptr=FindFirstDigit(FCode_Buf);
    FrameInstructionCode=FCode_Buf[FIC_Ptr];
    FCode_Buf[FIC_Ptr]=0;
    if (FrameInstructionCode=='R')
    {
      FrameMode=V_STILL;
      GotoFrame(atoi(FCode_Buf+1),F_HALT);
      sprintf(FCode_Reply_Buf,"A0\r");
      LVAudioEnabled=0;
    }
    if (FrameInstructionCode=='S')
    {
      StopReg=atoi(FCode_Buf+1);
      sprintf(FCode_Reply_Buf,"\r");
    }
    if ((FrameInstructionCode=='I') || (FrameInstructionCode=='N') ||
    	(FrameInstructionCode=='Q'))
    {
//      MessageBox(GETHWND, FCode_Buf,"Unimplemented F-code",MB_OK|MB_ICONERROR);
    }
  }
  if ((FCode_Buf[0]=='N') && (FCode_Buf[1]<32))
  {
	  FrameMode=V_FORWARD1;
	  sprintf(FCode_Reply_Buf,"\r");
  }
  if ((FCode_Buf[0]=='A') || (FCode_Buf[0]=='B'))
  {
	  // Audio command - get state
	  LVA=FCode_Buf[1]-48;
	  sprintf(FCode_Reply_Buf,"\r");
  }
  if (FCode_Buf[0]=='E')
  {
	  // Video command - get state
	  LVE=FCode_Buf[1]-48;
	  sprintf(FCode_Reply_Buf,"\r");
  }
  if (strncmp(FCode_Buf,"?U",2)==0)
  {
    sprintf(FCode_Reply_Buf, "%s\r", lvDiscUsercode[currLvDisc]);
  }
  if (strncmp(FCode_Buf,"VP",2)==0)
  {
    unsigned char testchar;
    // Select Mix Modee
    testchar=FCode_Buf[2];
    if (testchar=='X')
    {
      // report it
      sprintf(FCode_Reply_Buf, "VP%c\n", 48+MixMode);
    }
    else
    {
      if ((testchar>='1') && (testchar<='5'))
      {
	MixMode=testchar-48;
	sprintf(FCode_Reply_Buf,"\r");
      }
    }
  }
  if (FCode_Buf[0]=='D')
  {
	  // Picture Number/Time Code Display Off/On
          lvPictureNumDisplay = FCode_Buf[1]-48;
	  sprintf(FCode_Reply_Buf,"\r");
  }
  if (strncmp(FCode_Buf,"?=",2)==0)
    sprintf(FCode_Reply_Buf,"=01718\r");

  if (FCode_Buf[0] == 'X')
  {
    StopReg=MAX_LV_FRAME_NUM;
    LVAudioEnabled=0;
    FrameMode=V_STILL;
  }
}