changeset 9:cc5262d43399

small changes.
author pyon@macmini
date Thu, 05 Apr 2018 21:06:13 +0900
parents 61ce4754737e
children e421bcd3bce4
files xdwaddatn2.cpp xdwaddpage2.cpp
diffstat 2 files changed, 98 insertions(+), 49 deletions(-) [+]
line wrap: on
line diff
--- a/xdwaddatn2.cpp	Tue Apr 03 00:11:01 2018 +0900
+++ b/xdwaddatn2.cpp	Thu Apr 05 21:06:13 2018 +0900
@@ -63,6 +63,17 @@
 	fprintf( stderr, "[ Error code : %d ]\n", code );
 }
 
+void print_help() {
+	char prog[12] = "xdwaddatn2";
+	fprintf( stderr, "Usage:\n" );
+	fprintf( stderr, " %s -m mtxt x y txt sz tr infile\n", prog );
+	fprintf( stderr, " %s -p page x y txt sz tr infile\n", prog );
+	fprintf( stderr, " %s -m -i infile\n", prog );
+	fprintf( stderr, " %s -p -i infile\n", prog );
+	fprintf( stderr, " %s -v -p -i infile\n", prog );
+	fprintf( stderr, " %s -v -m -i infile\n", prog );
+}
+
 void print_now( const char *msg ) {
    time_t now = time( NULL );
    struct tm *ts = localtime( &now );
@@ -99,6 +110,7 @@
 
 	bool pnow  = false;
 	bool mmode = false;
+	bool pmode = false;
 	bool csv   = false;
 	char c;
 	while ( --argc > 0 && ( *++argv )[0] == '-' ) {
@@ -112,24 +124,21 @@
 					mmode = true;
 					break;
 				case 'p':	/* page number: now writing... */
+					pmode = true;
 					break;
 				case 'i':	/* csv file: now writing... */
 					csv = true;
 					break;
 				default:
 					fprintf( stderr, "error: illegal option '%c'.\n", c );
+					print_help();
 					exit( 1 );
 			}
 		}
 	}
 
-	if ( argc < 1 ) {
-		fprintf( stderr, "%s -m mtxt x y txt sz tr infile\n", prog );
-		fprintf( stderr, "%s -p page x y txt sz tr infile\n", prog );
-		fprintf( stderr, "%s -m -i infile\n", prog );
-		fprintf( stderr, "%s -p -i infile\n", prog );
-		fprintf( stderr, "%s -v -p -i infile\n", prog );
-		fprintf( stderr, "%s -v -m -i infile\n", prog );
+	if ( argc < 1 || ( mmode && pmode ) || ( !mmode && !pmode )) {
+		print_help();
 		exit( 1 );
 	}
 
@@ -190,7 +199,7 @@
 			for ( int i = 0; i < alN; i++ ) {
 			}
 		}
-		else {
+		else { // pmode のはず
 		}
 	}
 	else {
@@ -224,7 +233,25 @@
 			}
 			XDW_CloseFoundHandle( pFoundHandle );
 		}
-		else {
+		else { // pmode のはず
+			int p;
+			for ( int i = 0; i < alN; i++ ) {
+				strncpy( buf, &al[ i * MAXCOL ], MAXCOL );
+				m = strtok( buf, "," );
+				p = atoi( m );
+				if ( p > 0 && p <= last_page ) {
+					x = atoi( strtok( NULL, "," ) );
+					y = atoi( strtok( NULL, "," ) );
+					s = strtok( NULL, "," );
+					sz = atoi( strtok( NULL, "," ) );
+					tr = atoi( strtok( NULL, "," ) );
+					api_result = add_annotation( h, p, x, y, s, &sz, tr );
+					if ( api_result < 0 ) {
+						print_error( api_result );
+						break;
+					}
+				}
+			}
 		}
 	}
 
--- 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;