Example #1
0
ezStringIterator ezPathUtils::GetFileName(const char* szPath, const char* szPathEnd)
{
  // make sure szPathEnd is valid
  ezStringUtils::UpdateStringEnd(szPath, szPathEnd);

  const char* szSeparator = FindPreviousSeparator(szPath, szPathEnd);

  const char* szDot = ezStringUtils::FindLastSubString(szPath, ".", szPathEnd);

  if (szDot < szSeparator) // includes (szDot == nullptr), szSeparator will never be nullptr here -> no extension
  {
    return ezStringIterator(szSeparator + 1, szPathEnd, szSeparator + 1);
  }

  if (szSeparator == nullptr)
  {
    if (szDot == nullptr) // no folder, no extension -> the entire thing is just a name
      return ezStringIterator(szPath, szPathEnd, szPath);

    return ezStringIterator(szPath, szDot, szPath); // no folder, but an extension -> remove the extension
  }

  // now: there is a separator AND an extension

  return ezStringIterator(szSeparator + 1, szDot, szSeparator + 1);
}
Example #2
0
ezStringIterator ezPathUtils::GetFileNameAndExtension(const char* szPath, const char* szPathEnd)
{
  ezStringUtils::UpdateStringEnd(szPath, szPathEnd);

  const char* szSeparator = FindPreviousSeparator(szPath, szPathEnd);

  if (szSeparator == nullptr)
    return ezStringIterator(szPath, szPathEnd, szPath);

  return ezStringIterator(szSeparator + 1, szPathEnd, szSeparator + 1);
}
Example #3
0
ezStringIterator ezPathUtils::GetFileExtension(const char* szPath, const char* szPathEnd)
{
  ezStringUtils::UpdateStringEnd(szPath, szPathEnd);

  const char* szDot = ezStringUtils::FindLastSubString(szPath, ".", nullptr, szPathEnd);

  if (szDot == nullptr)
    return ezStringIterator(nullptr);

  // find the last separator in the string
  const char* szSeparator = FindPreviousSeparator(szPath, szPathEnd);

  if (szSeparator > szDot)
    return ezStringIterator(nullptr);

  return ezStringIterator(szDot + 1, szPathEnd, szDot + 1);
}
Example #4
0
ezStringIterator ezPathUtils::GetFileDirectory(const char* szPath, const char* szPathEnd)
{
  // make sure szPathEnd is valid
  ezStringUtils::UpdateStringEnd(szPath, szPathEnd);

  ezStringIterator end (szPath, szPathEnd, szPath);
  end.ResetToBack();

  // if it already ends in a path separator, do not return a different directory
  if (IsPathSeparator(end.GetCharacter()))
    return ezStringIterator(szPath, szPathEnd, szPath);

  // find the last separator in the string
  const char* szSeparator = FindPreviousSeparator(szPath, szPathEnd);

  // no path separator -> root dir -> return the empty path
  if (szSeparator == nullptr)
    return ezStringIterator(nullptr);

  return ezStringIterator(szPath, szSeparator + 1, szPath);
}
void OnScreenLogWriter::LogMessageHandler(const ezLoggingEventData& eventData)
{
  // ignore registered input sloat
  if(ezStringUtils::FindSubString(eventData.m_szText, "Registered Input Slot") != NULL)
    return;

  // ignore groups
  if(eventData.m_EventType == ezLogMsgType::BeginGroup)
  {
    m_sCurrentGroup = eventData.m_szText;
    return;
  }
  if(eventData.m_EventType == ezLogMsgType::EndGroup)
  {
    m_sCurrentGroup = "";
    return;
  }

  // split up every line
  const char* text = eventData.m_szText;
  do {
    ezStringBuilder logtext;
    if(m_sCurrentGroup != "")
    {
      logtext.Append("[");
      logtext.Append(m_sCurrentGroup.GetData());
      logtext.Append("] ");
    }

    const char* nextLine = ezStringIterator(text).FindSubString("\n");
    if(nextLine != NULL)
    {
      ezUInt32 count = static_cast<ezUInt32>(nextLine-text);
      ezHybridArray<char, 128> linecpy;
      linecpy.SetCount(count);
      char* data = static_cast<ezArrayPtr<char>>(linecpy).GetPtr();
      ezStringUtils::Copy(data, count, text);
      logtext.Append(data);
      text = nextLine+1;
    }
    else
    {
      logtext.Append(text);
      text = NULL;
    }

    LogEntry newEntry;
    newEntry.text = logtext.GetData();
    switch(eventData.m_EventType)
    {
    case ezLogMsgType::InfoMsg:
      newEntry.color = ezColor(0.4f, 0.4f, 0.4f);
      break;
    case ezLogMsgType::SeriousWarningMsg:
    case ezLogMsgType::WarningMsg:
      newEntry.color = ezColor(1.0f, 0.7f, 0.1f);
      break;
    case ezLogMsgType::ErrorMsg:
      newEntry.color = ezColor::GetRed();
      break;
    case ezLogMsgType::SuccessMsg:
      newEntry.color = ezColor::GetGreen();
      break;
    default:
      newEntry.color = ezColor::GetWhite();
      break;
    }
    if(!m_MessageBuffer.CanAppend())
    {
      m_fOldestItemFade = 1.0f;
      m_MessageBuffer.PopFront();
    }
    m_MessageBuffer.PushBack(newEntry);
  } while(text != NULL);
}