Mercurial > mercurial > hgweb_xdwtools.cgi
comparison xdwaddpage2.cpp @ 8:61ce4754737e
bug fix.
| author | pyon@macmini |
|---|---|
| date | Tue, 03 Apr 2018 00:11:01 +0900 |
| parents | 8de5b1bd9506 |
| children | cc5262d43399 |
comparison
equal
deleted
inserted
replaced
| 7:8de5b1bd9506 | 8:61ce4754737e |
|---|---|
| 1 /* Makefile | 1 /* Makefile |
| 2 debug: xdwaddpage2.c | 2 debug: xdwaddpage2.cpp |
| 3 #cls | 3 #cls |
| 4 g++ -g -O0 -I. xdwaddpage2.c xdwapi.lib | 4 gcc -g -O0 -I. xdwaddpage2.cpp xdwapi.lib |
| 5 | 5 |
| 6 release: xdwaddpage2.c | 6 release: xdwaddpage2.cpp |
| 7 g++ -I. xdwaddpage2.c xdwapi.lib -static -o xdwaddpage2.exe | 7 gcc -I. xdwaddpage2.cpp xdwapi.lib -static -o xdwaddpage2.exe |
| 8 strip xdwaddpage2.exe | 8 strip xdwaddpage2.exe |
| 9 | 9 |
| 10 clean: | 10 clean: |
| 11 rm -rf tempXXXX | 11 rm -rf tempXXXX |
| 12 */ | 12 */ |
| 13 | 13 |
| 14 #include <unistd.h> | |
| 15 #include <stdbool.h> | |
| 14 #include <stdio.h> | 16 #include <stdio.h> |
| 15 #include <string.h> | 17 #include <string.h> |
| 16 #include <stdlib.h> | 18 #include <stdlib.h> |
| 17 #include <time.h> | 19 #include <time.h> |
| 18 #include <io.h> | 20 #include <io.h> |
| 48 fprintf( stderr, "エラーが発生しました。" ); | 50 fprintf( stderr, "エラーが発生しました。" ); |
| 49 break; | 51 break; |
| 50 } | 52 } |
| 51 } | 53 } |
| 52 | 54 |
| 55 void print_help() { | |
| 56 char prog[12] = "xdwaddpage2"; | |
| 57 fprintf( stderr, "Usage:\n" ); | |
| 58 fprintf( stderr, " %s infile\n", prog ); | |
| 59 fprintf( stderr, " %s -l infile\n", prog ); | |
| 60 fprintf( stderr, " %s -ltxt infile\n", prog ); | |
| 61 fprintf( stderr, " %s -s S infile\n", prog ); | |
| 62 fprintf( stderr, " %s -v infile\n", prog ); | |
| 63 } | |
| 64 | |
| 53 void print_now( char const *msg ) { | 65 void print_now( char const *msg ) { |
| 54 time_t now = time( NULL ); | 66 time_t now = time( NULL ); |
| 55 struct tm *ts = localtime( &now ); | 67 struct tm *ts = localtime( &now ); |
| 56 | 68 |
| 57 char buf[80]; | 69 char buf[80]; |
| 78 } | 90 } |
| 79 | 91 |
| 80 int main( int argc, char* argv[] ) { | 92 int main( int argc, char* argv[] ) { |
| 81 | 93 |
| 82 /* オプションの解析 */ | 94 /* オプションの解析 */ |
| 83 char prog[128]; | 95 bool pnow = false; |
| 84 strcpy( prog, argv[0] ); | 96 bool pleft = false; |
| 97 char *ltext = NULL; | |
| 98 int sp = 1; | |
| 85 | 99 |
| 86 int pnow = 0; | 100 int opt; |
| 87 int pstart = 0; | 101 while ( ( opt = getopt( argc, argv, "vs:l::" ) ) != -1 ) { |
| 88 int pleft = 0; | 102 switch ( opt ) { |
| 89 char c; | 103 case 'v': |
| 90 while ( --argc > 0 && ( *++argv )[0] == '-' ) { | 104 pnow = true; |
| 91 while ( c = *++argv[0] ) { | 105 print_now( "start." ); |
| 92 switch ( c ) { | 106 break; |
| 93 case 'v': | 107 case 'l': |
| 94 pnow = 1; | 108 pleft = true; |
| 95 print_now( "start." ); | 109 ltext = optarg; |
| 96 break; | 110 break; |
| 97 case 'l': | 111 case 's': |
| 98 pleft = 1; | 112 sp = atoi( optarg ); |
| 99 break; | 113 if ( sp == 0 ) { |
| 100 case 's': | 114 print_help(); |
| 101 pstart = 1; | |
| 102 break; | |
| 103 default: | |
| 104 fprintf( stderr, "error: illegal option '%c'.\n", c ); | |
| 105 exit( 1 ); | 115 exit( 1 ); |
| 106 } | 116 } |
| 117 break; | |
| 118 default: | |
| 119 print_help(); | |
| 120 exit( 1 ); | |
| 107 } | 121 } |
| 108 } | 122 } |
| 109 | 123 |
| 110 int sp = 1; | |
| 111 char in_path[ _MAX_PATH ]; | 124 char in_path[ _MAX_PATH ]; |
| 112 if ( argc == 1 ) { | 125 _fullpath( in_path, argv[ argc - 1 ], _MAX_PATH ); |
| 113 _fullpath( in_path, argv[0], _MAX_PATH ); | |
| 114 } else if ( argc == 2 ) { | |
| 115 if ( pstart == 1 ) { | |
| 116 sp = atoi( argv[0] ); | |
| 117 _fullpath( in_path, argv[1], _MAX_PATH ); | |
| 118 } | |
| 119 } else { | |
| 120 fprintf( stderr, "%s infile\n", prog ); | |
| 121 fprintf( stderr, "%s -l infile\n", prog ); | |
| 122 fprintf( stderr, "%s -s S infile\n", prog ); | |
| 123 fprintf( stderr, "%s -v infile\n", prog ); | |
| 124 exit( 1 ); | |
| 125 } | |
| 126 | 126 |
| 127 /* 本処理 */ | 127 /* 本処理 */ |
| 128 if ( pnow ) print_now( "adding pages." ); | |
| 129 | |
| 130 int api_result = 0; | 128 int api_result = 0; |
| 131 | 129 |
| 132 XDW_DOCUMENT_HANDLE h = NULL; // 文書ハンドルを開く | 130 XDW_DOCUMENT_HANDLE h = NULL; // 文書ハンドルを開く |
| 133 XDW_OPEN_MODE_EX mode = { sizeof( XDW_OPEN_MODE_EX ), XDW_OPEN_UPDATE, XDW_AUTH_NODIALOGUE }; | 131 XDW_OPEN_MODE_EX mode = { sizeof( XDW_OPEN_MODE_EX ), XDW_OPEN_UPDATE, XDW_AUTH_NODIALOGUE }; |
| 134 api_result = XDW_OpenDocumentHandle( in_path, &h, (XDW_OPEN_MODE*)&mode ); | 132 api_result = XDW_OpenDocumentHandle( in_path, &h, (XDW_OPEN_MODE*)&mode ); |
| 141 XDW_GetDocumentInformation( h, &info ); | 139 XDW_GetDocumentInformation( h, &info ); |
| 142 int last_page = info.nPages; | 140 int last_page = info.nPages; |
| 143 | 141 |
| 144 int sz = 80; // 文字サイズ | 142 int sz = 80; // 文字サイズ |
| 145 int tr = 1; // 透明フラグ | 143 int tr = 1; // 透明フラグ |
| 146 char pagenum[18]; | 144 char pagenum[18], lpagenum[30]; |
| 147 | 145 |
| 148 // アノテーションを貼り付ける | 146 // アノテーションを貼り付ける |
| 149 for ( int p = 0; p < last_page; p++ ) { | 147 for ( int p = 0; p < last_page; p++ ) { |
| 150 sprintf( pagenum, "%05d-%05d-%05d", p + sp, p + 1,last_page ); | 148 sprintf( pagenum, "%05d-%05d-%05d", p + sp, p + 1, last_page ); |
| 151 if ( pleft == 1 ) | |
| 152 api_result = add_annotation( h, p + 1, 1700, 5600, pagenum, &sz, tr ); // 左上 | |
| 153 api_result = add_annotation( h, p + 1, 17500, 28500, pagenum, &sz, tr ); // 右下 | 149 api_result = add_annotation( h, p + 1, 17500, 28500, pagenum, &sz, tr ); // 右下 |
| 150 if ( pleft ) { | |
| 151 if ( ltext != NULL ) | |
| 152 sprintf( lpagenum, "%s%s", pagenum, ltext ); | |
| 153 else | |
| 154 sprintf( lpagenum, "%s", pagenum ); | |
| 155 api_result = add_annotation( h, p + 1, 1700, 5600, lpagenum, &sz, tr ); // 左上 | |
| 156 } | |
| 154 if ( api_result < 0 ) { | 157 if ( api_result < 0 ) { |
| 155 print_error( api_result ); | 158 print_error( api_result ); |
| 156 break; | 159 break; |
| 157 } | 160 } |
| 158 } | 161 } |
