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 } |