1 /*
2 Copyright (C) 2011-2021, Dirk Krause
3 SPDX-License-Identifier: BSD-3-Clause
4 */
5
6 /*
7 WARNING: This file was generated by the dkct program (see
8 http://dktools.sourceforge.net/ for details).
9 Changes you make here will be lost if dkct is run again!
10 You should modify the original source and run dkct on it.
11 Original source: dk3bmj.ctr
12 */
13
14 /** @file dk3bmj.c The dk3bmj module.
15 */
16
17
18 #include "dk3conf.h"
19
20 #if DK3_USE_WX
21 #include "wxbmeps.h"
22 #else
23 #include <libdk3c/dk3all.h>
24 #include <libdk3bmeps/dk3bmj.h>
25 #include <libdk3bmeps/dk3bmeps.h>
26 #endif
27
28 #include <libdk3c/dk3unused.h>
29
30
31
32
33
34
35 #if DK3_USE_WX
36 /** Log level required for writing to the log text field in wxbmeps.
37 */
38 static int const dk3bmj_required_log_level = DK3_LL_PROGRESS;
39 #endif
40
41
42 void
dk3bmj_init(dk3_bm_conversion_job_t * job,dk3_app_t * app)43 dk3bmj_init(dk3_bm_conversion_job_t *job, dk3_app_t *app)
44 {
45
46 job->opt = NULL;
47 if(app) {
48 job->msg = dk3app_messages(
49 app,
50 dk3bmep_str_get_string_table_name(),
51 (dkChar const **)dk3bmep_str_get_message_texts()
52 );
53 if(!(job->msg)) {
54 job->msg = dk3bmep_str_get_message_texts();
55 }
56 } else {
57 job->msg = dk3bmep_str_get_message_texts();
58 }
59 job->sfn = NULL;
60 job->dfn = NULL;
61 job->dfile = NULL;
62 job->biftype = 0;
63 job->bif = NULL;
64 job->pComm = NULL;
65 job->minpb = 0;
66 job->maxpb = 0;
67 job->do_translate = 0;
68 job->x_translate = 0.0;
69 job->y_translate = 0.0;
70 job->do_rotate = 0;
71 job->do_float_scale = 0;
72 job->x_scale = 1.0;
73 job->y_scale = 1.0;
74 job->x_size = 0L;
75 job->y_size = 0L;
76 job->x_0 = 0.0;
77 job->x_1 = 0.0;
78 job->y_0 = 0.0;
79 job->y_1 = 0.0;
80 job->do_header_footer = 1;
81 job->procedure = DK3_BMEPS_GRAY_UNCOMPRESSED;
82 job->bpc = 8;
83 job->nPages = 1;
84 job->currentPage = 1;
85 job->pdf = NULL;
86 }
87
88
89
90 void
dk3bmj_progress(void * pc,int val)91 dk3bmj_progress(
92 #if DK3_USE_WX
93 void *pc, int val
94 #else
95 void * DK3_ARG_UNUSED(pc), int DK3_ARG_UNUSED(val)
96 #endif
97 )
98 {
99
100 #if DK3_USE_WX
101 DkWxCommunicator *pComm;
102 if(pc) {
103 pComm = (DkWxCommunicator *)pc;
104 pComm->updateGauge(val);
105 }
106 #else
107 DK3_UNUSED_ARG(pc)
108 DK3_UNUSED_ARG(val)
109 #endif
110
111 }
112
113
114
115 void
dk3bmj_lines_do_progress(void * pc,int min,int max,dk3_bif_coord_t h,dk3_bif_coord_t y)116 dk3bmj_lines_do_progress(
117 #if DK3_USE_WX
118 void *pc,
119 int min,
120 int max,
121 dk3_bif_coord_t h,
122 dk3_bif_coord_t y
123 #else
124 void * DK3_ARG_UNUSED(pc),
125 int DK3_ARG_UNUSED(min),
126 int DK3_ARG_UNUSED(max),
127 dk3_bif_coord_t DK3_ARG_UNUSED(h),
128 dk3_bif_coord_t DK3_ARG_UNUSED(y)
129 #endif
130 )
131 {
132
133 #if DK3_USE_WX
134 {
135 unsigned long ul;
136 int i;
137
138 if((pc) && (max > min)) {
139 ul = (unsigned long)min
140 + (((unsigned long)y + 1UL) * ((unsigned long)(max - min)))
141 /(unsigned long)h;
142 i = (int)ul;
143 if(i < min) i = min;
144 if(i > max) i = max;
145 dk3bmj_progress(pc, i);
146 } else {
147 }
148 }
149 #else
150 DK3_UNUSED_ARG(pc)
151 DK3_UNUSED_ARG(min)
152 DK3_UNUSED_ARG(max)
153 DK3_UNUSED_ARG(h)
154 DK3_UNUSED_ARG(y)
155 #endif
156
157 }
158
159
160
161 void
dk3bmj_lines_progress(void * pc,int min,int max,dk3_bif_coord_t h,dk3_bif_coord_t y)162 dk3bmj_lines_progress(
163 #if DK3_USE_WX
164 void *pc,
165 int min,
166 int max,
167 dk3_bif_coord_t h,
168 dk3_bif_coord_t y
169 #else
170 void * DK3_ARG_UNUSED(pc),
171 int DK3_ARG_UNUSED(min),
172 int DK3_ARG_UNUSED(max),
173 dk3_bif_coord_t DK3_ARG_UNUSED(h),
174 dk3_bif_coord_t DK3_ARG_UNUSED(y)
175 #endif
176 )
177 {
178 #if DK3_USE_WX
179 dk3bmj_lines_do_progress(pc, min, max, h, y);
180 #else
181 DK3_UNUSED_ARG(pc)
182 DK3_UNUSED_ARG(min)
183 DK3_UNUSED_ARG(max)
184 DK3_UNUSED_ARG(h)
185 DK3_UNUSED_ARG(y)
186 #endif
187 }
188
189
190
191 void
dk3bmj_objects_do_progress(void * pc,int min,int max,unsigned long nObjects,unsigned long co)192 dk3bmj_objects_do_progress(
193 #if DK3_USE_WX
194 void *pc,
195 int min,
196 int max,
197 unsigned long nObjects,
198 unsigned long co
199 #else
200 void * DK3_ARG_UNUSED(pc),
201 int DK3_ARG_UNUSED(min),
202 int DK3_ARG_UNUSED(max),
203 unsigned long DK3_ARG_UNUSED(nObjects),
204 unsigned long DK3_ARG_UNUSED(co)
205 #endif
206 )
207 {
208
209 #if DK3_USE_WX
210 unsigned long ul; /* Temporary value. */
211 int i; /* New progress bar value. */
212
213 if((pc) && (max > min)) {
214 ul = (unsigned long)min
215 + ((co + 1UL) * ((unsigned long)(max - min))) / nObjects;
216 i = (int)ul;
217 if(i < min) i = min;
218 if(i > max) i = max;
219 dk3bmj_progress(pc, i);
220 } else {
221 }
222 #else
223 DK3_UNUSED_ARG(pc)
224 DK3_UNUSED_ARG(min)
225 DK3_UNUSED_ARG(max)
226 DK3_UNUSED_ARG(nObjects)
227 DK3_UNUSED_ARG(co)
228 #endif
229
230 }
231
232
233
234 void
dk3bmj_obj_progress(void * pc,int min,int max,unsigned long nObjects,unsigned long co)235 dk3bmj_obj_progress(
236 #if DK3_USE_WX
237 void *pc,
238 int min,
239 int max,
240 unsigned long nObjects,
241 unsigned long co
242 #else
243 void * DK3_ARG_UNUSED(pc),
244 int DK3_ARG_UNUSED(min),
245 int DK3_ARG_UNUSED(max),
246 unsigned long DK3_ARG_UNUSED(nObjects),
247 unsigned long DK3_ARG_UNUSED(co)
248 #endif
249 )
250 {
251 #if DK3_USE_WX
252 dk3bmj_objects_do_progress(pc, min, max, nObjects, co);
253 #else
254 DK3_UNUSED_ARG(pc)
255 DK3_UNUSED_ARG(min)
256 DK3_UNUSED_ARG(max)
257 DK3_UNUSED_ARG(nObjects)
258 DK3_UNUSED_ARG(co)
259 #endif
260 }
261
262
263
264 void
dk3bmj_log_i1(dk3_app_t * app,int ll,size_t i,int dest,dk3_bm_conversion_job_t * job)265 dk3bmj_log_i1(
266 dk3_app_t *app,
267 int ll,
268 size_t i,
269 int dest,
270 #if DK3_USE_WX
271 dk3_bm_conversion_job_t *job
272 #else
273 dk3_bm_conversion_job_t * DK3_ARG_UNUSED(job)
274 #endif
275 )
276 {
277 #if DK3_USE_WX
278 dkChar const *p1; /* Log text. */
279 DkWxCommunicator *pComm; /* Communicator object. */
280 #endif
281 if(dest & DK3_BMJ_LOG_APP) {
282 if(app) {
283 dk3app_log_i1(app, ll, i);
284 }
285 }
286 #if DK3_USE_WX
287 if((dest & DK3_BMJ_LOG_JOB) && (ll <= dk3bmj_required_log_level)) {
288 if(job) {
289 if(app) {
290 pComm = (DkWxCommunicator *)(job->pComm);
291 if(pComm) {
292 pComm->setLogLevel(ll);
293 p1 = dk3app_localized(app, i);
294 if(p1) {
295 pComm->addDkText(p1);
296 pComm->nl();
297 }
298 }
299 }
300 }
301 }
302 #else
303 DK3_UNUSED_ARG(job)
304 #endif
305 }
306
307
308
309 void
dk3bmj_log_i3(dk3_app_t * app,int ll,size_t i1,size_t i2,dkChar const * txt,int dest,dk3_bm_conversion_job_t * job)310 dk3bmj_log_i3(
311 dk3_app_t *app,
312 int ll,
313 size_t i1,
314 size_t i2,
315 dkChar const *txt,
316 int dest,
317 #if DK3_USE_WX
318 dk3_bm_conversion_job_t *job
319 #else
320 dk3_bm_conversion_job_t * DK3_ARG_UNUSED(job)
321 #endif
322 )
323 {
324 #if DK3_USE_WX
325 dkChar const *p1; /* First message part. */
326 dkChar const *p2; /* Last message part. */
327 DkWxCommunicator *pComm; /* Communicator object. */
328 #endif
329 if(dest & DK3_BMJ_LOG_APP) {
330 if(app) {
331 dk3app_log_i3(app, ll, i1, i2, txt);
332 }
333 }
334 #if DK3_USE_WX
335 if((dest & DK3_BMJ_LOG_JOB) && (ll <= dk3bmj_required_log_level)) {
336 if(job) {
337 if(app) {
338 pComm = (DkWxCommunicator *)(job->pComm);
339 if(pComm) {
340 pComm->setLogLevel(ll);
341 p1 = dk3app_localized(app, i1);
342 p2 = dk3app_localized(app, i2);
343 if((p1) && (p2)) {
344 pComm->addDkText(p1);
345 if(txt) {
346 pComm->addDkText(txt);
347 }
348 pComm->addDkText(p2);
349 pComm->nl();
350 }
351 }
352 }
353 }
354 }
355 #else
356 DK3_UNUSED_ARG(job)
357 #endif
358 }
359
360
361
362
363 void
dk3bmj_log_i5(dk3_app_t * app,int ll,size_t i1,size_t i2,size_t i3,dkChar const * txt1,dkChar const * txt2,int dest,dk3_bm_conversion_job_t * job)364 dk3bmj_log_i5(
365 dk3_app_t *app,
366 int ll,
367 size_t i1,
368 size_t i2,
369 size_t i3,
370 dkChar const *txt1,
371 dkChar const *txt2,
372 int dest,
373 #if DK3_USE_WX
374 dk3_bm_conversion_job_t *job
375 #else
376 dk3_bm_conversion_job_t * DK3_ARG_UNUSED(job)
377 #endif
378 )
379 {
380 #if DK3_USE_WX
381 dkChar const *p1; /* First message part. */
382 dkChar const *p2; /* Centered message part. */
383 dkChar const *p3; /* Last message part. */
384 DkWxCommunicator *pComm; /* Communicator object. */
385 #endif
386 if(dest & DK3_BMJ_LOG_APP) {
387 if(app) {
388 dk3app_log_i5(app, ll, i1, i2, i3, txt1, txt2);
389 }
390 }
391 #if DK3_USE_WX
392 if((dest & DK3_BMJ_LOG_JOB) && (ll <= dk3bmj_required_log_level)) {
393 if(job) {
394 if(app) {
395 pComm = (DkWxCommunicator *)(job->pComm);
396 if(pComm) {
397 pComm->setLogLevel(ll);
398 p1 = dk3app_localized(app, i1);
399 p2 = dk3app_localized(app, i2);
400 p3 = dk3app_localized(app, i3);
401 if((p1) && (p2) && (p3)) {
402 pComm->addDkText(p1);
403 if(txt1) {
404 pComm->addDkText(txt1);
405 }
406 pComm->addDkText(p2);
407 if(txt2) {
408 pComm->addDkText(txt2);
409 }
410 pComm->addDkText(p3);
411 pComm->nl();
412 }
413 }
414 }
415 }
416 }
417 #else
418 DK3_UNUSED_ARG(job)
419 #endif
420 }
421
422
423
424 void
dk3bmj_log_1(dk3_app_t * app,int ll,dkChar const * const * txta,size_t i,int dest,dk3_bm_conversion_job_t * job)425 dk3bmj_log_1(
426 dk3_app_t *app,
427 int ll,
428 dkChar const * const *txta,
429 size_t i,
430 int dest,
431 #if DK3_USE_WX
432 dk3_bm_conversion_job_t *job
433 #else
434 dk3_bm_conversion_job_t * DK3_ARG_UNUSED(job)
435 #endif
436 )
437 {
438 #if DK3_USE_WX
439 dkChar const *p1; /* Message text. */
440 DkWxCommunicator *pComm; /* Communicator object. */
441 #endif
442
443 if(txta) {
444 if(dest & DK3_BMJ_LOG_APP) {
445 if(app) {
446 dk3app_log_1(app, ll, txta, i);
447 } else {
448 }
449 } else {
450 }
451 #if DK3_USE_WX
452 if((dest & DK3_BMJ_LOG_JOB) && (ll <= dk3bmj_required_log_level)) {
453 if(job) {
454 if(app) {
455 pComm = (DkWxCommunicator *)(job->pComm);
456 if(pComm) {
457 pComm->setLogLevel(ll);
458 p1 = txta[i];
459 if(p1) {
460 pComm->addDkText(p1);
461 pComm->nl();
462 } else {
463 }
464 } else {
465 }
466 } else {
467 }
468 } else {
469 }
470 } else {
471 }
472 #else
473 DK3_UNUSED_ARG(job)
474 #endif
475 } else {
476 }
477 }
478
479
480
481 void
dk3bmj_log_3(dk3_app_t * app,int ll,dkChar const * const * txta,size_t i1,size_t i2,dkChar const * txt,int dest,dk3_bm_conversion_job_t * job)482 dk3bmj_log_3(
483 dk3_app_t *app,
484 int ll,
485 dkChar const * const *txta,
486 size_t i1,
487 size_t i2,
488 dkChar const *txt,
489 int dest,
490 #if DK3_USE_WX
491 dk3_bm_conversion_job_t *job
492 #else
493 dk3_bm_conversion_job_t * DK3_ARG_UNUSED(job)
494 #endif
495 )
496 {
497 #if DK3_USE_WX
498 dkChar const *p1; /* First message part. */
499 dkChar const *p2; /* Last message part. */
500 DkWxCommunicator *pComm; /* Communicator object. */
501 #endif
502 if(txta) {
503 if(dest & DK3_BMJ_LOG_APP) {
504 if(app) {
505 dk3app_log_3(app, ll, txta, i1, i2, txt);
506 }
507 }
508 #if DK3_USE_WX
509 if((dest & DK3_BMJ_LOG_JOB) && (ll <= dk3bmj_required_log_level)) {
510 if(job) {
511 if(app) {
512 pComm = (DkWxCommunicator *)(job->pComm);
513 if(pComm) {
514 pComm->setLogLevel(ll);
515 p1 = txta[i1];
516 p2 = txta[i2];
517 if((p1) && (p2)) {
518 pComm->addDkText(p1);
519 if(txt) {
520 pComm->addDkText(txt);
521 }
522 pComm->addDkText(p2);
523 pComm->nl();
524 }
525 }
526 }
527 }
528 }
529 #else
530 DK3_UNUSED_ARG(job)
531 #endif
532 }
533 }
534
535
536
537
538 void
dk3bmj_log_5(dk3_app_t * app,int ll,dkChar const * const * txta,size_t i1,size_t i2,size_t i3,dkChar const * txt1,dkChar const * txt2,int dest,dk3_bm_conversion_job_t * job)539 dk3bmj_log_5(
540 dk3_app_t *app,
541 int ll,
542 dkChar const * const *txta,
543 size_t i1,
544 size_t i2,
545 size_t i3,
546 dkChar const *txt1,
547 dkChar const *txt2,
548 int dest,
549 #if DK3_USE_WX
550 dk3_bm_conversion_job_t *job
551 #else
552 dk3_bm_conversion_job_t * DK3_ARG_UNUSED(job)
553 #endif
554 )
555 {
556 #if DK3_USE_WX
557 dkChar const *p1; /* First message part. */
558 dkChar const *p2; /* Centered message part. */
559 dkChar const *p3; /* Last message part. */
560 DkWxCommunicator *pComm; /* Communicator object. */
561 #endif
562 if(txta) {
563 if(dest & DK3_BMJ_LOG_APP) {
564 if(app) {
565 dk3app_log_5(app, ll, txta, i1, i2, i3, txt1, txt2);
566 }
567 }
568 #if DK3_USE_WX
569 if((dest & DK3_BMJ_LOG_JOB) && (ll <= dk3bmj_required_log_level)) {
570 if(job) {
571 if(app) {
572 pComm = (DkWxCommunicator *)(job->pComm);
573 if(pComm) {
574 pComm->setLogLevel(ll);
575 p1 = txta[i1];
576 p2 = txta[i2];
577 p3 = txta[i3];
578 if((p1) && (p2) && (p3)) {
579 pComm->addDkText(p1);
580 if(txt1) {
581 pComm->addDkText(txt1);
582 }
583 pComm->addDkText(p2);
584 if(txt2) {
585 pComm->addDkText(txt2);
586 }
587 pComm->addDkText(p3);
588 pComm->nl();
589 }
590 }
591 }
592 }
593 }
594 #else
595 DK3_UNUSED_ARG(job)
596 #endif
597 }
598 }
599
600
601