Ejemplo n.º 1
0
DviSpecialType
TpicArcSpecialImpl::Parse ()
{
  m_bOutline = (strncmp(GetXXX(), "ar", 2) == 0);
  if (sscanf_s(GetXXX() + 2,
	       " %d %d %d %d %f %f",
	       &cx, &cy, &m_rx, &m_ry, &m_s, &m_e)
      != 6)
    {
      trace_error->WriteLine ("libdvi", T_("bad ar special"));
      return (DviSpecialType::Unknown);
    }
  return (DviSpecialType::Tpic);
}
Ejemplo n.º 2
0
DviSpecialType SourceSpecialImpl::Parse()

{
  static atomic_long nextid = 1;
  id = nextid++;
  const char* lpsz = GetXXX() + 4; // src:
  while (*lpsz == ' ')
  {
    ++lpsz;
  }
  if (*lpsz != 0 && isdigit(*lpsz))
  {
    char* fileName;
    lineNum = strtol(lpsz, &fileName, 10);
    if (fileName != nullptr)
    {
      while (*fileName == ' ')
      {
        ++fileName;
      }
      if (*fileName != 0)
      {
        this->fileName = fileName;
      }
    }
  }
  return DviSpecialType::Source;
}
Ejemplo n.º 3
0
DviSpecialType
SourceSpecialImpl::Parse ()

