diff xdwaddpage2.cpp @ 9:cc5262d43399

small changes.
author pyon@macmini
date Thu, 05 Apr 2018 21:06:13 +0900
parents 61ce4754737e
children
line wrap: on
line diff
--- a/xdwaddpage2.cpp	Tue Apr 03 00:11:01 2018 +0900
+++ b/xdwaddpage2.cpp	Thu Apr 05 21:06:13 2018 +0900
@@ -59,6 +59,9 @@
 	fprintf( stderr, " %s -l infile\n", prog );
 	fprintf( stderr, " %s -ltxt infile\n", prog );
 	fprintf( stderr, " %s -s S infile\n", prog );
+	fprintf( stderr, " %s -c infile1 infile2 ...\n", prog );
+	fprintf( stderr, " %s -s S -c infile1 infile2 ...\n", prog );
+	fprintf( stderr, " %s -s S -ltxt -c infile1 infile2 ...\n", prog );
 	fprintf( stderr, " %s -v infile\n", prog );
 }
 
@@ -89,47 +92,11 @@
 	return api_result;
 }
 
-int main( int argc, char* argv[] ) {
-
-	/* オプションの解析 */
-	bool pnow = false;
-	bool pleft = false;
-	char *ltext = NULL;
-	int sp = 1;
-
-	int opt;
-	while ( ( opt = getopt( argc, argv, "vs:l::" ) ) != -1 ) {
-		switch ( opt ) {
-			case 'v':
-				pnow = true;
-				print_now( "start." );
-				break;
-			case 'l':
-				pleft = true;
-				ltext = optarg;
-				break;
-			case 's':
-				sp = atoi( optarg );
-				if ( sp == 0 ) {
-					print_help();
-					exit( 1 );
-				}
-				break;
-			default:
-				print_help();
-				exit( 1 );
-		}
-	}
-
-	char in_path[ _MAX_PATH ];
-	_fullpath( in_path, argv[ argc - 1 ], _MAX_PATH );
-
-	/* 本処理 */
-	int api_result = 0;
-
+int add_page( const char* file, int sp, bool pleft, const char* ltext )
+{
 	XDW_DOCUMENT_HANDLE h = NULL; // 文書ハンドルを開く
 	XDW_OPEN_MODE_EX mode = { sizeof( XDW_OPEN_MODE_EX ), XDW_OPEN_UPDATE, XDW_AUTH_NODIALOGUE };
-	api_result = XDW_OpenDocumentHandle( in_path, &h, (XDW_OPEN_MODE*)&mode );
+	int api_result = XDW_OpenDocumentHandle( file, &h, (XDW_OPEN_MODE*)&mode );
 	if ( api_result < 0 ) {
 		print_error( api_result );
 		return 0;
@@ -145,7 +112,7 @@
 
 	// アノテーションを貼り付ける
     for ( int p = 0; p < last_page; p++ ) {
-        sprintf( pagenum, "%05d-%05d-%05d", p + sp, p + 1, last_page );
+        sprintf( pagenum, "%05d-%04d-%04d", p + sp, p + 1, last_page );
         api_result = add_annotation( h, p + 1, 17500, 28500, pagenum, &sz, tr );        // 右下
 		if ( pleft ) {
 			if ( ltext != NULL ) 
@@ -164,6 +131,61 @@
 		api_result = XDW_SaveDocument( h, NULL );
 
 	XDW_CloseDocumentHandle( h, NULL ); // 文書ハンドルを閉じる
+	return sp + last_page;
+}
+
+int main( int argc, char* argv[] ) {
+
+	/* オプションの解析 */
+	bool pnow  = false;
+	bool pleft = false;
+	bool chain = false;
+	char *ltext = NULL;
+	int sp = 1;
+
+	int opt;
+	while ( ( opt = getopt( argc, argv, "vs:l::c" ) ) != -1 ) {
+		switch ( opt ) {
+			case 'v':
+				pnow = true;
+				print_now( "start." );
+				break;
+			case 'l':
+				pleft = true;
+				ltext = optarg;
+				break;
+			case 's':
+				sp = atoi( optarg );
+				if ( sp == 0 ) {
+					print_help();
+					exit( 1 );
+				}
+				break;
+			case 'c':	// chain mode
+				chain = true;
+				break;
+			default:
+				print_help();
+				exit( 1 );
+		}
+	}
+
+	char in_path[ _MAX_PATH ];
+
+	/* 本処理 */
+	int api_result = 0;
+	if ( chain ) {
+		int lp = sp;
+		for ( int i = optind; i < argc; i++ ) {
+			_fullpath( in_path, argv[ i ], _MAX_PATH );
+			lp = add_page( in_path, lp, pleft, ltext );
+			if ( pnow ) print_now( in_path );
+		}
+	}
+	else {
+		_fullpath( in_path, argv[ argc - 1 ], _MAX_PATH );
+		add_page( in_path, sp, pleft, ltext );
+	}
 
 	if ( pnow ) print_now( "done." );
 	return 0;