#pragma once

enum CadFileFormat
{
  FILE_FORMAT_CATIA4,     // CATIA v4 .mod*/.exp/.iso/.cat files
  FILE_FORMAT_CATIA5,     // CATIA v5 .CATPart/.CATProduct files
  FILE_FORMAT_CATIA6,     // CATIA v6 .3dxml files
  FILE_FORMAT_IGES,       // IGES .igs/.iges files
  FILE_FORMAT_INVENTOR,   // Autodesk Inventor .ipt/.iam files
  FILE_FORMAT_JT,         // JT .jt files
  FILE_FORMAT_PROE,       // Creo .prt*/.asm*/.xpr*/.xas* files
  FILE_FORMAT_SOLIDEDGE,  // Solid Edge .par/.asm/.psm/.pwd files
  FILE_FORMAT_STEP,       // STEP .stp/.step files
  FILE_FORMAT_UG,         // NX .prt files
  FILE_FORMAT_SOLIDWORKS, // SolidWorks .sldprt/.sldasm files
  FILE_FORMAT_PARASOLID,  // Parasolid .x_t/.x_b/.xmt_txt/.xmt_bin files
  NUM_FILE_FORMATS
};

static const wchar_t *DefaultFormatText = L"%s Files (%s)";

const wchar_t *GetFileFormatText(CadFileFormat fileFormat);
const wchar_t *GetFileFilterText(CadFileFormat fileFormat);
bool AddFileFilter(std::wstring &inOutFileFilter, const wchar_t *pTypeText, const wchar_t *pExtFilterText, const wchar_t *pFormatText = DefaultFormatText);
bool AddFileFormatFilter(std::wstring &inOutFileFilter, CadFileFormat fileFormat, const wchar_t *pFormatText = DefaultFormatText);