{
  static LONG volatile nextid = 1;
  id = InterlockedIncrement(&nextid);
  const char * lpsz = GetXXX() + 4; // src:
  while (*lpsz == ' ')
    {
      ++ lpsz;
    }
  if (*lpsz != 0 && isdigit(*lpsz))
    {
      char * lpszFileName;
      lineNum = strtol(lpsz, &lpszFileName, 10);
      if (lpszFileName != 0)
	{
	  while (*lpszFileName == ' ')
	    {
	      ++ lpszFileName;
	    }
	  if (*lpszFileName != 0)
	    {
	      fileName = lpszFileName;
	    }
	}
    }
  return (DviSpecialType::Source);
}
Ejemplo n.º 4
0
Archivo: ps.cpp Proyecto: MiKTeX/miktex
DviSpecialType PsdefSpecialImpl::Parse()
{
  const char* lpsz = GetXXX();
  if (strncmp(GetXXX(), "header=", 7) == 0)
  {
    isFileName = true;
    lpsz += 7;
  }
  else
  {
    isFileName = false;
    lpsz += 1;                        // !
  }
  while (*lpsz)
  {
    str += *lpsz++;
  }
  return DviSpecialType::Psdef;
}
Ejemplo n.º 5
0
DviSpecialType
TpicPolySpecialImpl::Parse ()
{
  m_outline = OutlineStyle::Solid;
  m_length = 0;
  m_bSpline = false;
  if (strncmp(GetXXX(), "ip", 2) == 0)
    {
      m_outline = OutlineStyle::None;
    }
  else if (strncmp(GetXXX(), "da", 2) == 0)
    {
      if (sscanf_s(GetXXX(), "da %f", &m_length) != 1)
	{
	  trace_error->WriteLine
	    ("libdvi",
	     T_("bad da special"));
	}
      else
	{
	  m_outline = OutlineStyle::Dashes;
	}
    }
  else if (strncmp(GetXXX(), "dt", 2) == 0)
    {
      if (sscanf_s(GetXXX(), "dt %f", &m_length) != 1)
	{
	  trace_error->WriteLine
	    ("libdvi",
	     T_("bad dt special"));
	}
      else
	{
	  m_outline = OutlineStyle::Dots;
	}
    }
  else if (strncmp(GetXXX(), "sp", 2) == 0)
    {
      m_bSpline = true;
      if (sscanf_s(GetXXX(), "sp %f", &m_length) == 1)
	{
	  if (m_length > 0)
	    {
	      m_outline = OutlineStyle::Dashes;
	    }
	  else if (m_length < 0)
	    {
	      m_length *= -1;
	      m_outline = OutlineStyle::Dots;
	    }
	}
    }

  return (DviSpecialType::Tpic);
}
Ejemplo n.º 6
0
Archivo: ps.cpp Proyecto: MiKTeX/miktex
DviSpecialType DvipsSpecialImpl::Parse()
{
  protection = false;
  isFileName = false;
  const char* lpsz = GetXXX();
  if (*lpsz == '"')
  {
    lpsz += 1;
    protection = true;
  }
  else if (strncmp(lpsz, "ps:", 3) == 0)
  {
    if (strncmp(GetXXX(), "ps::[begin]", 11) == 0)
    {
      lpsz += 11;
    }
    else if (strncmp(GetXXX(), "ps::[end]", 9) == 0)
    {
      lpsz += 9;
    }
    else if (strncmp(GetXXX(), "ps::", 4) == 0)
    {
      lpsz += 4;
    }
    else
    {
      lpsz += 3;
      const char* lpsz2 = lpsz;
      while (*lpsz2 && isspace(*lpsz2))
      {
        ++lpsz2;
      }
      if (strncmp(lpsz2, "plotfile", 8) == 0)
      {
        lpsz2 += 8;
        while (*lpsz2 && isspace(*lpsz2))
        {
          ++lpsz2;
        }
        while (*lpsz2 && !isspace(*lpsz2))
        {
          str += *lpsz2++;
        }
        if (str.length() == 0)
        {
          trace_error->WriteLine("libdvi", T_("bad ps: plotfile special"));
        }
        else
        {
          isFileName = true;
        }
        return DviSpecialType::Ps;
      }
    }
  }
  while (*lpsz != 0)
  {
    str += *lpsz++;
  }
  return DviSpecialType::Ps;
}
Ejemplo n.º 7
0
Archivo: ps.cpp Proyecto: MiKTeX/miktex
DviSpecialType PsfileSpecialImpl::Parse()
{
  hSize = 0;
  vSize = 0;
  hOffset = 0;
  vOffset = 0;
  hScale = 100;
  vScale = 100;
  angle = 0;
  llx = 0;
  lly = 0;
  urx = 0;
  ury = 0;
  rwi = 0;
  rhi = 0;
  isClipped = false;
  hasHSize = false;
  hasVSize = false;
  hasHOffset = false;
  hasVOffset = false;
  hasHSale = false;
  hasVScale = false;
  hasAngle = false;
  hasLlx = false;
  hasLLy = false;
  hasUrx = false;
  hasUry = false;
  hasRwi = false;
  hasRhi = false;
  hasClipFlag = false;

  CharBuffer<char> autoBuffer(specialString.length() + 1);
  char* specialSpec = autoBuffer.GetData();
  strcpy_s(specialSpec, specialString.length() + 1, GetXXX());
  pair<char*, char*> keyVal;
  while (*specialSpec && getkv(specialSpec, keyVal))
  {
    if (_strcmpi(keyVal.first, "psfile") == 0)
    {
      if (keyVal.second != nullptr)
      {
        fileName = keyVal.second;
      }
    }
    else if (_strcmpi(keyVal.first, "hsize") == 0)
    {
      if (keyVal.second != nullptr)
      {
        hSize = atoi(keyVal.second);
        hasHSize = true;
      }
    }
    else if (_strcmpi(keyVal.first, "vsize") == 0)
    {
      if (keyVal.second != nullptr)
      {
        vSize = atoi(keyVal.second);
        hasVSize = true;
      }
    }
    else if (_strcmpi(keyVal.first, "hoffset") == 0)
    {
      if (keyVal.second != nullptr)
      {
        hOffset = atoi(keyVal.second);
        hasHOffset = true;
      }
    }
    else if (_strcmpi(keyVal.first, "voffset") == 0)
    {
      if (keyVal.second != nullptr)
      {
        vOffset = atoi(keyVal.second);
        hasVOffset = true;
      }
    }
    else if (_strcmpi(keyVal.first, "hscale") == 0)
    {
      if (keyVal.second != nullptr)
      {
        hScale = atoi(keyVal.second);
        hasHSale = true;
      }
    }
    else if (_strcmpi(keyVal.first, "vscale") == 0)
    {
      if (keyVal.second != nullptr)
      {
        vScale = atoi(keyVal.second);
        hasVScale = true;
      }
    }
    else if (_strcmpi(keyVal.first, "angle") == 0)
    {
      if (keyVal.second != nullptr)
      {
        angle = atoi(keyVal.second);
        hasAngle = true;
      }
    }
    else if (_strcmpi(keyVal.first, "llx") == 0)
    {
      if (keyVal.second != nullptr)
      {
        llx = atoi(keyVal.second);
        hasLlx = true;
      }
    }
    else if (_strcmpi(keyVal.first, "lly") == 0)
    {
      if (keyVal.second != nullptr)
      {
        lly = atoi(keyVal.second);
        hasLLy = true;
      }
    }
    else if (_strcmpi(keyVal.first, "urx") == 0)
    {
      if (keyVal.second != nullptr)
      {
        urx = atoi(keyVal.second);
        hasUrx = true;
      }
    }
    else if (_strcmpi(keyVal.first, "ury") == 0)
    {
      if (keyVal.second != nullptr)
      {
        ury = atoi(keyVal.second);
        hasUry = true;
      }
    }
    else if (_strcmpi(keyVal.first, "rwi") == 0)
    {
      if (keyVal.second != nullptr)
      {
        rwi = atoi(keyVal.second);
        hasRwi = true;
      }
    }
    else if (_strcmpi(keyVal.first, "rhi") == 0)
    {
      if (keyVal.second != nullptr)
      {
        rhi = atoi(keyVal.second);
        hasRhi = true;
      }
    }
    else if (_strcmpi(keyVal.first, "clip") == 0)
    {
      isClipped = true;
      hasClipFlag = true;
    }
  }

  return DviSpecialType::Psfile;
}