--- /dev/null
+#include <stdio.h>
+#include <string.h>
+#include <stdint.h>
+#include <math.h>
+
+#define STB_IMAGE_IMPLEMENTATION
+#define NBVTF_SHOW_STDERR
+#include "nbvtf.h"
+
+// Find file path extension, returns NULL if no ext (0x00)
+char *str_findext( char *szPath, char const delim )
+{
+ char *c, *ptr ;
+
+ c = szPath;
+ ptr = NULL;
+
+ while( *c )
+ {
+ if( *c == delim )
+ {
+ ptr = c + 1;
+ }
+
+ c ++;
+ }
+
+ return ptr;
+}
+
+// gets rid of extension on string only left with folder/filename
+void path_stripext( char *szPath )
+{
+ char *point, *start;
+
+ // Skip folders
+ if( !(start = str_findext( szPath, '/' )) )
+ {
+ start = szPath;
+ }
+
+ if( (point = str_findext( start, '.' )) )
+ {
+ if( point > szPath )
+ {
+ *(point-1) = 0x00;
+ }
+ }
+}
+
+EImageFormat_t format_from_str( const char *str )
+{
+ if( !strcmp( str, "dxt1" ) )
+ return k_EImageFormat_DXT1;
+ if( !strcmp( str, "dxt5" ) )
+ return k_EImageFormat_DXT5;
+ if( !strcmp( str, "rgb8" ) )
+ return k_EImageFormat_BGR888;
+ if( !strcmp( str, "rgba8" ) )
+ return k_EImageFormat_ABGR8888;
+
+ return k_EImageFormat_NONE;
+}
+
+EImageFormat_t format_in_path( const char *path )
+{
+ char filepath[ 512 ];
+
+ strcpy( filepath, path );
+ path_stripext( filepath );
+
+ char *format_str = str_findext( filepath, '.' );
+
+ if( format_str )
+ {
+ EImageFormat_t fmt;
+ fmt = format_from_str( format_str );
+
+ if( fmt != -1 )
+ {
+ return fmt;
+ }
+ }
+
+ return k_EImageFormat_DXT1;
+}
+
+void auto_output( const char *path, char *dest )
+{
+ strcpy( dest, path );
+ path_stripext( dest );
+ strcat( dest, ".vtf" );
+}
+
+int main( int argc, char *argv[] )
+{
+ char dest[500];
+
+ char *path_source;
+ EImageFormat_t format = k_EImageFormat_NONE;
+
+ if( argc < 2 )
+ {
+ printf( "Usage: vmt_cmd <optional_format> input_file<.format_in_path>.png\nSupported Formats:\n\trgb8, rgba8, dxt1, dxt5\n" );
+ return 0;
+ }
+
+ if( argc == 3 )
+ {
+ path_source = argv[2];
+ format = format_from_str( argv[1] );
+ }
+
+ if( argc == 2 )
+ {
+ path_source = argv[1];
+ format = format_in_path( path_source );
+ }
+
+ if( format == -1 )
+ {
+ fprintf( stderr, "tovtf: error with format choice. Unsupported\n" );
+ return 0;
+ }
+
+ printf( "tovtf: Creating vtf with format '%s'\n", vtf_format_strings[ format ] );
+
+ auto_output( path_source, dest );
+ nbvtf_convert( path_source, 0, 0, 1, format, 0x00, dest );
+
+ return 0;
+}