-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathmain.cpp
32 lines (29 loc) · 937 Bytes
/
main.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include "stdafx.h"
#include "grayscale.h"
static void printHelp()
{
printf( "Valid arguments:\n" );
for( uint8_t i = 0; i < (uint8_t)eGrayscaleAlgorithm::valuesCount; i++ )
printf( "%i: %s\n", (int)i, algorithmName( (eGrayscaleAlgorithm)i ) );
}
int main( int argc, const char* argv[] )
{
if( argc != 2 )
{
printHelp();
return 1;
}
int algoInt;
if( !nonstd::atoi( argv[ 1 ], algoInt ) || algoInt < 0 || algoInt >= (int)eGrayscaleAlgorithm::valuesCount )
{
printf( "Please provide a single integer argument, within [ 0 .. %i ] interval\n", (int)eGrayscaleAlgorithm::valuesCount - 1 );
printHelp();
return 2;
}
const eGrayscaleAlgorithm algo = (eGrayscaleAlgorithm)algoInt;
const auto image = createRandomImage();
std::vector<uint8_t> result( pixelsCount );
const double ms = dispatchAndMeasure( algo, image.get(), result.data(), pixelsCount );
printf( "%s: %g ms\n", algorithmName( algo ), ms );
return 0;
}