Mercurial > hg > dmlib
annotate tools/gfxconv.c @ 2144:0bb1d0ad178f
Fix bpp option description.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sun, 02 Jun 2019 21:08:23 +0300 |
parents | 693c3e73eb34 |
children | 28b7a842181f |
rev | line source |
---|---|
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1 /* |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2 * gfxconv - Convert various graphics formats |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
3 * Programmed and designed by Matti 'ccr' Hamalainen |
2120 | 4 * (C) Copyright 2012-2019 Tecnic Software productions (TNSP) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
5 * |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
6 * Please read file 'COPYING' for information on license and distribution. |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
7 */ |
1432
a9516570cc26
Improve build, so that we can build the tools and tests with minimal
Matti Hamalainen <ccr@tnsp.org>
parents:
1426
diff
changeset
|
8 #include "dmtool.h" |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
9 #include "dmlib.h" |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
10 #include "dmargs.h" |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
11 #include "dmfile.h" |
435 | 12 #include "libgfx.h" |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
13 #include "lib64gfx.h" |
1433 | 14 #include "dmmutex.h" |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
15 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
16 |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
17 #define DM_MAX_COLORS 256 |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
18 |
837 | 19 #define DM_ASC_NBITS 8 |
20 #define DM_ASC_NCOLORS 4 | |
21 static const char dmASCIIPalette[DM_ASC_NCOLORS] = ".:X#"; | |
22 | |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
23 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
24 enum |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
25 { |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
26 FFMT_AUTO = 0, |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
27 |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
28 FFMT_ASCII, |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
29 FFMT_ANSI, |
1869
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
30 FFMT_BITMAP, |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
31 FFMT_CHAR, |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
32 FFMT_SPRITE, |
1869
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
33 |
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
34 FFMT_IMAGE, |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
35 |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
36 FFMT_LAST |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
37 }; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
38 |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
39 |
2022
eb6dafdd36dc
Add option -C for controlling output file compression (PNG and IFF for now) in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2021
diff
changeset
|
40 enum |
eb6dafdd36dc
Add option -C for controlling output file compression (PNG and IFF for now) in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2021
diff
changeset
|
41 { |
eb6dafdd36dc
Add option -C for controlling output file compression (PNG and IFF for now) in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2021
diff
changeset
|
42 FCMP_NONE = 0, |
eb6dafdd36dc
Add option -C for controlling output file compression (PNG and IFF for now) in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2021
diff
changeset
|
43 FCMP_BEST = 9 |
eb6dafdd36dc
Add option -C for controlling output file compression (PNG and IFF for now) in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2021
diff
changeset
|
44 }; |
eb6dafdd36dc
Add option -C for controlling output file compression (PNG and IFF for now) in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2021
diff
changeset
|
45 |
eb6dafdd36dc
Add option -C for controlling output file compression (PNG and IFF for now) in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2021
diff
changeset
|
46 |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
47 static const char *formatTypeList[FFMT_LAST] = |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
48 { |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
49 "AUTO", |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
50 "ASCII text", |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
51 "ANSI text", |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
52 "C64 bitmap image", |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
53 "C64 character/font data", |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
54 "C64 sprite data", |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
55 "Image", |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
56 }; |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
57 |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
58 |
854
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
59 enum |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
60 { |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
61 CROP_NONE = 0, |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
62 CROP_AUTO, |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
63 CROP_SIZE, |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
64 }; |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
65 |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
66 |
2058
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
67 enum |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
68 { |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
69 SCALE_SET, |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
70 SCALE_RELATIVE, |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
71 SCALE_AUTO, |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
72 }; |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
73 |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
74 |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
75 typedef struct |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
76 { |
1340 | 77 char *name; // Descriptive name of the format |
78 char *fext; // File extension | |
1545
3b613fcbf3ff
Improve how format read/write capabilities are marked and shown.
Matti Hamalainen <ccr@tnsp.org>
parents:
1543
diff
changeset
|
79 int flags; // DM_FMT_* flags, see libgfx.h |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
80 int type; // Format type |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
81 int format; // Subformat identifier |
2103
78a9140f02b1
Improve help for spr/chr formats by listing the :mc and :sc flags at their
Matti Hamalainen <ccr@tnsp.org>
parents:
2100
diff
changeset
|
82 char *help; |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
83 } DMConvFormat; |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
84 |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
85 |
1616
36d073c45327
Refactor the format handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
1609
diff
changeset
|
86 static const DMConvFormat baseFormatList[] = |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
87 { |
2103
78a9140f02b1
Improve help for spr/chr formats by listing the :mc and :sc flags at their
Matti Hamalainen <ccr@tnsp.org>
parents:
2100
diff
changeset
|
88 { "ASCII text" , "asc" , DM_FMT_WR , FFMT_ASCII , 0 , NULL }, |
78a9140f02b1
Improve help for spr/chr formats by listing the :mc and :sc flags at their
Matti Hamalainen <ccr@tnsp.org>
parents:
2100
diff
changeset
|
89 { "ANSI colored text" , "ansi" , DM_FMT_WR , FFMT_ANSI , 0 , NULL }, |
78a9140f02b1
Improve help for spr/chr formats by listing the :mc and :sc flags at their
Matti Hamalainen <ccr@tnsp.org>
parents:
2100
diff
changeset
|
90 { "C64 bitmap image" , NULL , DM_FMT_RDWR , FFMT_BITMAP , -1 , NULL }, |
78a9140f02b1
Improve help for spr/chr formats by listing the :mc and :sc flags at their
Matti Hamalainen <ccr@tnsp.org>
parents:
2100
diff
changeset
|
91 { "C64 character/font data" , "chr" , DM_FMT_RDWR , FFMT_CHAR , 0 , " (chr:mc/chr:sc for multi/singlecolor)" }, |
78a9140f02b1
Improve help for spr/chr formats by listing the :mc and :sc flags at their
Matti Hamalainen <ccr@tnsp.org>
parents:
2100
diff
changeset
|
92 { "C64 sprite data" , "spr" , DM_FMT_RDWR , FFMT_SPRITE , 0 , " (spr:mc/spr:sc for multi/singlecolor)" }, |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
93 }; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
94 |
1616
36d073c45327
Refactor the format handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
1609
diff
changeset
|
95 static const int nbaseFormatList = sizeof(baseFormatList) / sizeof(baseFormatList[0]); |
36d073c45327
Refactor the format handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
1609
diff
changeset
|
96 |
36d073c45327
Refactor the format handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
1609
diff
changeset
|
97 |
36d073c45327
Refactor the format handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
1609
diff
changeset
|
98 static DMConvFormat *convFormatList = NULL; |
36d073c45327
Refactor the format handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
1609
diff
changeset
|
99 static int nconvFormatList = 0; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
100 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
101 |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
102 typedef struct |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
103 { |
474
95d1facfdb77
Improve color matching, make it possible to ignore alpha values.
Matti Hamalainen <ccr@tnsp.org>
parents:
473
diff
changeset
|
104 BOOL triplet, alpha; |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
105 DMColor color; |
871
fc272f5f2d15
Make value type of dmGetIntVal() unsigned.
Matti Hamalainen <ccr@tnsp.org>
parents:
867
diff
changeset
|
106 unsigned int from, to; |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
107 } DMMapValue; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
108 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
109 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
110 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
111 char *optInFilename = NULL, |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
112 *optOutFilename = NULL; |
837 | 113 |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
114 int optInType = FFMT_AUTO, |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
115 optOutType = FFMT_AUTO, |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
116 optInFormat = -1, |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
117 optOutFormat = -1, |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
118 optItemCount = -1, |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
119 optPlanedWidth = 1, |
1867
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
120 optForcedInSubFormat = -1; |
871
fc272f5f2d15
Make value type of dmGetIntVal() unsigned.
Matti Hamalainen <ccr@tnsp.org>
parents:
867
diff
changeset
|
121 unsigned int optInSkip = 0; |
2005
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
122 BOOL optInSkipNeg = FALSE; |
838
f2ac9877263e
Bitmap format specifying option changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
837
diff
changeset
|
123 |
854
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
124 int optCropMode = CROP_NONE, |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
125 optCropX0, optCropY0, |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
126 optCropW, optCropH; |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
127 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
128 BOOL optInMulticolor = FALSE, |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
129 optSequential = FALSE, |
479
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
130 optRemapColors = FALSE, |
2065
451980580189
Refactor how paletted/indexed formats are handled in libgfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
2062
diff
changeset
|
131 optRemapRemove = FALSE, |
451980580189
Refactor how paletted/indexed formats are handled in libgfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
2062
diff
changeset
|
132 optUsePalette = FALSE; |
2058
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
133 int optNRemapTable = 0, |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
134 optScaleMode = SCALE_AUTO; |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
135 DMMapValue optRemapTable[DM_MAX_COLORS]; |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
136 int optColorMap[D64_NCOLORS]; |
2123
47ddbedf5b56
Add initial support to 64vw and gfxconv for viewing and converting character
Matti Hamalainen <ccr@tnsp.org>
parents:
2120
diff
changeset
|
137 char *optCharROMFilename = NULL; |
47ddbedf5b56
Add initial support to 64vw and gfxconv for viewing and converting character
Matti Hamalainen <ccr@tnsp.org>
parents:
2120
diff
changeset
|
138 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
139 |
1290
e7dc9bb9777e
Rename struct DMImageSpec to DMImageConvSpec.
Matti Hamalainen <ccr@tnsp.org>
parents:
1288
diff
changeset
|
140 DMImageConvSpec optSpec = |
435 | 141 { |
902
c6c480e8e1c8
Add separate X and Y scaling to gfxconv and libgfx outputters.
Matti Hamalainen <ccr@tnsp.org>
parents:
897
diff
changeset
|
142 .scaleX = 1, |
c6c480e8e1c8
Add separate X and Y scaling to gfxconv and libgfx outputters.
Matti Hamalainen <ccr@tnsp.org>
parents:
897
diff
changeset
|
143 .scaleY = 1, |
2099
dac89484f143
Fix nplanes and bpp in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2097
diff
changeset
|
144 .nplanes = 0, |
1288 | 145 .bpp = 8, |
1291 | 146 .planar = FALSE, |
435 | 147 .format = 0, |
2022
eb6dafdd36dc
Add option -C for controlling output file compression (PNG and IFF for now) in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2021
diff
changeset
|
148 .compression = FCMP_BEST, |
435 | 149 }; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
150 |
860
daebbf28953d
The argument handling API in dmargs* was synced with th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
854
diff
changeset
|
151 static const DMOptArg optList[] = |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
152 { |
983 | 153 { 0, '?', "help", "Show this help", OPT_NONE }, |
154 { 15, 'v', "verbose", "Increase verbosity", OPT_NONE }, | |
155 { 3, 'o', "output", "Output filename", OPT_ARGREQ }, | |
2006
9f7e9a393771
Document the negative input skip in -s option help.
Matti Hamalainen <ccr@tnsp.org>
parents:
2005
diff
changeset
|
156 { 4, 's', "skip", "Skip N bytes in input from start (negative value will be offset from input end)", OPT_ARGREQ }, |
2103
78a9140f02b1
Improve help for spr/chr formats by listing the :mc and :sc flags at their
Matti Hamalainen <ccr@tnsp.org>
parents:
2100
diff
changeset
|
157 { 1, 'i', "informat", "Set input format (see --formats)", OPT_ARGREQ }, |
78a9140f02b1
Improve help for spr/chr formats by listing the :mc and :sc flags at their
Matti Hamalainen <ccr@tnsp.org>
parents:
2100
diff
changeset
|
158 { 5, 'f', "format", "Set output format (see --formats)", OPT_ARGREQ }, |
1640
e9a43ee46f71
Add '-F' short option alias for '--formats'.
Matti Hamalainen <ccr@tnsp.org>
parents:
1638
diff
changeset
|
159 { 17, 'F', "formats", "List supported input/output formats", OPT_NONE }, |
983 | 160 { 8, 'q', "sequential", "Output sequential files (image output only)", OPT_NONE }, |
2029
5ecd51009072
Rename '-c' colorindex map short option to '-m'.
Matti Hamalainen <ccr@tnsp.org>
parents:
2022
diff
changeset
|
161 { 6, 'm', "colormap", "Set color index mapping (see below for information)", OPT_ARGREQ }, |
983 | 162 { 7, 'n', "numitems", "How many 'items' to output (default: all)", OPT_ARGREQ }, |
163 { 11, 'w', "width", "Item width (number of items per row, min 1)", OPT_ARGREQ }, | |
2058
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
164 { 9, 'S', "scale", "Scale output image by specified value(s) (see below)", OPT_ARGREQ }, |
987
5af2097ab284
Cleanup gfxconv option help a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
983
diff
changeset
|
165 { 12, 'P', "paletted", "Use indexed/paletted output IF possible.", OPT_NONE }, |
1291 | 166 { 13, 'N', "nplanes", "# of bitplanes (some output formats)", OPT_ARGREQ }, |
2144
0bb1d0ad178f
Fix bpp option description.
Matti Hamalainen <ccr@tnsp.org>
parents:
2143
diff
changeset
|
167 { 18, 'B', "bpp", "Bits per plane (some output formats)", OPT_ARGREQ }, |
1293
1dce9e5f4a2f
Oops, two options were overlapping, fixed.
Matti Hamalainen <ccr@tnsp.org>
parents:
1291
diff
changeset
|
168 { 14, 'I', "interleave", "Interleaved/planar output (some output formats)", OPT_NONE }, |
2059
5b7f5505267c
Improve gfxconv --help a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
2058
diff
changeset
|
169 { 20, 'C', "compress", "Use compression -C <0-9>, 0 = disable, default is 9", OPT_ARGREQ }, |
983 | 170 { 16, 'R', "remap", "Remap output image colors (-R <(#RRGGBB|index):index>[,<..>][+remove] | -R @map.txt[+remove])", OPT_ARGREQ }, |
2137
903effcd616b
Use only long option for char ROM.
Matti Hamalainen <ccr@tnsp.org>
parents:
2126
diff
changeset
|
171 { 21, 0, "char-rom", "Set character ROM file to be used.", OPT_ARGREQ }, |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
172 }; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
173 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
174 static const int optListN = sizeof(optList) / sizeof(optList[0]); |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
175 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
176 |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
177 void argShowFormats() |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
178 { |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
179 printf( |
1545
3b613fcbf3ff
Improve how format read/write capabilities are marked and shown.
Matti Hamalainen <ccr@tnsp.org>
parents:
1543
diff
changeset
|
180 "Available input/output formats (-f <frmt>):\n" |
3b613fcbf3ff
Improve how format read/write capabilities are marked and shown.
Matti Hamalainen <ccr@tnsp.org>
parents:
1543
diff
changeset
|
181 " frmt | RW | Description\n" |
3b613fcbf3ff
Improve how format read/write capabilities are marked and shown.
Matti Hamalainen <ccr@tnsp.org>
parents:
1543
diff
changeset
|
182 "------+----+-------------------------------------------------------\n" |
432
b583a682f12d
Improve listing of input/output formats in --help.
Matti Hamalainen <ccr@tnsp.org>
parents:
431
diff
changeset
|
183 ); |
1235
5b8245e5f785
Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1167
diff
changeset
|
184 |
1532 | 185 for (int i = 0; i < nconvFormatList; i++) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
186 { |
1545
3b613fcbf3ff
Improve how format read/write capabilities are marked and shown.
Matti Hamalainen <ccr@tnsp.org>
parents:
1543
diff
changeset
|
187 const DMConvFormat *fmt = &convFormatList[i]; |
2103
78a9140f02b1
Improve help for spr/chr formats by listing the :mc and :sc flags at their
Matti Hamalainen <ccr@tnsp.org>
parents:
2100
diff
changeset
|
188 printf("%-6s| %c%c | %s%s\n", |
432
b583a682f12d
Improve listing of input/output formats in --help.
Matti Hamalainen <ccr@tnsp.org>
parents:
431
diff
changeset
|
189 fmt->fext ? fmt->fext : "", |
1545
3b613fcbf3ff
Improve how format read/write capabilities are marked and shown.
Matti Hamalainen <ccr@tnsp.org>
parents:
1543
diff
changeset
|
190 (fmt->flags & DM_FMT_RD) ? 'R' : ' ', |
3b613fcbf3ff
Improve how format read/write capabilities are marked and shown.
Matti Hamalainen <ccr@tnsp.org>
parents:
1543
diff
changeset
|
191 (fmt->flags & DM_FMT_WR) ? 'W' : ' ', |
2103
78a9140f02b1
Improve help for spr/chr formats by listing the :mc and :sc flags at their
Matti Hamalainen <ccr@tnsp.org>
parents:
2100
diff
changeset
|
192 fmt->name, |
78a9140f02b1
Improve help for spr/chr formats by listing the :mc and :sc flags at their
Matti Hamalainen <ccr@tnsp.org>
parents:
2100
diff
changeset
|
193 fmt->help != NULL ? fmt->help : ""); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
194 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
195 |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
196 printf( |
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
197 "\n" |
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
198 "(Not all input->output combinations are actually supported.)\n" |
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
199 "\n" |
1604 | 200 "Available C64 bitmap formats (-f <frmt>):\n" |
1545
3b613fcbf3ff
Improve how format read/write capabilities are marked and shown.
Matti Hamalainen <ccr@tnsp.org>
parents:
1543
diff
changeset
|
201 " frmt | RW | Type | Description\n" |
3b613fcbf3ff
Improve how format read/write capabilities are marked and shown.
Matti Hamalainen <ccr@tnsp.org>
parents:
1543
diff
changeset
|
202 "------+----+-----------------+-------------------------------------\n" |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
203 ); |
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
204 |
1532 | 205 for (int i = 0; i < ndmC64ImageFormats; i++) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
206 { |
516 | 207 const DMC64ImageFormat *fmt = &dmC64ImageFormats[i]; |
530
5b37a2e427b7
Greatly simplify and also improve the multicolor/hires/lace bitmap->image
Matti Hamalainen <ccr@tnsp.org>
parents:
516
diff
changeset
|
208 char buf[64]; |
1759
027fb7313d85
Add a format flag for marking formats that have broken/incomplete support and use it.
Matti Hamalainen <ccr@tnsp.org>
parents:
1747
diff
changeset
|
209 printf("%-6s| %c%c | %-15s | %s%s\n", |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
210 fmt->fext, |
1545
3b613fcbf3ff
Improve how format read/write capabilities are marked and shown.
Matti Hamalainen <ccr@tnsp.org>
parents:
1543
diff
changeset
|
211 (fmt->flags & DM_FMT_RD) ? 'R' : ' ', |
3b613fcbf3ff
Improve how format read/write capabilities are marked and shown.
Matti Hamalainen <ccr@tnsp.org>
parents:
1543
diff
changeset
|
212 (fmt->flags & DM_FMT_WR) ? 'W' : ' ', |
1775
4e4d54135baf
Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents:
1759
diff
changeset
|
213 dmC64GetImageTypeString(buf, sizeof(buf), fmt->format->type, FALSE), |
1759
027fb7313d85
Add a format flag for marking formats that have broken/incomplete support and use it.
Matti Hamalainen <ccr@tnsp.org>
parents:
1747
diff
changeset
|
214 fmt->name, |
027fb7313d85
Add a format flag for marking formats that have broken/incomplete support and use it.
Matti Hamalainen <ccr@tnsp.org>
parents:
1747
diff
changeset
|
215 fmt->flags & DM_FMT_BROKEN ? " [BROKEN]" : ""); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
216 } |
1667
7f74073813c6
Display number of supported C64 image formats in --formats list of 64vw and gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1664
diff
changeset
|
217 printf("%d formats supported.\n", ndmC64ImageFormats); |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
218 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
219 |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
220 |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
221 void argShowHelp() |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
222 { |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
223 dmPrintBanner(stdout, dmProgName, "[options] <input file>"); |
860
daebbf28953d
The argument handling API in dmargs* was synced with th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
854
diff
changeset
|
224 dmArgsPrintHelp(stdout, optList, optListN, 0); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
225 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
226 printf( |
837 | 227 "\n" |
2058
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
228 "Output image scaling (-S)\n" |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
229 "-------------------------\n" |
2062
f11fad2dc3b5
Improve scale factor option '-S' help.
Matti Hamalainen <ccr@tnsp.org>
parents:
2059
diff
changeset
|
230 "Scaling option '-S <n>', '-S <x>:<y>', '-S <x>:<y>*<n>' can be used to set\n" |
f11fad2dc3b5
Improve scale factor option '-S' help.
Matti Hamalainen <ccr@tnsp.org>
parents:
2059
diff
changeset
|
231 "the direct or relative scale integer factor(s). '-S <n>' sets both height\n" |
f11fad2dc3b5
Improve scale factor option '-S' help.
Matti Hamalainen <ccr@tnsp.org>
parents:
2059
diff
changeset
|
232 "and width scale factor to <n>. '-S <x>:<y>*<n>' scales width by X*n and\n" |
f11fad2dc3b5
Improve scale factor option '-S' help.
Matti Hamalainen <ccr@tnsp.org>
parents:
2059
diff
changeset
|
233 "height Y*n. Certain input formats set their default aspect/scale factors.\n" |
f11fad2dc3b5
Improve scale factor option '-S' help.
Matti Hamalainen <ccr@tnsp.org>
parents:
2059
diff
changeset
|
234 "By prepending -S parameters with asterisk ('*') you can scale relative to\n" |
f11fad2dc3b5
Improve scale factor option '-S' help.
Matti Hamalainen <ccr@tnsp.org>
parents:
2059
diff
changeset
|
235 "those values. (e.g. '-S *2' for example.) NOTE! Only integer scale factors\n" |
f11fad2dc3b5
Improve scale factor option '-S' help.
Matti Hamalainen <ccr@tnsp.org>
parents:
2059
diff
changeset
|
236 "can be used at the moment.\n" |
2058
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
237 "\n" |
1914 | 238 "Palette remapping (-R)\n" |
239 "----------------------\n" | |
240 "Indexed palette color remapping can be performed via the -R option, either\n" | |
818
a6452b575c63
Add some online documentation.
Matti Hamalainen <ccr@tnsp.org>
parents:
814
diff
changeset
|
241 "specifying single colors or filename of file containing remap definitions.\n" |
a6452b575c63
Add some online documentation.
Matti Hamalainen <ccr@tnsp.org>
parents:
814
diff
changeset
|
242 "Colors to be remapped can be specified either by their palette index or by\n" |
a6452b575c63
Add some online documentation.
Matti Hamalainen <ccr@tnsp.org>
parents:
814
diff
changeset
|
243 "their RGB values as a hex triplet (#rrggbb). Example of a remap definition:\n" |
a6452b575c63
Add some online documentation.
Matti Hamalainen <ccr@tnsp.org>
parents:
814
diff
changeset
|
244 "-R #000000:0,#ffffff:1 would remap black and white to indices 0 and 1.\n" |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
245 "\n" |
1330 | 246 "Remap file can be specified as \"-R @filename\", and it is a text file with\n" |
247 "one remap definition per line in same format as above. All empty lines and\n" | |
248 "lines starting with a semicolor (;) will be ignored as comments. Any extra\n" | |
249 "whitespace separating items will be ignored as well.\n" | |
818
a6452b575c63
Add some online documentation.
Matti Hamalainen <ccr@tnsp.org>
parents:
814
diff
changeset
|
250 "\n" |
821
8ec16cca0eef
Change -R remap option syntax slightly and document it.
Matti Hamalainen <ccr@tnsp.org>
parents:
820
diff
changeset
|
251 "Optional +remove can be specified (-R <...>+remove), which will remove all\n" |
2077
838ed06b3927
Make a note about '-R +remove' in help.
Matti Hamalainen <ccr@tnsp.org>
parents:
2070
diff
changeset
|
252 "unused colors from the palette. This is not always desirable, for example\n" |
838ed06b3927
Make a note about '-R +remove' in help.
Matti Hamalainen <ccr@tnsp.org>
parents:
2070
diff
changeset
|
253 "when converting multiple images to same palette. You can also specify the\n" |
838ed06b3927
Make a note about '-R +remove' in help.
Matti Hamalainen <ccr@tnsp.org>
parents:
2070
diff
changeset
|
254 "+remove option by itself to remove all unused colors: -R +remove\n" |
821
8ec16cca0eef
Change -R remap option syntax slightly and document it.
Matti Hamalainen <ccr@tnsp.org>
parents:
820
diff
changeset
|
255 "\n" |
2029
5ecd51009072
Rename '-c' colorindex map short option to '-m'.
Matti Hamalainen <ccr@tnsp.org>
parents:
2022
diff
changeset
|
256 "Color index mapping (-m)\n" |
5ecd51009072
Rename '-c' colorindex map short option to '-m'.
Matti Hamalainen <ccr@tnsp.org>
parents:
2022
diff
changeset
|
257 "------------------------\n" |
1914 | 258 "Color mapping definitions are used for ANSI and image output, to declare what\n" |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
259 "output colors of the C64 palette are used for each single color/multi color\n" |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
260 "bit-combination. For example, if the input is multi color sprite or char,\n" |
2029
5ecd51009072
Rename '-c' colorindex map short option to '-m'.
Matti Hamalainen <ccr@tnsp.org>
parents:
2022
diff
changeset
|
261 "you can define colors like: -m 0,8,3,15 .. for single color: -m 0,1\n" |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
262 "The numbers are palette indexes, and the order is for bit(pair)-values\n" |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
263 "00, 01, 10, 11 (multi color) and 0, 1 (single color). NOTICE! 255 is the\n" |
1914 | 264 "special transparency color index.\n" |
837 | 265 "\n" |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
266 ); |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
267 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
268 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
269 |
2079
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
270 /* Replace filename extension based on format pattern. |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
271 * Usage: res = dm_strdup_fext(orig_filename, "foo_%s.cmp"); |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
272 */ |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
273 char *dm_strdup_fext(const char *filename, const char *fmt) |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
274 { |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
275 char *result, *tmp, *fext; |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
276 |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
277 if (filename == NULL || |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
278 (tmp = dm_strdup(filename)) == NULL) |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
279 return NULL; |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
280 |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
281 if ((fext = strrchr(tmp, '.')) != NULL) |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
282 { |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
283 char *fpath = strrchr(tmp, DM_DIR_SEPARATOR); |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
284 if (fpath == NULL || (fpath != NULL && fext > fpath)) |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
285 *fext = 0; |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
286 } |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
287 |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
288 result = dm_strdup_printf(fmt, tmp); |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
289 |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
290 dmFree(tmp); |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
291 |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
292 return result; |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
293 } |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
294 |
9b6027d51f76
Move dm_strdup_fext() and dm_basefilename() to gfxconv, as they are only used there.
Matti Hamalainen <ccr@tnsp.org>
parents:
2077
diff
changeset
|
295 |
1866
734234e7ca95
Add a comment about the imperfection of ANSI color output.
Matti Hamalainen <ccr@tnsp.org>
parents:
1865
diff
changeset
|
296 // |
734234e7ca95
Add a comment about the imperfection of ANSI color output.
Matti Hamalainen <ccr@tnsp.org>
parents:
1865
diff
changeset
|
297 // Return a "matching" ANSI colour code for given C64 palette index. |
734234e7ca95
Add a comment about the imperfection of ANSI color output.
Matti Hamalainen <ccr@tnsp.org>
parents:
1865
diff
changeset
|
298 // As the standard 16 ANSI colours are not exact match and some C64 |
734234e7ca95
Add a comment about the imperfection of ANSI color output.
Matti Hamalainen <ccr@tnsp.org>
parents:
1865
diff
changeset
|
299 // colours cant be represented, this is an imperfect conversion. |
734234e7ca95
Add a comment about the imperfection of ANSI color output.
Matti Hamalainen <ccr@tnsp.org>
parents:
1865
diff
changeset
|
300 // |
1865
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
301 const char *dmC64GetANSIFromC64Color(const int col) |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
302 { |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
303 switch (col) |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
304 { |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
305 case 0: return "0;30"; // Black |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
306 case 1: return "0;1;37"; // White |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
307 case 2: return "0;31"; // Red |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
308 case 3: return "0;36"; |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
309 case 4: return "0;35"; |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
310 case 5: return "0;32"; |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
311 case 6: return "0;34"; |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
312 case 7: return "0;1;33"; |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
313 case 8: return "0;33"; |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
314 case 9: return "0;31"; |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
315 case 10: return "0;1;31"; |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
316 case 11: return "0;1;30"; |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
317 case 12: return "0;1;30"; |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
318 case 13: return "0;1;32"; |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
319 case 14: return "0;1;34"; |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
320 case 15: return "0;37"; |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
321 |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
322 default: return "0"; |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
323 } |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
324 } |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
325 |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
326 |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
327 BOOL dmGetConvFormat(const int type, const int format, DMConvFormat *pfmt) |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
328 { |
1546 | 329 for (int i = 0; i < nconvFormatList; i++) |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
330 { |
1546 | 331 const DMConvFormat *fmt = &convFormatList[i]; |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
332 if (fmt->type == type && |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
333 fmt->format == format) |
1869
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
334 { |
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
335 memcpy(pfmt, fmt, sizeof(DMConvFormat)); |
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
336 return TRUE; |
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
337 } |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
338 } |
1869
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
339 |
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
340 for (int i = 0; i < nconvFormatList; i++) |
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
341 { |
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
342 const DMConvFormat *fmt = &convFormatList[i]; |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
343 if (fmt->type == type && type == FFMT_BITMAP) |
1869
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
344 { |
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
345 const DMConvFormat *fmt = &convFormatList[i]; |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
346 const DMC64ImageFormat *cfmt = &dmC64ImageFormats[format]; |
1869
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
347 memcpy(pfmt, fmt, sizeof(DMConvFormat)); |
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
348 pfmt->fext = cfmt->name; |
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
349 return TRUE; |
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
350 } |
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
351 } |
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
352 |
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
353 return FALSE; |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
354 } |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
355 |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
356 |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
357 BOOL dmGetC64FormatByExt(const char *fext, int *type, int *format) |
819
0177d4a66d48
Split dmGetFormatByExt() to dmGetC64FormatByExt().
Matti Hamalainen <ccr@tnsp.org>
parents:
818
diff
changeset
|
358 { |
0177d4a66d48
Split dmGetFormatByExt() to dmGetC64FormatByExt().
Matti Hamalainen <ccr@tnsp.org>
parents:
818
diff
changeset
|
359 if (fext == NULL) |
0177d4a66d48
Split dmGetFormatByExt() to dmGetC64FormatByExt().
Matti Hamalainen <ccr@tnsp.org>
parents:
818
diff
changeset
|
360 return FALSE; |
0177d4a66d48
Split dmGetFormatByExt() to dmGetC64FormatByExt().
Matti Hamalainen <ccr@tnsp.org>
parents:
818
diff
changeset
|
361 |
1569 | 362 for (int i = 0; i < ndmC64ImageFormats; i++) |
819
0177d4a66d48
Split dmGetFormatByExt() to dmGetC64FormatByExt().
Matti Hamalainen <ccr@tnsp.org>
parents:
818
diff
changeset
|
363 { |
0177d4a66d48
Split dmGetFormatByExt() to dmGetC64FormatByExt().
Matti Hamalainen <ccr@tnsp.org>
parents:
818
diff
changeset
|
364 const DMC64ImageFormat *fmt = &dmC64ImageFormats[i]; |
0177d4a66d48
Split dmGetFormatByExt() to dmGetC64FormatByExt().
Matti Hamalainen <ccr@tnsp.org>
parents:
818
diff
changeset
|
365 if (fmt->fext != NULL && |
0177d4a66d48
Split dmGetFormatByExt() to dmGetC64FormatByExt().
Matti Hamalainen <ccr@tnsp.org>
parents:
818
diff
changeset
|
366 strcasecmp(fext, fmt->fext) == 0) |
0177d4a66d48
Split dmGetFormatByExt() to dmGetC64FormatByExt().
Matti Hamalainen <ccr@tnsp.org>
parents:
818
diff
changeset
|
367 { |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
368 *type = FFMT_BITMAP; |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
369 *format = i; |
819
0177d4a66d48
Split dmGetFormatByExt() to dmGetC64FormatByExt().
Matti Hamalainen <ccr@tnsp.org>
parents:
818
diff
changeset
|
370 return TRUE; |
0177d4a66d48
Split dmGetFormatByExt() to dmGetC64FormatByExt().
Matti Hamalainen <ccr@tnsp.org>
parents:
818
diff
changeset
|
371 } |
0177d4a66d48
Split dmGetFormatByExt() to dmGetC64FormatByExt().
Matti Hamalainen <ccr@tnsp.org>
parents:
818
diff
changeset
|
372 } |
0177d4a66d48
Split dmGetFormatByExt() to dmGetC64FormatByExt().
Matti Hamalainen <ccr@tnsp.org>
parents:
818
diff
changeset
|
373 |
0177d4a66d48
Split dmGetFormatByExt() to dmGetC64FormatByExt().
Matti Hamalainen <ccr@tnsp.org>
parents:
818
diff
changeset
|
374 return FALSE; |
0177d4a66d48
Split dmGetFormatByExt() to dmGetC64FormatByExt().
Matti Hamalainen <ccr@tnsp.org>
parents:
818
diff
changeset
|
375 } |
0177d4a66d48
Split dmGetFormatByExt() to dmGetC64FormatByExt().
Matti Hamalainen <ccr@tnsp.org>
parents:
818
diff
changeset
|
376 |
0177d4a66d48
Split dmGetFormatByExt() to dmGetC64FormatByExt().
Matti Hamalainen <ccr@tnsp.org>
parents:
818
diff
changeset
|
377 |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
378 BOOL dmGetFormatByExt(const char *fext, int *type, int *format) |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
379 { |
430
77fae3e4e4d3
Fix a segfault due to not checking for NULL file extension entries in dmGetFormatByExt().
Matti Hamalainen <ccr@tnsp.org>
parents:
429
diff
changeset
|
380 if (fext == NULL) |
77fae3e4e4d3
Fix a segfault due to not checking for NULL file extension entries in dmGetFormatByExt().
Matti Hamalainen <ccr@tnsp.org>
parents:
429
diff
changeset
|
381 return FALSE; |
77fae3e4e4d3
Fix a segfault due to not checking for NULL file extension entries in dmGetFormatByExt().
Matti Hamalainen <ccr@tnsp.org>
parents:
429
diff
changeset
|
382 |
1569 | 383 for (int i = 0; i < nconvFormatList; i++) |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
384 { |
1546 | 385 const DMConvFormat *fmt = &convFormatList[i]; |
430
77fae3e4e4d3
Fix a segfault due to not checking for NULL file extension entries in dmGetFormatByExt().
Matti Hamalainen <ccr@tnsp.org>
parents:
429
diff
changeset
|
386 if (fmt->fext != NULL && |
77fae3e4e4d3
Fix a segfault due to not checking for NULL file extension entries in dmGetFormatByExt().
Matti Hamalainen <ccr@tnsp.org>
parents:
429
diff
changeset
|
387 strcasecmp(fext, fmt->fext) == 0) |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
388 { |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
389 *type = fmt->type; |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
390 *format = fmt->format; |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
391 return TRUE; |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
392 } |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
393 } |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
394 |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
395 return FALSE; |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
396 } |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
397 |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
398 |
871
fc272f5f2d15
Make value type of dmGetIntVal() unsigned.
Matti Hamalainen <ccr@tnsp.org>
parents:
867
diff
changeset
|
399 static BOOL dmParseMapOptionMapItem(const char *popt, DMMapValue *value, const unsigned int nmax, const char *msg) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
400 { |
481
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
401 char *end, *split, *opt = dm_strdup(popt); |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
402 |
481
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
403 if (opt == NULL) |
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
404 goto error; |
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
405 |
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
406 if ((end = split = strchr(opt, ':')) == NULL) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
407 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
408 dmErrorMsg("Invalid %s value '%s', expected <(#|%)RRGGBB|[$|0x]index>:<[$|0x]index>.\n", msg, opt); |
481
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
409 goto error; |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
410 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
411 |
481
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
412 // Trim whitespace |
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
413 *end = 0; |
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
414 for (end--; end > opt && *end && isspace(*end); end--) |
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
415 *end = 0; |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
416 |
481
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
417 // Parse either a hex triplet color definition or a normal value |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
418 if (*opt == '#' || *opt == '%') |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
419 { |
867 | 420 unsigned int colR, colG, colB, colA; |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
421 |
474
95d1facfdb77
Improve color matching, make it possible to ignore alpha values.
Matti Hamalainen <ccr@tnsp.org>
parents:
473
diff
changeset
|
422 if (sscanf(opt + 1, "%2x%2x%2x%2x", &colR, &colG, &colB, &colA) == 4 || |
95d1facfdb77
Improve color matching, make it possible to ignore alpha values.
Matti Hamalainen <ccr@tnsp.org>
parents:
473
diff
changeset
|
423 sscanf(opt + 1, "%2X%2X%2X%2X", &colR, &colG, &colB, &colA) == 4) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
424 { |
474
95d1facfdb77
Improve color matching, make it possible to ignore alpha values.
Matti Hamalainen <ccr@tnsp.org>
parents:
473
diff
changeset
|
425 value->alpha = TRUE; |
95d1facfdb77
Improve color matching, make it possible to ignore alpha values.
Matti Hamalainen <ccr@tnsp.org>
parents:
473
diff
changeset
|
426 value->color.a = colA; |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
427 } |
474
95d1facfdb77
Improve color matching, make it possible to ignore alpha values.
Matti Hamalainen <ccr@tnsp.org>
parents:
473
diff
changeset
|
428 else |
95d1facfdb77
Improve color matching, make it possible to ignore alpha values.
Matti Hamalainen <ccr@tnsp.org>
parents:
473
diff
changeset
|
429 if (sscanf(opt + 1, "%2x%2x%2x", &colR, &colG, &colB) != 3 && |
95d1facfdb77
Improve color matching, make it possible to ignore alpha values.
Matti Hamalainen <ccr@tnsp.org>
parents:
473
diff
changeset
|
430 sscanf(opt + 1, "%2X%2X%2X", &colR, &colG, &colB) != 3) |
95d1facfdb77
Improve color matching, make it possible to ignore alpha values.
Matti Hamalainen <ccr@tnsp.org>
parents:
473
diff
changeset
|
431 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
432 dmErrorMsg("Invalid %s value '%s', expected a hex triplet, got '%s'.\n", msg, popt, opt + 1); |
481
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
433 goto error; |
474
95d1facfdb77
Improve color matching, make it possible to ignore alpha values.
Matti Hamalainen <ccr@tnsp.org>
parents:
473
diff
changeset
|
434 } |
95d1facfdb77
Improve color matching, make it possible to ignore alpha values.
Matti Hamalainen <ccr@tnsp.org>
parents:
473
diff
changeset
|
435 |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
436 value->color.r = colR; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
437 value->color.g = colG; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
438 value->color.b = colB; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
439 value->triplet = TRUE; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
440 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
441 else |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
442 { |
2004
161e731eb152
Improve dmGetIntVal() to accept an optional negative value boolean flag
Matti Hamalainen <ccr@tnsp.org>
parents:
1947
diff
changeset
|
443 if (!dmGetIntVal(opt, &value->from, NULL)) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
444 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
445 dmErrorMsg("Invalid %s value '%s', could not parse source value '%s'.\n", msg, popt, opt); |
481
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
446 goto error; |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
447 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
448 value->triplet = FALSE; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
449 } |
1235
5b8245e5f785
Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1167
diff
changeset
|
450 |
481
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
451 // Trim whitespace |
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
452 split++; |
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
453 while (*split && isspace(*split)) split++; |
1235
5b8245e5f785
Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1167
diff
changeset
|
454 |
481
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
455 // Parse destination value |
2004
161e731eb152
Improve dmGetIntVal() to accept an optional negative value boolean flag
Matti Hamalainen <ccr@tnsp.org>
parents:
1947
diff
changeset
|
456 if (!dmGetIntVal(split, &value->to, NULL)) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
457 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
458 dmErrorMsg("Invalid %s value '%s', could not parse destination value '%s'.\n", msg, popt, split); |
481
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
459 goto error; |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
460 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
461 |
871
fc272f5f2d15
Make value type of dmGetIntVal() unsigned.
Matti Hamalainen <ccr@tnsp.org>
parents:
867
diff
changeset
|
462 if (!value->triplet && value->from > 255) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
463 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
464 dmErrorMsg("Invalid %s map source color index value %d, must be [0..255].\n", msg, value->from); |
481
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
465 goto error; |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
466 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
467 |
871
fc272f5f2d15
Make value type of dmGetIntVal() unsigned.
Matti Hamalainen <ccr@tnsp.org>
parents:
867
diff
changeset
|
468 if (value->to > nmax) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
469 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
470 dmErrorMsg("Invalid %s map destination color index value %d, must be [0..%d].\n", msg, value->to, nmax); |
481
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
471 goto error; |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
472 } |
481
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
473 |
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
474 dmFree(opt); |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
475 return TRUE; |
481
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
476 |
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
477 error: |
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
478 dmFree(opt); |
c3f0fca5b596
Improve remapping option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
480
diff
changeset
|
479 return FALSE; |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
480 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
481 |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
482 |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
483 static BOOL dmParseMapOptionItem(char *opt, char *end, void *pvalue, const int index, const int nmax, const BOOL requireIndex, const char *msg) |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
484 { |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
485 // Trim whitespace |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
486 if (end != NULL) |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
487 { |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
488 *end = 0; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
489 for (end--; end > opt && *end && isspace(*end); end--) |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
490 *end = 0; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
491 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
492 while (*opt && isspace(*opt)) opt++; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
493 |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
494 // Parse item based on mode |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
495 if (requireIndex) |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
496 { |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
497 DMMapValue *value = (DMMapValue *) pvalue; |
475
c0dedfef3edf
Fix option parsing of mappings.
Matti Hamalainen <ccr@tnsp.org>
parents:
474
diff
changeset
|
498 if (!dmParseMapOptionMapItem(opt, &value[index], nmax, msg)) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
499 return FALSE; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
500 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
501 else |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
502 { |
871
fc272f5f2d15
Make value type of dmGetIntVal() unsigned.
Matti Hamalainen <ccr@tnsp.org>
parents:
867
diff
changeset
|
503 unsigned int *value = (unsigned int *) pvalue; |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
504 char *split = strchr(opt, ':'); |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
505 if (split != NULL) |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
506 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
507 dmErrorMsg("Unexpected ':' in indexed %s '%s'.\n", msg, opt); |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
508 return FALSE; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
509 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
510 |
2004
161e731eb152
Improve dmGetIntVal() to accept an optional negative value boolean flag
Matti Hamalainen <ccr@tnsp.org>
parents:
1947
diff
changeset
|
511 if (!dmGetIntVal(opt, &value[index], NULL)) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
512 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
513 dmErrorMsg("Invalid %s value '%s', could not parse.\n", msg, opt); |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
514 return FALSE; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
515 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
516 } |
1235
5b8245e5f785
Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1167
diff
changeset
|
517 |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
518 return TRUE; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
519 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
520 |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
521 |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
522 BOOL dmParseMapOptionString(char *opt, void *values, int *nvalues, const int nmax, const BOOL requireIndex, const char *msg) |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
523 { |
853
b2140d41785a
Cleanup some parsing logic.
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
524 char *start = opt; |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
525 |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
526 *nvalues = 0; |
853
b2140d41785a
Cleanup some parsing logic.
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
527 while (*start && *nvalues < nmax) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
528 { |
853
b2140d41785a
Cleanup some parsing logic.
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
529 char *end = strchr(start, ','); |
b2140d41785a
Cleanup some parsing logic.
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
530 |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
531 if (!dmParseMapOptionItem(start, end, values, *nvalues, nmax, requireIndex, msg)) |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
532 return FALSE; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
533 |
853
b2140d41785a
Cleanup some parsing logic.
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
534 (*nvalues)++; |
b2140d41785a
Cleanup some parsing logic.
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
535 |
b2140d41785a
Cleanup some parsing logic.
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
536 if (!end) |
b2140d41785a
Cleanup some parsing logic.
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
537 break; |
b2140d41785a
Cleanup some parsing logic.
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
538 |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
539 start = end + 1; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
540 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
541 |
1235
5b8245e5f785
Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1167
diff
changeset
|
542 return TRUE; |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
543 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
544 |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
545 |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
546 int dmParseColorRemapFile(const char *filename, DMMapValue *values, int *nvalue, const int nmax) |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
547 { |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
548 FILE *fp; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
549 char line[512]; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
550 int res = DMERR_OK; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
551 |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
552 if ((fp = fopen(filename, "r")) == NULL) |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
553 { |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
554 res = dmGetErrno(); |
972
6d5edc6af2ad
Error handling cleanups/fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
958
diff
changeset
|
555 dmError(res, "Could not open color remap file '%s' for reading, %d: %s\n", |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
556 res, dmErrorStr(res)); |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
557 return res; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
558 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
559 |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
560 while (fgets(line, sizeof(line), fp)) |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
561 { |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
562 char *start = line; |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
563 line[sizeof(line) - 1] = 0; |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
564 |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
565 while (*start && isspace(*start)) start++; |
1235
5b8245e5f785
Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1167
diff
changeset
|
566 |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
567 if (*start != 0 && *start != ';') |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
568 { |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
569 if (!dmParseMapOptionMapItem(line, &values[*nvalue], nmax, "mapping file")) |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
570 goto error; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
571 else |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
572 { |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
573 (*nvalue)++; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
574 if (*nvalue >= nmax) |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
575 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
576 dmErrorMsg("Too many mapping pairs in '%s', maximum is %d.\n", |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
577 filename, nmax); |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
578 goto error; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
579 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
580 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
581 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
582 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
583 |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
584 error: |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
585 fclose(fp); |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
586 return res; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
587 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
588 |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
589 |
1867
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
590 BOOL dmParseFormatOption(const char *msg1, const char *msg2, char *optArg, int *format, int *subFormat) |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
591 { |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
592 char *flags = strchr(optArg, ':'); |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
593 if (flags != NULL) |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
594 *flags++ = 0; |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
595 |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
596 if (!dmGetFormatByExt(optArg, format, subFormat) && |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
597 !dmGetC64FormatByExt(optArg, format, subFormat)) |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
598 { |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
599 dmErrorMsg("Invalid %s format '%s', see -F / --formats for format list.\n", |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
600 msg1, optArg); |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
601 return FALSE; |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
602 } |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
603 |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
604 if (flags != NULL) |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
605 { |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
606 switch (*format) |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
607 { |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
608 case FFMT_SPRITE: |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
609 case FFMT_CHAR: |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
610 if (strcasecmp(flags, "mc") == 0) |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
611 optInMulticolor = TRUE; |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
612 else |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
613 if (strcasecmp(flags, "sc") == 0) |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
614 optInMulticolor = FALSE; |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
615 else |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
616 { |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
617 dmErrorMsg("Invalid %s format flags for sprite/char '%s', should be 'mc' or 'sc'.\n", |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
618 msg1, flags); |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
619 return FALSE; |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
620 } |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
621 break; |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
622 |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
623 default: |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
624 dmErrorMsg("%s format '%s' does not support any flags ('%s').\n", |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
625 msg2, optArg, flags); |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
626 return FALSE; |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
627 } |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
628 } |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
629 |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
630 return TRUE; |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
631 } |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
632 |
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
633 |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
634 BOOL dmParseIntValWithSep(char **arg, unsigned int *value, char *last, const char sep) |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
635 { |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
636 char *ptr = *arg, *end, *start; |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
637 |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
638 // Skip any whitespace at start |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
639 while (*ptr != 0 && isspace(*ptr)) |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
640 ptr++; |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
641 |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
642 start = ptr; |
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
643 |
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
644 // Find next not-xdigit/separator |
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
645 while (*ptr != 0 && |
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
646 (isxdigit(*ptr) || *ptr == 'x' || *ptr == '$') && |
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
647 *ptr != sep) |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
648 ptr++; |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
649 |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
650 end = ptr; |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
651 |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
652 // Skip whitespace again |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
653 while (*ptr != 0 && isspace(*ptr)) |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
654 ptr++; |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
655 |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
656 // Return last character in "last" |
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
657 *last = *ptr; |
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
658 |
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
659 // Set end to NUL |
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
660 *end = 0; |
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
661 |
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
662 // And if last character is not NUL, move ptr |
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
663 if (*last != 0) |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
664 ptr++; |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
665 |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
666 *arg = ptr; |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
667 |
2004
161e731eb152
Improve dmGetIntVal() to accept an optional negative value boolean flag
Matti Hamalainen <ccr@tnsp.org>
parents:
1947
diff
changeset
|
668 return dmGetIntVal(start, value, NULL); |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
669 } |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
670 |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
671 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
672 BOOL argHandleOpt(const int optN, char *optArg, char *currArg) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
673 { |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
674 unsigned int tmpUInt; |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
675 char *tmpStr; |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
676 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
677 switch (optN) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
678 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
679 case 0: |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
680 argShowHelp(); |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
681 exit(0); |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
682 break; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
683 |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
684 case 17: |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
685 argShowFormats(); |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
686 exit(0); |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
687 break; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
688 |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
689 case 15: |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
690 dmVerbosity++; |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
691 break; |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
692 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
693 case 1: |
1869
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
694 { |
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
695 DMConvFormat fmt; |
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
696 |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
697 if (!dmParseFormatOption("input", "Input", optArg, &optInType, &optForcedInSubFormat)) |
1869
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
698 return FALSE; |
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
699 |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
700 dmGetConvFormat(optInType, optForcedInSubFormat, &fmt); |
1869
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
701 if ((fmt.flags & DM_FMT_RD) == 0) |
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
702 { |
1870
1e8f60ce21d1
Add check for writability in output format option -f
Matti Hamalainen <ccr@tnsp.org>
parents:
1869
diff
changeset
|
703 dmErrorMsg("Invalid input format '%s', does not support reading.\n", |
1869
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
704 fmt.name); |
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
705 return FALSE; |
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
706 } |
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
707 } |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
708 break; |
1235
5b8245e5f785
Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1167
diff
changeset
|
709 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
710 case 3: |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
711 optOutFilename = optArg; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
712 break; |
1235
5b8245e5f785
Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1167
diff
changeset
|
713 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
714 case 4: |
2005
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
715 if (!dmGetIntVal(optArg, &optInSkip, &optInSkipNeg)) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
716 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
717 dmErrorMsg("Invalid skip value argument '%s'.\n", optArg); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
718 return FALSE; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
719 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
720 break; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
721 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
722 case 5: |
1870
1e8f60ce21d1
Add check for writability in output format option -f
Matti Hamalainen <ccr@tnsp.org>
parents:
1869
diff
changeset
|
723 { |
1e8f60ce21d1
Add check for writability in output format option -f
Matti Hamalainen <ccr@tnsp.org>
parents:
1869
diff
changeset
|
724 DMConvFormat fmt; |
1e8f60ce21d1
Add check for writability in output format option -f
Matti Hamalainen <ccr@tnsp.org>
parents:
1869
diff
changeset
|
725 |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
726 if (!dmParseFormatOption("output", "Output", optArg, &optOutType, &optOutFormat)) |
1870
1e8f60ce21d1
Add check for writability in output format option -f
Matti Hamalainen <ccr@tnsp.org>
parents:
1869
diff
changeset
|
727 return FALSE; |
1e8f60ce21d1
Add check for writability in output format option -f
Matti Hamalainen <ccr@tnsp.org>
parents:
1869
diff
changeset
|
728 |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
729 dmGetConvFormat(optOutType, optOutFormat, &fmt); |
1870
1e8f60ce21d1
Add check for writability in output format option -f
Matti Hamalainen <ccr@tnsp.org>
parents:
1869
diff
changeset
|
730 if ((fmt.flags & DM_FMT_WR) == 0) |
1e8f60ce21d1
Add check for writability in output format option -f
Matti Hamalainen <ccr@tnsp.org>
parents:
1869
diff
changeset
|
731 { |
1e8f60ce21d1
Add check for writability in output format option -f
Matti Hamalainen <ccr@tnsp.org>
parents:
1869
diff
changeset
|
732 dmErrorMsg("Invalid output format '%s', does not support writing.\n", |
1e8f60ce21d1
Add check for writability in output format option -f
Matti Hamalainen <ccr@tnsp.org>
parents:
1869
diff
changeset
|
733 fmt.name); |
1e8f60ce21d1
Add check for writability in output format option -f
Matti Hamalainen <ccr@tnsp.org>
parents:
1869
diff
changeset
|
734 return FALSE; |
1e8f60ce21d1
Add check for writability in output format option -f
Matti Hamalainen <ccr@tnsp.org>
parents:
1869
diff
changeset
|
735 } |
1e8f60ce21d1
Add check for writability in output format option -f
Matti Hamalainen <ccr@tnsp.org>
parents:
1869
diff
changeset
|
736 } |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
737 break; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
738 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
739 case 6: |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
740 { |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
741 int index, ncolors; |
1865
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
742 if (!dmParseMapOptionString(optArg, optColorMap, |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
743 &ncolors, D64_NCOLORS, FALSE, "color index option")) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
744 return FALSE; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
745 |
2030 | 746 dmMsg(1, "Set color index mapping: "); |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
747 for (index = 0; index < ncolors; index++) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
748 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
749 dmPrint(1, "[%d:%d]%s", |
1865
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
750 index, optColorMap[index], |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
751 (index < ncolors) ? ", " : ""); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
752 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
753 dmPrint(1, "\n"); |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
754 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
755 break; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
756 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
757 case 7: |
2004
161e731eb152
Improve dmGetIntVal() to accept an optional negative value boolean flag
Matti Hamalainen <ccr@tnsp.org>
parents:
1947
diff
changeset
|
758 if (!dmGetIntVal(optArg, &tmpUInt, NULL) || |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
759 tmpUInt < 1) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
760 { |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
761 dmErrorMsg("Invalid count value argument '%s' [1 .. MAXINT]\n", |
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
762 optArg); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
763 return FALSE; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
764 } |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
765 optItemCount = tmpUInt; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
766 break; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
767 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
768 case 8: |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
769 optSequential = TRUE; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
770 break; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
771 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
772 case 9: |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
773 { |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
774 BOOL error = FALSE; |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
775 unsigned int tmpUInt2; |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
776 char *tmpStr = dm_strdup(optArg), |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
777 *tmpOpt = tmpStr, sep; |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
778 |
2058
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
779 // Check for "relative scale mode specifier |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
780 if (*tmpOpt == '*') |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
781 { |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
782 tmpOpt++; |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
783 optScaleMode = SCALE_RELATIVE; |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
784 } |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
785 else |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
786 optScaleMode = SCALE_SET; |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
787 |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
788 // Parse the values |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
789 if (dmParseIntValWithSep(&tmpOpt, &tmpUInt, &sep, ':')) |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
790 { |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
791 if (sep == ':' && |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
792 dmParseIntValWithSep(&tmpOpt, &tmpUInt2, &sep, '*')) |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
793 { |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
794 optSpec.scaleX = tmpUInt; |
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
795 optSpec.scaleY = tmpUInt2; |
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
796 |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
797 if (sep == '*' && |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
798 dmParseIntValWithSep(&tmpOpt, &tmpUInt, &sep, 0)) |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
799 { |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
800 optSpec.scaleX *= tmpUInt; |
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
801 optSpec.scaleY *= tmpUInt; |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
802 } |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
803 error = (sep != 0); |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
804 } |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
805 else |
1890
ee95059b4c18
Oops, fix a blunder left in the refactored scale option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1889
diff
changeset
|
806 if (sep == 0) |
ee95059b4c18
Oops, fix a blunder left in the refactored scale option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1889
diff
changeset
|
807 { |
ee95059b4c18
Oops, fix a blunder left in the refactored scale option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1889
diff
changeset
|
808 optSpec.scaleX = optSpec.scaleY = tmpUInt; |
ee95059b4c18
Oops, fix a blunder left in the refactored scale option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1889
diff
changeset
|
809 } |
ee95059b4c18
Oops, fix a blunder left in the refactored scale option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1889
diff
changeset
|
810 else |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
811 error = TRUE; |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
812 } |
902
c6c480e8e1c8
Add separate X and Y scaling to gfxconv and libgfx outputters.
Matti Hamalainen <ccr@tnsp.org>
parents:
897
diff
changeset
|
813 else |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
814 error = TRUE; |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
815 |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
816 dmFree(tmpStr); |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
817 |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
818 if (error) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
819 { |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
820 dmErrorMsg( |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
821 "Invalid scale option value '%s', should be <n>, <w>:<h> or <w>:<h>*<n>.\n", |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
822 optArg); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
823 return FALSE; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
824 } |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
825 |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
826 if (optSpec.scaleX < 1 || optSpec.scaleX > 50) |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
827 { |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
828 dmErrorMsg("Invalid X scale value %d.\n", optSpec.scaleX); |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
829 return FALSE; |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
830 } |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
831 if (optSpec.scaleY < 1 || optSpec.scaleY > 50) |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
832 { |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
833 dmErrorMsg("Invalid Y scale value %d.\n", optSpec.scaleY); |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
834 return FALSE; |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
835 } |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
836 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
837 break; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
838 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
839 case 11: |
2004
161e731eb152
Improve dmGetIntVal() to accept an optional negative value boolean flag
Matti Hamalainen <ccr@tnsp.org>
parents:
1947
diff
changeset
|
840 if (!dmGetIntVal(optArg, &tmpUInt, NULL) || |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
841 tmpUInt < 1 || tmpUInt > 512) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
842 { |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
843 dmErrorMsg("Invalid planed width value '%s' [1 .. 512]\n", |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
844 optArg); |
902
c6c480e8e1c8
Add separate X and Y scaling to gfxconv and libgfx outputters.
Matti Hamalainen <ccr@tnsp.org>
parents:
897
diff
changeset
|
845 return FALSE; |
c6c480e8e1c8
Add separate X and Y scaling to gfxconv and libgfx outputters.
Matti Hamalainen <ccr@tnsp.org>
parents:
897
diff
changeset
|
846 } |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
847 optPlanedWidth = tmpUInt; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
848 break; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
849 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
850 case 12: |
2065
451980580189
Refactor how paletted/indexed formats are handled in libgfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
2062
diff
changeset
|
851 optUsePalette = TRUE; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
852 break; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
853 |
415
d94f4bcb4be3
IFFMaster RAW output works now, at least to some extent.
Matti Hamalainen <ccr@tnsp.org>
parents:
409
diff
changeset
|
854 case 13: |
2004
161e731eb152
Improve dmGetIntVal() to accept an optional negative value boolean flag
Matti Hamalainen <ccr@tnsp.org>
parents:
1947
diff
changeset
|
855 if (!dmGetIntVal(optArg, &tmpUInt, NULL) || |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
856 tmpUInt < 1 || tmpUInt > 8) |
415
d94f4bcb4be3
IFFMaster RAW output works now, at least to some extent.
Matti Hamalainen <ccr@tnsp.org>
parents:
409
diff
changeset
|
857 { |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
858 dmErrorMsg("Invalid number of bitplanes value '%s' [1 .. 8]\n", |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
859 optArg); |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
860 return FALSE; |
1288 | 861 } |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
862 optSpec.nplanes = tmpUInt; |
1288 | 863 break; |
864 | |
865 case 18: | |
2004
161e731eb152
Improve dmGetIntVal() to accept an optional negative value boolean flag
Matti Hamalainen <ccr@tnsp.org>
parents:
1947
diff
changeset
|
866 if (!dmGetIntVal(optArg, &tmpUInt, NULL) || |
1889
ac9784afae27
Improve option argument parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1888
diff
changeset
|
867 tmpUInt < 1 || tmpUInt > 32) |
1288 | 868 { |
2144
0bb1d0ad178f
Fix bpp option description.
Matti Hamalainen <ccr@tnsp.org>
parents:
2143
diff
changeset
|
869 dmErrorMsg("Invalid number of bits per plane value '%s' [1 .. 32]\n", |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
870 optArg); |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
871 return FALSE; |
415
d94f4bcb4be3
IFFMaster RAW output works now, at least to some extent.
Matti Hamalainen <ccr@tnsp.org>
parents:
409
diff
changeset
|
872 } |
2099
dac89484f143
Fix nplanes and bpp in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2097
diff
changeset
|
873 optSpec.bpp = tmpUInt; |
415
d94f4bcb4be3
IFFMaster RAW output works now, at least to some extent.
Matti Hamalainen <ccr@tnsp.org>
parents:
409
diff
changeset
|
874 break; |
d94f4bcb4be3
IFFMaster RAW output works now, at least to some extent.
Matti Hamalainen <ccr@tnsp.org>
parents:
409
diff
changeset
|
875 |
d94f4bcb4be3
IFFMaster RAW output works now, at least to some extent.
Matti Hamalainen <ccr@tnsp.org>
parents:
409
diff
changeset
|
876 case 14: |
1291 | 877 optSpec.planar = TRUE; |
415
d94f4bcb4be3
IFFMaster RAW output works now, at least to some extent.
Matti Hamalainen <ccr@tnsp.org>
parents:
409
diff
changeset
|
878 break; |
d94f4bcb4be3
IFFMaster RAW output works now, at least to some extent.
Matti Hamalainen <ccr@tnsp.org>
parents:
409
diff
changeset
|
879 |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
880 case 16: |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
881 if ((tmpStr = dm_strrcasecmp(optArg, "+remove")) != NULL) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
882 { |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
883 optRemapRemove = TRUE; |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
884 *tmpStr = 0; |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
885 } |
821
8ec16cca0eef
Change -R remap option syntax slightly and document it.
Matti Hamalainen <ccr@tnsp.org>
parents:
820
diff
changeset
|
886 |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
887 if (optArg[0] == '@') |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
888 { |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
889 if (optArg[1] != 0) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
890 { |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
891 int res; |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
892 if ((res = dmParseColorRemapFile(optArg + 1, |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
893 optRemapTable, &optNRemapTable, DM_MAX_COLORS)) != DMERR_OK) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
894 return FALSE; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
895 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
896 else |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
897 { |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
898 dmErrorMsg("No remap filename given.\n"); |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
899 return FALSE; |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
900 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
901 } |
1888
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
902 else |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
903 { |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
904 if (!dmParseMapOptionString(optArg, optRemapTable, |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
905 &optNRemapTable, DM_MAX_COLORS, TRUE, "color remap option")) |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
906 return FALSE; |
b97f273a9d54
Improve some gfxconv commanline option parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
1886
diff
changeset
|
907 } |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
908 |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
909 optRemapColors = TRUE; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
910 break; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
911 |
854
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
912 case 19: |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
913 { |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
914 int tx0, ty0, tx1, ty1; |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
915 if (strcasecmp(optArg, "auto") == 0) |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
916 { |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
917 optCropMode = CROP_AUTO; |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
918 } |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
919 else |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
920 if (sscanf(optArg, "%d:%d-%d:%d", &tx0, &ty0, &tx1, &ty1) == 4) |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
921 { |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
922 optCropMode = CROP_SIZE; |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
923 optCropX0 = tx0; |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
924 optCropY0 = ty0; |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
925 optCropW = tx1 - tx0 + 1; |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
926 optCropH = ty1 - ty0 + 1; |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
927 } |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
928 else |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
929 if (sscanf(optArg, "%d:%d:%d:%d", &tx0, &ty0, &tx1, &ty1) == 4) |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
930 { |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
931 optCropMode = CROP_SIZE; |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
932 optCropX0 = tx0; |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
933 optCropY0 = ty0; |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
934 optCropW = tx1; |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
935 optCropH = ty1; |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
936 } |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
937 else |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
938 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
939 dmErrorMsg("Invalid crop mode / argument '%s'.\n", optArg); |
854
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
940 return FALSE; |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
941 } |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
942 } |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
943 break; |
ca5b4696be21
Add some code for parsing crop mode option, but the logic itself is not yet
Matti Hamalainen <ccr@tnsp.org>
parents:
853
diff
changeset
|
944 |
2022
eb6dafdd36dc
Add option -C for controlling output file compression (PNG and IFF for now) in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2021
diff
changeset
|
945 case 20: |
eb6dafdd36dc
Add option -C for controlling output file compression (PNG and IFF for now) in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2021
diff
changeset
|
946 if (!dmGetIntVal(optArg, &tmpUInt, NULL) || |
eb6dafdd36dc
Add option -C for controlling output file compression (PNG and IFF for now) in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2021
diff
changeset
|
947 tmpUInt > FCMP_BEST) |
eb6dafdd36dc
Add option -C for controlling output file compression (PNG and IFF for now) in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2021
diff
changeset
|
948 { |
eb6dafdd36dc
Add option -C for controlling output file compression (PNG and IFF for now) in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2021
diff
changeset
|
949 dmErrorMsg("Invalid compression setting '%s' [%d .. %d]\n", |
eb6dafdd36dc
Add option -C for controlling output file compression (PNG and IFF for now) in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2021
diff
changeset
|
950 optArg, FCMP_NONE, FCMP_BEST); |
eb6dafdd36dc
Add option -C for controlling output file compression (PNG and IFF for now) in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2021
diff
changeset
|
951 return FALSE; |
eb6dafdd36dc
Add option -C for controlling output file compression (PNG and IFF for now) in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2021
diff
changeset
|
952 } |
eb6dafdd36dc
Add option -C for controlling output file compression (PNG and IFF for now) in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2021
diff
changeset
|
953 optSpec.compression = tmpUInt; |
eb6dafdd36dc
Add option -C for controlling output file compression (PNG and IFF for now) in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2021
diff
changeset
|
954 break; |
eb6dafdd36dc
Add option -C for controlling output file compression (PNG and IFF for now) in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2021
diff
changeset
|
955 |
2123
47ddbedf5b56
Add initial support to 64vw and gfxconv for viewing and converting character
Matti Hamalainen <ccr@tnsp.org>
parents:
2120
diff
changeset
|
956 case 21: |
47ddbedf5b56
Add initial support to 64vw and gfxconv for viewing and converting character
Matti Hamalainen <ccr@tnsp.org>
parents:
2120
diff
changeset
|
957 optCharROMFilename = optArg; |
47ddbedf5b56
Add initial support to 64vw and gfxconv for viewing and converting character
Matti Hamalainen <ccr@tnsp.org>
parents:
2120
diff
changeset
|
958 break; |
47ddbedf5b56
Add initial support to 64vw and gfxconv for viewing and converting character
Matti Hamalainen <ccr@tnsp.org>
parents:
2120
diff
changeset
|
959 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
960 default: |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
961 dmErrorMsg("Unknown option '%s'.\n", currArg); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
962 return FALSE; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
963 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
964 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
965 return TRUE; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
966 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
967 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
968 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
969 BOOL argHandleFile(char *currArg) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
970 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
971 if (!optInFilename) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
972 optInFilename = currArg; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
973 else |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
974 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
975 dmErrorMsg("Source filename already specified, extraneous argument '%s'.\n", |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
976 currArg); |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
977 return FALSE; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
978 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
979 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
980 return TRUE; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
981 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
982 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
983 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
984 void dmPrintByte(FILE *out, int byte, int format, BOOL multicolor) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
985 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
986 int i; |
1235
5b8245e5f785
Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1167
diff
changeset
|
987 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
988 if (multicolor) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
989 { |
837 | 990 for (i = DM_ASC_NBITS; i; i -= 2) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
991 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
992 int val = (byte & (3ULL << (i - 2))) >> (i - 2); |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
993 char ch; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
994 switch (format) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
995 { |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
996 case FFMT_ASCII: |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
997 ch = dmASCIIPalette[val]; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
998 fprintf(out, "%c%c", ch, ch); |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
999 break; |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
1000 case FFMT_ANSI: |
1865
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
1001 fprintf(out, "\x1b[%sm##\x1b[0m", |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
1002 dmC64GetANSIFromC64Color(optColorMap[val])); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1003 break; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1004 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1005 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1006 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1007 else |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1008 { |
837 | 1009 for (i = DM_ASC_NBITS; i; i--) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1010 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1011 int val = (byte & (1ULL << (i - 1))) >> (i - 1); |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1012 switch (format) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1013 { |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
1014 case FFMT_ASCII: |
1865
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
1015 fputc(val ? '#' : '.', out); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1016 break; |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
1017 case FFMT_ANSI: |
1865
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
1018 fprintf(out, "\x1b[%sm#\x1b[0m", |
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
1019 dmC64GetANSIFromC64Color(optColorMap[val])); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1020 break; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1021 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1022 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1023 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1024 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1025 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1026 |
1479
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
1027 void dmDumpCharASCII(FILE *outFile, const Uint8 *buf, const size_t offs, const int fmt, const BOOL multicolor) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1028 { |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1029 for (size_t yc = 0; yc < D64_CHR_HEIGHT_UT; yc++) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1030 { |
1479
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
1031 fprintf(outFile, "%04" DM_PRIx_SIZE_T " : ", offs + yc); |
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
1032 dmPrintByte(outFile, buf[yc], fmt, multicolor); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1033 fprintf(outFile, "\n"); |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1034 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1035 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1036 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1037 |
1479
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
1038 void dmDumpSpriteASCII(FILE *outFile, const Uint8 *buf, const size_t offs, const int fmt, BOOL multicolor) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1039 { |
1479
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
1040 size_t bufOffs, xc, yc; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1041 |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1042 for (bufOffs = yc = 0; yc < D64_SPR_HEIGHT_UT; yc++) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1043 { |
1479
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
1044 fprintf(outFile, "%04" DM_PRIx_SIZE_T " ", offs + bufOffs); |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1045 for (xc = 0; xc < D64_SPR_WIDTH_UT; xc++) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1046 { |
1479
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
1047 dmPrintByte(outFile, buf[bufOffs], fmt, multicolor); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1048 fprintf(outFile, " "); |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1049 bufOffs++; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1050 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1051 fprintf(outFile, "\n"); |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1052 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1053 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1054 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1055 |
1360
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1056 int dmRemapImageColors(DMImage **pdst, const DMImage *src) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1057 { |
2143 | 1058 DMPalette *tmpPal = NULL; |
2094
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1059 int *mapping = dmMalloc(src->pal->ncolors * sizeof(int)); |
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1060 BOOL *mapped = dmMalloc(src->pal->ncolors * sizeof(BOOL)); |
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1061 BOOL *used = dmMalloc(src->pal->ncolors * sizeof(BOOL)); |
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1062 int n, index, xc, yc, ncolors, res = DMERR_OK; |
1360
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1063 DMImage *dst; |
482 | 1064 |
2143 | 1065 if ((res = dmPaletteAlloc(&tmpPal, src->pal->ncolors, -1)) != DMERR_OK) |
2094
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1066 { |
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1067 dmErrorMsg("Could not allocate memory for remap palette.\n"); |
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1068 goto error; |
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1069 } |
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1070 |
1360
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1071 if ((dst = *pdst = dmImageAlloc(src->width, src->height, src->format, src->bpp)) == NULL) |
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1072 { |
2094
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1073 res = dmError(DMERR_MALLOC, |
1360
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1074 "Could not allocate memory for remapped image.\n"); |
2094
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1075 goto error; |
1360
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1076 } |
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1077 |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1078 |
2094
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1079 if (mapping == NULL || mapped == NULL || used == NULL) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1080 { |
2094
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1081 res = dmError(DMERR_MALLOC, |
972
6d5edc6af2ad
Error handling cleanups/fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
958
diff
changeset
|
1082 "Could not allocate memory for reused palette.\n"); |
2094
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1083 goto error; |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1084 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1085 |
2094
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1086 dmMsg(1, "Remapping %d output image colors of %d colors.\n", |
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1087 optNRemapTable, src->pal->ncolors); |
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1088 |
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1089 for (index = 0; index < src->pal->ncolors; index++) |
479
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1090 { |
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1091 mapping[index] = -1; |
482 | 1092 mapped[index] = used[index] = FALSE; |
479
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1093 } |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1094 |
479
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1095 // Find used colors |
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1096 dmMsg(2, "Scanning image for used colors...\n"); |
1360
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1097 for (ncolors = yc = 0; yc < src->height; yc++) |
479
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1098 { |
1360
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1099 const Uint8 *dp = src->data + src->pitch * yc; |
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1100 for (xc = 0; xc < src->width; xc++) |
479
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1101 { |
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1102 Uint8 col = dp[xc]; |
2094
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1103 if (col < src->pal->ncolors && !used[col]) |
482 | 1104 { |
479
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1105 used[col] = TRUE; |
482 | 1106 ncolors++; |
1107 } | |
479
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1108 } |
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1109 } |
482 | 1110 dmMsg(2, "Found %d used colors, creating remap-table.\n", ncolors); |
479
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1111 |
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1112 // Match and mark mapped colors |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1113 for (index = 0; index < optNRemapTable; index++) |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1114 { |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1115 DMMapValue *map = &optRemapTable[index]; |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1116 if (map->triplet) |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1117 { |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1118 BOOL found = FALSE; |
2094
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1119 for (n = 0; n < src->pal->ncolors; n++) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1120 { |
2094
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1121 if (dmCompareColor(&(src->pal->colors[n]), &(map->color), map->alpha)) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1122 { |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1123 dmMsg(3, "RGBA match #%02x%02x%02x%02x: %d -> %d\n", |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1124 map->color.r, map->color.g, map->color.b, map->color.a, |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1125 n, |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1126 map->to); |
482 | 1127 |
1128 mapping[n] = map->to; | |
1129 mapped[map->to] = TRUE; | |
1130 found = TRUE; | |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1131 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1132 } |
1235
5b8245e5f785
Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1167
diff
changeset
|
1133 |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1134 if (!found) |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1135 { |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1136 dmMsg(3, "No RGBA match found for map index %d, #%02x%02x%02x%02x\n", |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1137 index, |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1138 map->color.r, map->color.g, map->color.b, map->color.a); |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1139 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1140 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1141 else |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1142 { |
482 | 1143 dmMsg(3, "Map index: %d -> %d\n", |
1144 map->from, map->to); | |
479
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1145 |
482 | 1146 mapping[map->from] = map->to; |
1147 mapped[map->to] = TRUE; | |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1148 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1149 } |
482 | 1150 |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1151 // Fill in the rest |
479
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1152 if (optRemapRemove) |
1807
d53bdee5ffa5
Remove slight bit of code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents:
1801
diff
changeset
|
1153 dmMsg(2, "Removing unused colors.\n"); |
d53bdee5ffa5
Remove slight bit of code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents:
1801
diff
changeset
|
1154 |
2094
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1155 for (index = 0; index < src->pal->ncolors; index++) |
1807
d53bdee5ffa5
Remove slight bit of code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents:
1801
diff
changeset
|
1156 if (mapping[index] < 0 && |
d53bdee5ffa5
Remove slight bit of code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents:
1801
diff
changeset
|
1157 (!optRemapRemove || (optRemapRemove && used[index]))) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1158 { |
2094
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1159 for (n = 0; n < src->pal->ncolors; n++) |
1807
d53bdee5ffa5
Remove slight bit of code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents:
1801
diff
changeset
|
1160 if (!mapped[n]) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1161 { |
1807
d53bdee5ffa5
Remove slight bit of code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents:
1801
diff
changeset
|
1162 mapping[index] = n; |
d53bdee5ffa5
Remove slight bit of code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents:
1801
diff
changeset
|
1163 mapped[n] = TRUE; |
d53bdee5ffa5
Remove slight bit of code duplication.
Matti Hamalainen <ccr@tnsp.org>
parents:
1801
diff
changeset
|
1164 break; |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1165 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1166 } |
482 | 1167 |
479
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1168 // Calculate final number of palette colors |
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1169 ncolors = 0; |
2094
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1170 for (index = 0; index < src->pal->ncolors; index++) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1171 { |
482 | 1172 if (mapping[index] + 1 > ncolors) |
479
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1173 ncolors = mapping[index] + 1; |
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1174 } |
1235
5b8245e5f785
Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1167
diff
changeset
|
1175 |
479
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1176 // Copy palette entries |
2094
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1177 for (index = 0; index < src->pal->ncolors; index++) |
479
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1178 { |
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1179 if (mapping[index] >= 0) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1180 { |
2143 | 1181 memcpy(&tmpPal->colors[mapping[index]], &(src->pal->colors[index]), sizeof(DMColor)); |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1182 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1183 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1184 |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1185 // Remap image |
479
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1186 dmMsg(1, "Remapping image to %d colors...\n", ncolors); |
1360
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1187 for (yc = 0; yc < src->height; yc++) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1188 { |
1360
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1189 Uint8 *sp = src->data + src->pitch * yc; |
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1190 Uint8 *dp = dst->data + dst->pitch * yc; |
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1191 for (xc = 0; xc < src->width; xc++) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1192 { |
1360
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1193 Uint8 col = sp[xc]; |
2094
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1194 if (col < src->pal->ncolors && |
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1195 mapping[col] >= 0 && |
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1196 mapping[col] < src->pal->ncolors) |
479
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1197 dp[xc] = mapping[col]; |
478
7c7a57590236
Calculate number of remapped colors.
Matti Hamalainen <ccr@tnsp.org>
parents:
477
diff
changeset
|
1198 else |
7c7a57590236
Calculate number of remapped colors.
Matti Hamalainen <ccr@tnsp.org>
parents:
477
diff
changeset
|
1199 dp[xc] = 0; |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1200 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1201 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1202 |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1203 // Set new palette, free memory |
2143 | 1204 if ((res = dmPaletteCopy(&dst->pal, tmpPal)) != DMERR_OK) |
2094
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1205 { |
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1206 res = dmError(DMERR_MALLOC, |
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1207 "Could not allocate memory for final remapped palette.\n"); |
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1208 goto error; |
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1209 } |
479
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1210 |
2094
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1211 error: |
479
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1212 dmFree(mapping); |
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1213 dmFree(mapped); |
b768bfb0b364
Improve color remapping, add option for removing unused colors from the final output palette.
Matti Hamalainen <ccr@tnsp.org>
parents:
478
diff
changeset
|
1214 dmFree(used); |
2094
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1215 return res; |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1216 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1217 |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1218 |
1550 | 1219 int dmConvertC64Bitmap(DMC64Image **pdst, const DMC64Image *src, |
1220 const DMC64ImageFormat *dstFmt, const DMC64ImageFormat *srcFmt) | |
1490
665a0b917d22
Begin restructuring how C64 bitmaps are converted.
Matti Hamalainen <ccr@tnsp.org>
parents:
1481
diff
changeset
|
1221 { |
1493
d987a4933e1c
Some dabbling work on basic C64 bitmap conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
1490
diff
changeset
|
1222 DMC64Image *dst; |
1891 | 1223 DMC64MemBlock *srcBlk = NULL, *dstBlk = NULL; |
1224 const char *blkname = NULL; | |
1493
d987a4933e1c
Some dabbling work on basic C64 bitmap conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
1490
diff
changeset
|
1225 |
1550 | 1226 if (pdst == NULL || dstFmt == NULL || src == NULL || srcFmt == NULL) |
1490
665a0b917d22
Begin restructuring how C64 bitmaps are converted.
Matti Hamalainen <ccr@tnsp.org>
parents:
1481
diff
changeset
|
1227 return DMERR_NULLPTR; |
1493
d987a4933e1c
Some dabbling work on basic C64 bitmap conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
1490
diff
changeset
|
1228 |
1823
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1229 // Allocate the destination image |
1550 | 1230 if ((dst = *pdst = dmC64ImageAlloc(dstFmt)) == NULL) |
1493
d987a4933e1c
Some dabbling work on basic C64 bitmap conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
1490
diff
changeset
|
1231 return DMERR_MALLOC; |
d987a4933e1c
Some dabbling work on basic C64 bitmap conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
1490
diff
changeset
|
1232 |
1823
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1233 // Copy rest of the structure .. |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1234 dst->d020 = src->d020; |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1235 dst->bgcolor = src->bgcolor; |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1236 dst->d022 = src->d022; |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1237 dst->d023 = src->d023; |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1238 dst->d024 = src->d024; |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1239 |
1829
5639142e0b87
Change the order and logic of how we do upconversion fixups in dmConvertC64Bitmap().
Matti Hamalainen <ccr@tnsp.org>
parents:
1823
diff
changeset
|
1240 // Try to do some simple fixups |
2124
a17b37872d8e
Simplistic conversion fixups.
Matti Hamalainen <ccr@tnsp.org>
parents:
2123
diff
changeset
|
1241 if ((dst->fmt->type & D64_FMT_MASK) == D64_FMT_MC && |
a17b37872d8e
Simplistic conversion fixups.
Matti Hamalainen <ccr@tnsp.org>
parents:
2123
diff
changeset
|
1242 (src->fmt->type & D64_FMT_MASK) == D64_FMT_HIRES) |
a17b37872d8e
Simplistic conversion fixups.
Matti Hamalainen <ccr@tnsp.org>
parents:
2123
diff
changeset
|
1243 { |
a17b37872d8e
Simplistic conversion fixups.
Matti Hamalainen <ccr@tnsp.org>
parents:
2123
diff
changeset
|
1244 dmC64MemBlockCopy(&dst->screen[0], &src->screen[0]); |
a17b37872d8e
Simplistic conversion fixups.
Matti Hamalainen <ccr@tnsp.org>
parents:
2123
diff
changeset
|
1245 } |
a17b37872d8e
Simplistic conversion fixups.
Matti Hamalainen <ccr@tnsp.org>
parents:
2123
diff
changeset
|
1246 else |
a17b37872d8e
Simplistic conversion fixups.
Matti Hamalainen <ccr@tnsp.org>
parents:
2123
diff
changeset
|
1247 if ((dst->fmt->type & D64_FMT_MASK) == D64_FMT_HIRES && |
a17b37872d8e
Simplistic conversion fixups.
Matti Hamalainen <ccr@tnsp.org>
parents:
2123
diff
changeset
|
1248 (src->fmt->type & D64_FMT_MASK) == D64_FMT_MC) |
a17b37872d8e
Simplistic conversion fixups.
Matti Hamalainen <ccr@tnsp.org>
parents:
2123
diff
changeset
|
1249 { |
a17b37872d8e
Simplistic conversion fixups.
Matti Hamalainen <ccr@tnsp.org>
parents:
2123
diff
changeset
|
1250 // XXX TODO: Handle FLI mc->hires differently? |
a17b37872d8e
Simplistic conversion fixups.
Matti Hamalainen <ccr@tnsp.org>
parents:
2123
diff
changeset
|
1251 } |
a17b37872d8e
Simplistic conversion fixups.
Matti Hamalainen <ccr@tnsp.org>
parents:
2123
diff
changeset
|
1252 |
1947
8896d5676f1b
Architectural change: remove some duplicated variables from DMC64Image
Matti Hamalainen <ccr@tnsp.org>
parents:
1933
diff
changeset
|
1253 if ((dst->fmt->type & D64_FMT_FLI) && (src->fmt->type & D64_FMT_FLI) == 0) |
1829
5639142e0b87
Change the order and logic of how we do upconversion fixups in dmConvertC64Bitmap().
Matti Hamalainen <ccr@tnsp.org>
parents:
1823
diff
changeset
|
1254 { |
5639142e0b87
Change the order and logic of how we do upconversion fixups in dmConvertC64Bitmap().
Matti Hamalainen <ccr@tnsp.org>
parents:
1823
diff
changeset
|
1255 dmMsg(1, "Upconverting multicolor to FLI.\n"); |
5639142e0b87
Change the order and logic of how we do upconversion fixups in dmConvertC64Bitmap().
Matti Hamalainen <ccr@tnsp.org>
parents:
1823
diff
changeset
|
1256 for (int i = 0; i < dst->nbanks; i++) |
5639142e0b87
Change the order and logic of how we do upconversion fixups in dmConvertC64Bitmap().
Matti Hamalainen <ccr@tnsp.org>
parents:
1823
diff
changeset
|
1257 { |
1929
b49814dd8469
Only copy memory blocks that do not already exist in destination.
Matti Hamalainen <ccr@tnsp.org>
parents:
1928
diff
changeset
|
1258 if (dst->color[i].data == NULL) |
b49814dd8469
Only copy memory blocks that do not already exist in destination.
Matti Hamalainen <ccr@tnsp.org>
parents:
1928
diff
changeset
|
1259 dmC64MemBlockCopy(&dst->color[i], &src->color[0]); |
b49814dd8469
Only copy memory blocks that do not already exist in destination.
Matti Hamalainen <ccr@tnsp.org>
parents:
1928
diff
changeset
|
1260 |
b49814dd8469
Only copy memory blocks that do not already exist in destination.
Matti Hamalainen <ccr@tnsp.org>
parents:
1928
diff
changeset
|
1261 if (dst->screen[i].data == NULL) |
b49814dd8469
Only copy memory blocks that do not already exist in destination.
Matti Hamalainen <ccr@tnsp.org>
parents:
1928
diff
changeset
|
1262 dmC64MemBlockCopy(&dst->screen[i], &src->screen[0]); |
b49814dd8469
Only copy memory blocks that do not already exist in destination.
Matti Hamalainen <ccr@tnsp.org>
parents:
1928
diff
changeset
|
1263 |
b49814dd8469
Only copy memory blocks that do not already exist in destination.
Matti Hamalainen <ccr@tnsp.org>
parents:
1928
diff
changeset
|
1264 if (dst->bitmap[i].data == NULL) |
b49814dd8469
Only copy memory blocks that do not already exist in destination.
Matti Hamalainen <ccr@tnsp.org>
parents:
1928
diff
changeset
|
1265 dmC64MemBlockCopy(&dst->bitmap[i], &src->bitmap[0]); |
1829
5639142e0b87
Change the order and logic of how we do upconversion fixups in dmConvertC64Bitmap().
Matti Hamalainen <ccr@tnsp.org>
parents:
1823
diff
changeset
|
1266 } |
5639142e0b87
Change the order and logic of how we do upconversion fixups in dmConvertC64Bitmap().
Matti Hamalainen <ccr@tnsp.org>
parents:
1823
diff
changeset
|
1267 } |
5639142e0b87
Change the order and logic of how we do upconversion fixups in dmConvertC64Bitmap().
Matti Hamalainen <ccr@tnsp.org>
parents:
1823
diff
changeset
|
1268 else |
1947
8896d5676f1b
Architectural change: remove some duplicated variables from DMC64Image
Matti Hamalainen <ccr@tnsp.org>
parents:
1933
diff
changeset
|
1269 if ((src->fmt->type & D64_FMT_FLI) && (dst->fmt->type & D64_FMT_FLI) == 0) |
1829
5639142e0b87
Change the order and logic of how we do upconversion fixups in dmConvertC64Bitmap().
Matti Hamalainen <ccr@tnsp.org>
parents:
1823
diff
changeset
|
1270 { |
5639142e0b87
Change the order and logic of how we do upconversion fixups in dmConvertC64Bitmap().
Matti Hamalainen <ccr@tnsp.org>
parents:
1823
diff
changeset
|
1271 dmMsg(1, "Downconverting FLI to multicolor.\n"); |
5639142e0b87
Change the order and logic of how we do upconversion fixups in dmConvertC64Bitmap().
Matti Hamalainen <ccr@tnsp.org>
parents:
1823
diff
changeset
|
1272 } |
5639142e0b87
Change the order and logic of how we do upconversion fixups in dmConvertC64Bitmap().
Matti Hamalainen <ccr@tnsp.org>
parents:
1823
diff
changeset
|
1273 |
1823
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1274 // Do per opcode copies |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1275 for (int i = 0; i < D64_MAX_ENCDEC_OPS; i++) |
1493
d987a4933e1c
Some dabbling work on basic C64 bitmap conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
1490
diff
changeset
|
1276 { |
1823
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1277 const DMC64EncDecOp *op = fmtGetEncDecOp(dstFmt, i); |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1278 size_t size; |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1279 |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1280 if (op->type == DO_LAST) |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1281 break; |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1282 |
1933
c5a46cb4cce5
Change DMC64ImageFormat parameter of dmC64GetSubjectSize() and
Matti Hamalainen <ccr@tnsp.org>
parents:
1931
diff
changeset
|
1283 size = dmC64GetOpSubjectSize(op, dstFmt->format); |
1823
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1284 switch (op->type) |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1285 { |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1286 case DO_COPY: |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1287 case DO_SET_MEM: |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1288 case DO_SET_MEM_HI: |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1289 case DO_SET_MEM_LO: |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1290 case DO_SET_OP: |
2108
5f8f170f8774
Change dmC64GetOpMemBlock() function API.
Matti Hamalainen <ccr@tnsp.org>
parents:
2103
diff
changeset
|
1291 srcBlk = (DMC64MemBlock *) dmC64GetOpMemBlock(src, op->subject, op->bank); |
5f8f170f8774
Change dmC64GetOpMemBlock() function API.
Matti Hamalainen <ccr@tnsp.org>
parents:
2103
diff
changeset
|
1292 dstBlk = (DMC64MemBlock *) dmC64GetOpMemBlock(dst, op->subject, op->bank); |
1852
219417325036
Split dmC64GetOpMemBlockAndName() into dmC64GetOpMemBlock() and
Matti Hamalainen <ccr@tnsp.org>
parents:
1843
diff
changeset
|
1293 blkname = dmC64GetOpSubjectName(op->subject); |
1829
5639142e0b87
Change the order and logic of how we do upconversion fixups in dmConvertC64Bitmap().
Matti Hamalainen <ccr@tnsp.org>
parents:
1823
diff
changeset
|
1294 |
5639142e0b87
Change the order and logic of how we do upconversion fixups in dmConvertC64Bitmap().
Matti Hamalainen <ccr@tnsp.org>
parents:
1823
diff
changeset
|
1295 // Skip if we did previous fixups/upconverts |
5639142e0b87
Change the order and logic of how we do upconversion fixups in dmConvertC64Bitmap().
Matti Hamalainen <ccr@tnsp.org>
parents:
1823
diff
changeset
|
1296 if (dstBlk != NULL && dstBlk->data != NULL) |
5639142e0b87
Change the order and logic of how we do upconversion fixups in dmConvertC64Bitmap().
Matti Hamalainen <ccr@tnsp.org>
parents:
1823
diff
changeset
|
1297 break; |
5639142e0b87
Change the order and logic of how we do upconversion fixups in dmConvertC64Bitmap().
Matti Hamalainen <ccr@tnsp.org>
parents:
1823
diff
changeset
|
1298 |
1823
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1299 if (srcBlk != NULL && srcBlk->data != NULL && srcBlk->size >= size) |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1300 { |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1301 // The block exists in source and is of sufficient size, so copy it |
1842
a3fc0cab1a60
Improve C64 bitmap conversion messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1836
diff
changeset
|
1302 dmMsg(3, "Copying whole block '%s' op #%d, offs=%d ($%04x), bank=%d, size=%d ($%04x)\n", |
1823
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1303 blkname, i, op->offs, op->offs, op->bank, size, size); |
1829
5639142e0b87
Change the order and logic of how we do upconversion fixups in dmConvertC64Bitmap().
Matti Hamalainen <ccr@tnsp.org>
parents:
1823
diff
changeset
|
1304 |
1823
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1305 dmC64MemBlockCopy(dstBlk, srcBlk); |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1306 } |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1307 else |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1308 switch (op->subject) |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1309 { |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1310 case DS_COLOR_RAM: |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1311 case DS_SCREEN_RAM: |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1312 case DS_BITMAP_RAM: |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1313 case DS_CHAR_DATA: |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1314 case DS_EXTRA_DATA: |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1315 if ((dmC64MemBlockAlloc(dstBlk, size)) != DMERR_OK) |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1316 { |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1317 return dmError(DMERR_MALLOC, |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1318 "Could not allocate '%s' block! " |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1319 "op #%d, offs=%d ($%04x), bank=%d, size=%d ($%04x)\n", |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1320 blkname, i, op->offs, op->offs, op->bank, size, size); |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1321 } |
1829
5639142e0b87
Change the order and logic of how we do upconversion fixups in dmConvertC64Bitmap().
Matti Hamalainen <ccr@tnsp.org>
parents:
1823
diff
changeset
|
1322 if (srcBlk == NULL || srcBlk->data == NULL) |
1823
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1323 { |
1842
a3fc0cab1a60
Improve C64 bitmap conversion messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1836
diff
changeset
|
1324 dmMsg(3, "Creating whole block '%s' op #%d, offs=%d ($%04x), bank=%d, size=%d ($%04x)\n", |
a3fc0cab1a60
Improve C64 bitmap conversion messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1836
diff
changeset
|
1325 blkname, i, op->offs, op->offs, op->bank, size, size); |
a3fc0cab1a60
Improve C64 bitmap conversion messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1836
diff
changeset
|
1326 } |
a3fc0cab1a60
Improve C64 bitmap conversion messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1836
diff
changeset
|
1327 else |
a3fc0cab1a60
Improve C64 bitmap conversion messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1836
diff
changeset
|
1328 { |
a3fc0cab1a60
Improve C64 bitmap conversion messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1836
diff
changeset
|
1329 dmMsg(3, "Creating block '%s' from partial data op #%d, offs=%d ($%04x), bank=%d, size=%d ($%04x)\n", |
1823
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1330 blkname, i, op->offs, op->offs, op->bank, size, size); |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1331 } |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1332 switch (op->type) |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1333 { |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1334 case DO_COPY: |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1335 // If some data exists, copy it. Rest is zero. |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1336 // Otherwise just set to zero. |
1829
5639142e0b87
Change the order and logic of how we do upconversion fixups in dmConvertC64Bitmap().
Matti Hamalainen <ccr@tnsp.org>
parents:
1823
diff
changeset
|
1337 if (srcBlk != NULL && srcBlk->data != NULL) |
1823
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1338 memcpy(dstBlk->data, srcBlk->data, srcBlk->size); |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1339 break; |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1340 |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1341 case DO_SET_MEM: |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1342 // Leave allocate data to zero. |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1343 break; |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1344 |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1345 case DO_SET_OP: |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1346 dmMemset(dstBlk->data, op->offs, size); |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1347 break; |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1348 |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1349 default: |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1350 return dmError(DMERR_INTERNAL, |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1351 "Unhandled op type %d in " |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1352 "op #%d, offs=%d ($%04x), bank=%d, size=%d ($%04x) @ %d ($%04x)\n", |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1353 op->type, i, op->offs, op->offs, op->bank, size, size); |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1354 } |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1355 break; |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1356 } |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1357 break; |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1358 } |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1359 } |
02f604264bc4
Improve C64 image format up/down conversion. Might actually work for some formats now.
Matti Hamalainen <ccr@tnsp.org>
parents:
1811
diff
changeset
|
1360 |
1490
665a0b917d22
Begin restructuring how C64 bitmaps are converted.
Matti Hamalainen <ccr@tnsp.org>
parents:
1481
diff
changeset
|
1361 return DMERR_OK; |
665a0b917d22
Begin restructuring how C64 bitmaps are converted.
Matti Hamalainen <ccr@tnsp.org>
parents:
1481
diff
changeset
|
1362 } |
665a0b917d22
Begin restructuring how C64 bitmaps are converted.
Matti Hamalainen <ccr@tnsp.org>
parents:
1481
diff
changeset
|
1363 |
665a0b917d22
Begin restructuring how C64 bitmaps are converted.
Matti Hamalainen <ccr@tnsp.org>
parents:
1481
diff
changeset
|
1364 |
665a0b917d22
Begin restructuring how C64 bitmaps are converted.
Matti Hamalainen <ccr@tnsp.org>
parents:
1481
diff
changeset
|
1365 int dmWriteBitmap(const char *filename, const DMC64Image *image, const DMC64ImageFormat *fmt) |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
1366 { |
550
12854cbd6fab
Initial support for bitmap -> bitmap conversion in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
547
diff
changeset
|
1367 int res = DMERR_OK; |
1481 | 1368 DMGrowBuf buf; |
550
12854cbd6fab
Initial support for bitmap -> bitmap conversion in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
547
diff
changeset
|
1369 |
1694
e568535e1a96
Backed out changeset 9611ecd2c4fb
Matti Hamalainen <ccr@tnsp.org>
parents:
1692
diff
changeset
|
1370 dmGrowBufInit(&buf); |
e568535e1a96
Backed out changeset 9611ecd2c4fb
Matti Hamalainen <ccr@tnsp.org>
parents:
1692
diff
changeset
|
1371 |
1481 | 1372 // Encode to target format |
1373 dmMsg(1, "Encoding C64 bitmap data to format '%s'\n", fmt->name); | |
1470
499835ba215c
Use dmC64EncodeBMP() in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1465
diff
changeset
|
1374 if ((res = dmC64EncodeBMP(&buf, image, fmt)) != DMERR_OK) |
1585 | 1375 { |
1376 dmErrorMsg("Error encoding bitmap data: %s\n", dmErrorStr(res)); | |
550
12854cbd6fab
Initial support for bitmap -> bitmap conversion in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
547
diff
changeset
|
1377 goto error; |
1585 | 1378 } |
550
12854cbd6fab
Initial support for bitmap -> bitmap conversion in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
547
diff
changeset
|
1379 |
1481 | 1380 // And output the file |
1696
cf0fddd4bf52
When writing a C64 bitmap output, inform the user about the output file size.
Matti Hamalainen <ccr@tnsp.org>
parents:
1694
diff
changeset
|
1381 dmMsg(1, "Writing output file '%s', %" DM_PRIu_SIZE_T " bytes.\n", |
cf0fddd4bf52
When writing a C64 bitmap output, inform the user about the output file size.
Matti Hamalainen <ccr@tnsp.org>
parents:
1694
diff
changeset
|
1382 filename, buf.len); |
cf0fddd4bf52
When writing a C64 bitmap output, inform the user about the output file size.
Matti Hamalainen <ccr@tnsp.org>
parents:
1694
diff
changeset
|
1383 |
1550 | 1384 res = dmWriteDataFile(NULL, filename, buf.data, buf.len); |
550
12854cbd6fab
Initial support for bitmap -> bitmap conversion in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
547
diff
changeset
|
1385 |
12854cbd6fab
Initial support for bitmap -> bitmap conversion in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
547
diff
changeset
|
1386 error: |
1465
88845f95e791
Change dmC64EncodeGenericBMP() to use DMGrowBuf, and make the necessary changes in gfxconv as well.
Matti Hamalainen <ccr@tnsp.org>
parents:
1464
diff
changeset
|
1387 dmGrowBufFree(&buf); |
550
12854cbd6fab
Initial support for bitmap -> bitmap conversion in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
547
diff
changeset
|
1388 return res; |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
1389 } |
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
1390 |
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
1391 |
1886
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1392 int dmWriteIFFMasterRAWHeaderFile( |
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1393 const char *hdrFilename, const char *dataFilename, |
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1394 const char *prefix, const DMImage *img, |
2065
451980580189
Refactor how paletted/indexed formats are handled in libgfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
2062
diff
changeset
|
1395 const DMImageConvSpec *spec) |
1303 | 1396 { |
1886
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1397 DMResource *fp; |
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1398 int res; |
1811
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1399 |
1886
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1400 if ((res = dmf_open_stdio(hdrFilename, "wb", &fp)) != DMERR_OK) |
1303 | 1401 { |
1886
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1402 return dmError(res, |
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1403 "RAW: Could not open file '%s' for writing.\n", |
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1404 hdrFilename); |
1811
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1405 } |
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1406 |
2065
451980580189
Refactor how paletted/indexed formats are handled in libgfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
2062
diff
changeset
|
1407 res = dmWriteIFFMasterRAWHeader(fp, dataFilename, prefix, img, spec); |
1811
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1408 |
1886
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1409 dmf_close(fp); |
1811
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1410 return res; |
1303 | 1411 } |
1412 | |
1413 | |
1811
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1414 int dmWriteImage(const char *filename, DMImage *pimage, DMImageConvSpec *spec, const DMImageFormat *fmt, BOOL info) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1415 { |
1360
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1416 int res = DMERR_OK; |
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1417 |
1811
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1418 // Check if writing is even supported |
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1419 if (fmt->write == NULL || (fmt->flags & DM_FMT_WR) == 0) |
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1420 { |
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1421 return dmError(DMERR_NOT_SUPPORTED, |
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1422 "Writing of '%s' format is not supported.\n", |
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1423 fmt->name); |
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1424 } |
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1425 |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
1426 if (info) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1427 { |
1811
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1428 dmMsg(1, "Outputting '%s' image %d x %d -> %d x %d [%d x %d]\n", |
1893
334501b6cce5
Use format name instead of file extension in a message.
Matti Hamalainen <ccr@tnsp.org>
parents:
1891
diff
changeset
|
1429 fmt->name, |
1360
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1430 pimage->width, pimage->height, |
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1431 pimage->width * spec->scaleX, pimage->height * spec->scaleY, |
902
c6c480e8e1c8
Add separate X and Y scaling to gfxconv and libgfx outputters.
Matti Hamalainen <ccr@tnsp.org>
parents:
897
diff
changeset
|
1432 spec->scaleX, spec->scaleY); |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
1433 } |
435 | 1434 |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1435 // Perform color remapping |
1360
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1436 DMImage *image = pimage; |
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1437 BOOL allocated = FALSE; |
2094
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1438 if (optRemapColors && pimage->format == DM_COLFMT_PALETTE) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1439 { |
1360
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1440 if ((res = dmRemapImageColors(&image, pimage)) != DMERR_OK) |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1441 return res; |
1360
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1442 |
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1443 allocated = TRUE; |
473
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1444 } |
73bfe73553eb
Implement palette remapping option for image outputs.
Matti Hamalainen <ccr@tnsp.org>
parents:
471
diff
changeset
|
1445 |
2065
451980580189
Refactor how paletted/indexed formats are handled in libgfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
2062
diff
changeset
|
1446 // Determine number of planes, if paletted |
2142
894781b7310a
Possibly fix RAW output when clipping nplanes/bpp.
Matti Hamalainen <ccr@tnsp.org>
parents:
2137
diff
changeset
|
1447 if (spec->nplanes == 0) |
894781b7310a
Possibly fix RAW output when clipping nplanes/bpp.
Matti Hamalainen <ccr@tnsp.org>
parents:
2137
diff
changeset
|
1448 { |
894781b7310a
Possibly fix RAW output when clipping nplanes/bpp.
Matti Hamalainen <ccr@tnsp.org>
parents:
2137
diff
changeset
|
1449 if (image->format == DM_COLFMT_PALETTE && |
894781b7310a
Possibly fix RAW output when clipping nplanes/bpp.
Matti Hamalainen <ccr@tnsp.org>
parents:
2137
diff
changeset
|
1450 image->pal != NULL) |
894781b7310a
Possibly fix RAW output when clipping nplanes/bpp.
Matti Hamalainen <ccr@tnsp.org>
parents:
2137
diff
changeset
|
1451 spec->nplanes = dmGetNPlanesFromNColors(image->pal->ncolors); |
894781b7310a
Possibly fix RAW output when clipping nplanes/bpp.
Matti Hamalainen <ccr@tnsp.org>
parents:
2137
diff
changeset
|
1452 else |
894781b7310a
Possibly fix RAW output when clipping nplanes/bpp.
Matti Hamalainen <ccr@tnsp.org>
parents:
2137
diff
changeset
|
1453 if (image->format == DM_COLFMT_GRAYSCALE) |
894781b7310a
Possibly fix RAW output when clipping nplanes/bpp.
Matti Hamalainen <ccr@tnsp.org>
parents:
2137
diff
changeset
|
1454 spec->nplanes = image->bpp; |
894781b7310a
Possibly fix RAW output when clipping nplanes/bpp.
Matti Hamalainen <ccr@tnsp.org>
parents:
2137
diff
changeset
|
1455 } |
2065
451980580189
Refactor how paletted/indexed formats are handled in libgfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
2062
diff
changeset
|
1456 |
2100
81fb21dd3265
Add dmGetNPlanesFromNColors() and use it.
Matti Hamalainen <ccr@tnsp.org>
parents:
2099
diff
changeset
|
1457 if (spec->nplanes <= 0) |
2099
dac89484f143
Fix nplanes and bpp in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2097
diff
changeset
|
1458 spec->nplanes = 4; |
dac89484f143
Fix nplanes and bpp in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2097
diff
changeset
|
1459 |
2065
451980580189
Refactor how paletted/indexed formats are handled in libgfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
2062
diff
changeset
|
1460 spec->fmtid = fmt->fmtid; |
451980580189
Refactor how paletted/indexed formats are handled in libgfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
2062
diff
changeset
|
1461 |
1811
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1462 // Do some format-specific adjustments and other things |
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1463 switch (fmt->fmtid) |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
1464 { |
1543
416d7b3ba3b2
Rename libgfx IMGFMT_* constants to DM_IMGFMT_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
1537
diff
changeset
|
1465 case DM_IMGFMT_PNG: |
2065
451980580189
Refactor how paletted/indexed formats are handled in libgfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
2062
diff
changeset
|
1466 spec->format = optUsePalette ? DM_COLFMT_PALETTE : DM_COLFMT_RGBA; |
1360
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1467 break; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1468 |
1543
416d7b3ba3b2
Rename libgfx IMGFMT_* constants to DM_IMGFMT_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
1537
diff
changeset
|
1469 case DM_IMGFMT_PPM: |
1801 | 1470 spec->format = DM_COLFMT_RGB; |
1360
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1471 break; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1472 |
1543
416d7b3ba3b2
Rename libgfx IMGFMT_* constants to DM_IMGFMT_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
1537
diff
changeset
|
1473 case DM_IMGFMT_RAW: |
416d7b3ba3b2
Rename libgfx IMGFMT_* constants to DM_IMGFMT_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
1537
diff
changeset
|
1474 case DM_IMGFMT_ARAW: |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1475 { |
1886
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1476 char *prefix = NULL, *hdrFilename = NULL; |
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1477 if ((hdrFilename = dm_strdup_fext(filename, "%s.inc")) == NULL || |
1811
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1478 (prefix = dm_strdup_fext(filename, "img_%s")) == NULL) |
1360
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1479 { |
1811
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1480 res = dmError(DMERR_MALLOC, |
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1481 "Could not allocate memory for filename strings? :O\n"); |
1360
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1482 goto err; |
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1483 } |
820 | 1484 |
1811
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1485 // Replace any non-alphanumerics in palette ID |
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1486 for (int i = 0; prefix[i]; i++) |
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1487 prefix[i] = isalnum(prefix[i]) ? tolower(prefix[i]) : '_'; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1488 |
1291 | 1489 if (info) |
1490 { | |
1811
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1491 dmMsg(2, "%d bitplanes, %s planes output.\n", |
1291 | 1492 spec->nplanes, |
1493 spec->planar ? "planar/interleaved" : "non-interleaved"); | |
1811
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1494 dmMsg(2, "%s datafile '%s', ID prefix '%s'.\n", |
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1495 fmt->fmtid == DM_IMGFMT_ARAW ? "ARAW" : "RAW", |
1886
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1496 hdrFilename, prefix); |
1291 | 1497 } |
1891 | 1498 |
1886
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1499 res = dmWriteIFFMasterRAWHeaderFile( |
2065
451980580189
Refactor how paletted/indexed formats are handled in libgfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
2062
diff
changeset
|
1500 hdrFilename, filename, prefix, image, spec); |
1811
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1501 |
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1502 dmFree(prefix); |
1886
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1503 dmFree(hdrFilename); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1504 } |
607
360b1ad83ed9
Rename things; Fix build by combining the conflicting rules.
Matti Hamalainen <ccr@tnsp.org>
parents:
566
diff
changeset
|
1505 break; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1506 |
2065
451980580189
Refactor how paletted/indexed formats are handled in libgfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
2062
diff
changeset
|
1507 default: |
451980580189
Refactor how paletted/indexed formats are handled in libgfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
2062
diff
changeset
|
1508 spec->format = optUsePalette ? DM_COLFMT_PALETTE : DM_COLFMT_RGB; |
1896
f80b2dc77c30
Work begins on IFF ILBM/PBM image writer. It is pretty broken, some things
Matti Hamalainen <ccr@tnsp.org>
parents:
1893
diff
changeset
|
1509 break; |
1811
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1510 } |
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1511 |
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1512 // If no error has occured thus far, write the image |
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1513 if (res == DMERR_OK) |
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1514 { |
1886
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1515 DMResource *fp; |
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1516 |
1811
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1517 if (info) |
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1518 { |
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1519 char *str; |
2142
894781b7310a
Possibly fix RAW output when clipping nplanes/bpp.
Matti Hamalainen <ccr@tnsp.org>
parents:
2137
diff
changeset
|
1520 switch (image->format) |
1811
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1521 { |
2142
894781b7310a
Possibly fix RAW output when clipping nplanes/bpp.
Matti Hamalainen <ccr@tnsp.org>
parents:
2137
diff
changeset
|
1522 case DM_COLFMT_PALETTE : str = "indexed/paletted"; break; |
894781b7310a
Possibly fix RAW output when clipping nplanes/bpp.
Matti Hamalainen <ccr@tnsp.org>
parents:
2137
diff
changeset
|
1523 case DM_COLFMT_RGB : str = "24bit RGB"; break; |
894781b7310a
Possibly fix RAW output when clipping nplanes/bpp.
Matti Hamalainen <ccr@tnsp.org>
parents:
2137
diff
changeset
|
1524 case DM_COLFMT_RGBA : str = "32bit RGBA"; break; |
894781b7310a
Possibly fix RAW output when clipping nplanes/bpp.
Matti Hamalainen <ccr@tnsp.org>
parents:
2137
diff
changeset
|
1525 case DM_COLFMT_GRAYSCALE : str = "grayscale"; break; |
894781b7310a
Possibly fix RAW output when clipping nplanes/bpp.
Matti Hamalainen <ccr@tnsp.org>
parents:
2137
diff
changeset
|
1526 default : str = "???"; break; |
1811
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1527 } |
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1528 dmMsg(2, "Using %s output.\n", str); |
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1529 } |
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1530 |
1886
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1531 if ((res = dmf_open_stdio(filename, "wb", &fp)) != DMERR_OK) |
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1532 { |
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1533 dmErrorMsg("Could not open file '%s' for writing.\n", |
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1534 filename); |
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1535 goto err; |
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1536 } |
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1537 |
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1538 res = fmt->write(fp, image, spec); |
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1539 |
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
1540 dmf_close(fp); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1541 } |
1360
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1542 |
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1543 err: |
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1544 if (allocated) |
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1545 dmImageFree(image); |
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1546 |
fcaf04cb0830
Make image palette remapping use a destination image instead of doing remapping on the source image.
Matti Hamalainen <ccr@tnsp.org>
parents:
1340
diff
changeset
|
1547 return res; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1548 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1549 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1550 |
547
ca5ad51c6479
Make dmConvertByte() static.
Matti Hamalainen <ccr@tnsp.org>
parents:
546
diff
changeset
|
1551 static Uint8 dmConvertByte(const Uint8 *sp, const BOOL multicolor) |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1552 { |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1553 Uint8 byte = 0; |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1554 int xc; |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1555 |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1556 if (multicolor) |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1557 { |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1558 for (xc = 0; xc < 8 / 2; xc++) |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1559 { |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1560 Uint8 pixel = sp[xc * 2] & 3; |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1561 byte |= pixel << (6 - (xc * 2)); |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1562 } |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1563 } |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1564 else |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1565 { |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1566 for (xc = 0; xc < 8; xc++) |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1567 { |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1568 Uint8 pixel = sp[xc] == 0 ? 0 : 1; |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1569 byte |= pixel << (7 - xc); |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1570 } |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1571 } |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1572 |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1573 return byte; |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1574 } |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1575 |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1576 |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1577 BOOL dmConvertImage2Char(Uint8 *buf, const DMImage *image, |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1578 const int xoffs, const int yoffs, const BOOL multicolor) |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1579 { |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1580 int yc; |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1581 |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1582 if (xoffs < 0 || yoffs < 0 || |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1583 xoffs + D64_CHR_WIDTH_PX > image->width || |
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1584 yoffs + D64_CHR_HEIGHT_PX > image->height) |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1585 return FALSE; |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1586 |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1587 for (yc = 0; yc < D64_CHR_HEIGHT_UT; yc++) |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1588 { |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1589 const Uint8 *sp = image->data + ((yc + yoffs) * image->pitch) + xoffs; |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1590 buf[yc] = dmConvertByte(sp, multicolor); |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1591 } |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1592 |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1593 return TRUE; |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1594 } |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1595 |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1596 |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1597 BOOL dmConvertImage2Sprite(Uint8 *buf, const DMImage *image, |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1598 const int xoffs, const int yoffs, const BOOL multicolor) |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1599 { |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1600 int yc, xc; |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1601 |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1602 if (xoffs < 0 || yoffs < 0 || |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1603 xoffs + D64_SPR_WIDTH_PX > image->width || |
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1604 yoffs + D64_SPR_HEIGHT_PX > image->height) |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1605 return FALSE; |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1606 |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1607 for (yc = 0; yc < D64_SPR_HEIGHT_UT; yc++) |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1608 { |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1609 for (xc = 0; xc < D64_SPR_WIDTH_PX / D64_SPR_WIDTH_UT; xc++) |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1610 { |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1611 const Uint8 *sp = image->data + ((yc + yoffs) * image->pitch) + (xc * 8) + xoffs; |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1612 buf[(yc * D64_SPR_WIDTH_UT) + xc] = dmConvertByte(sp, multicolor); |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1613 } |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1614 } |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1615 |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1616 return TRUE; |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1617 } |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1618 |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1619 |
1928 | 1620 int dmWriteSpritesAndChars(const char *filename, DMImage *image, int outFormat, const BOOL multicolor) |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1621 { |
909
be5d276f8a6c
Some work on error handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
907
diff
changeset
|
1622 int ret = DMERR_OK; |
829
97700378ecd8
Oops, accidentally committed unfinished code :S
Matti Hamalainen <ccr@tnsp.org>
parents:
828
diff
changeset
|
1623 int outBlockW, outBlockH, bx, by; |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1624 FILE *outFile = NULL; |
829
97700378ecd8
Oops, accidentally committed unfinished code :S
Matti Hamalainen <ccr@tnsp.org>
parents:
828
diff
changeset
|
1625 Uint8 *buf = NULL; |
907 | 1626 size_t outBufSize; |
829
97700378ecd8
Oops, accidentally committed unfinished code :S
Matti Hamalainen <ccr@tnsp.org>
parents:
828
diff
changeset
|
1627 char *outType; |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1628 |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1629 switch (outFormat) |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1630 { |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1631 case FFMT_CHAR: |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1632 outBufSize = D64_CHR_SIZE; |
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1633 outBlockW = image->width / D64_CHR_WIDTH_PX; |
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1634 outBlockH = image->height / D64_CHR_HEIGHT_PX; |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1635 outType = "char"; |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1636 break; |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1637 |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1638 case FFMT_SPRITE: |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1639 outBufSize = D64_SPR_SIZE; |
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1640 outBlockW = image->width / D64_SPR_WIDTH_PX; |
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1641 outBlockH = image->height / D64_SPR_HEIGHT_PX; |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1642 outType = "sprite"; |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1643 break; |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1644 |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1645 default: |
972
6d5edc6af2ad
Error handling cleanups/fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
958
diff
changeset
|
1646 ret = dmError(DMERR_INVALID_ARGS, |
6d5edc6af2ad
Error handling cleanups/fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
958
diff
changeset
|
1647 "Invalid output format %d, internal error.\n", outFormat); |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1648 goto error; |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1649 } |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1650 |
909
be5d276f8a6c
Some work on error handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
907
diff
changeset
|
1651 if (outBlockW < 1 || outBlockH < 1) |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1652 { |
972
6d5edc6af2ad
Error handling cleanups/fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
958
diff
changeset
|
1653 ret = dmError(DMERR_INVALID_ARGS, |
6d5edc6af2ad
Error handling cleanups/fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
958
diff
changeset
|
1654 "Source image dimensions too small for conversion, block dimensions %d x %d.\n", |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1655 outBlockW, outBlockH); |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1656 goto error; |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1657 } |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1658 |
829
97700378ecd8
Oops, accidentally committed unfinished code :S
Matti Hamalainen <ccr@tnsp.org>
parents:
828
diff
changeset
|
1659 if ((outFile = fopen(filename, "wb")) == NULL) |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1660 { |
909
be5d276f8a6c
Some work on error handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
907
diff
changeset
|
1661 ret = dmGetErrno(); |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
1662 dmErrorMsg("Could not open '%s' for writing, %d: %s.\n", |
909
be5d276f8a6c
Some work on error handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
907
diff
changeset
|
1663 filename, ret, dmErrorStr(ret)); |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1664 goto error; |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1665 } |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1666 |
907 | 1667 if ((buf = dmMalloc(outBufSize)) == NULL) |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1668 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
1669 dmErrorMsg("Could not allocate %d bytes for conversion buffer.\n", |
907 | 1670 outBufSize); |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1671 goto error; |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1672 } |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1673 |
829
97700378ecd8
Oops, accidentally committed unfinished code :S
Matti Hamalainen <ccr@tnsp.org>
parents:
828
diff
changeset
|
1674 dmMsg(1, "Writing %d x %d = %d blocks of %s data...\n", |
97700378ecd8
Oops, accidentally committed unfinished code :S
Matti Hamalainen <ccr@tnsp.org>
parents:
828
diff
changeset
|
1675 outBlockW, outBlockH, outBlockW * outBlockH, outType); |
97700378ecd8
Oops, accidentally committed unfinished code :S
Matti Hamalainen <ccr@tnsp.org>
parents:
828
diff
changeset
|
1676 |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1677 for (by = 0; by < outBlockH; by++) |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1678 for (bx = 0; bx < outBlockW; bx++) |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1679 { |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1680 switch (outFormat) |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1681 { |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1682 case FFMT_CHAR: |
829
97700378ecd8
Oops, accidentally committed unfinished code :S
Matti Hamalainen <ccr@tnsp.org>
parents:
828
diff
changeset
|
1683 if (!dmConvertImage2Char(buf, image, |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1684 bx * D64_CHR_WIDTH_PX, by * D64_CHR_HEIGHT_PX, |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1685 multicolor)) |
909
be5d276f8a6c
Some work on error handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
907
diff
changeset
|
1686 { |
be5d276f8a6c
Some work on error handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
907
diff
changeset
|
1687 ret = DMERR_DATA_ERROR; |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1688 goto error; |
909
be5d276f8a6c
Some work on error handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
907
diff
changeset
|
1689 } |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1690 break; |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1691 |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1692 case FFMT_SPRITE: |
829
97700378ecd8
Oops, accidentally committed unfinished code :S
Matti Hamalainen <ccr@tnsp.org>
parents:
828
diff
changeset
|
1693 if (!dmConvertImage2Sprite(buf, image, |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1694 bx * D64_SPR_WIDTH_PX, by * D64_SPR_HEIGHT_PX, |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1695 multicolor)) |
909
be5d276f8a6c
Some work on error handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
907
diff
changeset
|
1696 { |
be5d276f8a6c
Some work on error handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
907
diff
changeset
|
1697 ret = DMERR_DATA_ERROR; |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1698 goto error; |
909
be5d276f8a6c
Some work on error handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
907
diff
changeset
|
1699 } |
910 | 1700 break; |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1701 } |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1702 |
907 | 1703 if (!dm_fwrite_str(outFile, buf, outBufSize)) |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1704 { |
909
be5d276f8a6c
Some work on error handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
907
diff
changeset
|
1705 ret = dmGetErrno(); |
972
6d5edc6af2ad
Error handling cleanups/fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
958
diff
changeset
|
1706 dmError(ret, "Error writing data block %d,%d to '%s', %d: %s\n", |
909
be5d276f8a6c
Some work on error handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
907
diff
changeset
|
1707 bx, by, filename, ret, dmErrorStr(ret)); |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1708 goto error; |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1709 } |
829
97700378ecd8
Oops, accidentally committed unfinished code :S
Matti Hamalainen <ccr@tnsp.org>
parents:
828
diff
changeset
|
1710 } |
97700378ecd8
Oops, accidentally committed unfinished code :S
Matti Hamalainen <ccr@tnsp.org>
parents:
828
diff
changeset
|
1711 |
97700378ecd8
Oops, accidentally committed unfinished code :S
Matti Hamalainen <ccr@tnsp.org>
parents:
828
diff
changeset
|
1712 fclose(outFile); |
97700378ecd8
Oops, accidentally committed unfinished code :S
Matti Hamalainen <ccr@tnsp.org>
parents:
828
diff
changeset
|
1713 dmFree(buf); |
97700378ecd8
Oops, accidentally committed unfinished code :S
Matti Hamalainen <ccr@tnsp.org>
parents:
828
diff
changeset
|
1714 return 0; |
828 | 1715 |
1716 error: | |
1717 if (outFile != NULL) | |
1718 fclose(outFile); | |
829
97700378ecd8
Oops, accidentally committed unfinished code :S
Matti Hamalainen <ccr@tnsp.org>
parents:
828
diff
changeset
|
1719 dmFree(buf); |
910 | 1720 return ret; |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1721 } |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
1722 |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
1723 |
1479
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
1724 int dmDumpSpritesAndChars(const Uint8 *dataBuf, const size_t dataSize, const size_t realOffs) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1725 { |
1524
532c3ceaec1a
Fix uninitilized variable.
Matti Hamalainen <ccr@tnsp.org>
parents:
1522
diff
changeset
|
1726 int ret = DMERR_OK, itemCount, outWidth, outWidthPX, outHeight; |
1479
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
1727 size_t offs, outSize; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1728 |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1729 switch (optInType) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1730 { |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
1731 case FFMT_CHAR: |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1732 outSize = D64_CHR_SIZE; |
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1733 outWidth = D64_CHR_WIDTH_UT; |
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1734 outWidthPX = D64_CHR_WIDTH_PX; |
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1735 outHeight = D64_CHR_HEIGHT_UT; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1736 break; |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
1737 |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
1738 case FFMT_SPRITE: |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1739 outSize = D64_SPR_SIZE; |
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1740 outWidth = D64_SPR_WIDTH_UT; |
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1741 outWidthPX = D64_SPR_WIDTH_PX; |
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1742 outHeight = D64_SPR_HEIGHT_UT; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1743 break; |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
1744 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1745 default: |
972
6d5edc6af2ad
Error handling cleanups/fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
958
diff
changeset
|
1746 return dmError(DMERR_INTERNAL, |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1747 "Invalid input format %d, internal error.\n", optInType); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1748 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1749 |
1479
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
1750 offs = 0; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1751 itemCount = 0; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1752 |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1753 if (optOutType == FFMT_ANSI || optOutType == FFMT_ASCII) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1754 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1755 BOOL error = FALSE; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1756 FILE *outFile; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1757 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1758 if (optOutFilename == NULL) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1759 outFile = stdout; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1760 else |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1761 if ((outFile = fopen(optOutFilename, "w")) == NULL) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1762 { |
972
6d5edc6af2ad
Error handling cleanups/fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
958
diff
changeset
|
1763 ret = dmGetErrno(); |
1525
9602f7ea1e7e
Improve some error messages in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1524
diff
changeset
|
1764 dmError(ret, "Error opening output file '%s': %s\n", |
9602f7ea1e7e
Improve some error messages in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1524
diff
changeset
|
1765 optOutFilename, dmErrorStr(ret)); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1766 goto error; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1767 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1768 |
1479
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
1769 while (offs + outSize < dataSize && !error && (optItemCount < 0 || itemCount < optItemCount)) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1770 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1771 fprintf(outFile, "---- : -------------- #%d\n", itemCount); |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1772 |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1773 switch (optInType) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1774 { |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
1775 case FFMT_CHAR: |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1776 dmDumpCharASCII(outFile, dataBuf + offs, realOffs + offs, optOutType, optInMulticolor); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1777 break; |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
1778 case FFMT_SPRITE: |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1779 dmDumpSpriteASCII(outFile, dataBuf + offs, realOffs + offs, optOutType, optInMulticolor); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1780 break; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1781 } |
1479
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
1782 offs += outSize; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1783 itemCount++; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1784 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1785 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1786 fclose(outFile); |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1787 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1788 else |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1789 if (optOutType == FFMT_IMAGE) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1790 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1791 DMImage *outImage = NULL; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1792 char *outFilename = NULL; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1793 int outX = 0, outY = 0, err; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1794 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1795 if (optSequential) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1796 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1797 if (optOutFilename == NULL) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1798 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
1799 dmErrorMsg("Sequential image output requires filename template.\n"); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1800 goto error; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1801 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1802 |
1801 | 1803 outImage = dmImageAlloc(outWidthPX, outHeight, DM_COLFMT_PALETTE, -1); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1804 dmMsg(1, "Outputting sequence of %d images @ %d x %d -> %d x %d.\n", |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1805 optItemCount, |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1806 outImage->width, outImage->height, |
2058
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
1807 outImage->width * optSpec.scaleX, |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
1808 outImage->height * optSpec.scaleY); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1809 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1810 else |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1811 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1812 int outIWidth, outIHeight; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1813 if (optItemCount <= 0) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1814 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
1815 dmErrorMsg("Single-image output requires count to be set (-n).\n"); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1816 goto error; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1817 } |
1235
5b8245e5f785
Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1167
diff
changeset
|
1818 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1819 outIWidth = optPlanedWidth; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1820 outIHeight = (optItemCount / optPlanedWidth); |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1821 if (optItemCount % optPlanedWidth) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1822 outIHeight++; |
1235
5b8245e5f785
Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1167
diff
changeset
|
1823 |
1801 | 1824 outImage = dmImageAlloc(outWidthPX * outIWidth, outIHeight * outHeight, DM_COLFMT_PALETTE, -1); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1825 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1826 |
2094
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1827 if ((err = dmSetDefaultC64Palette(outImage)) != DMERR_OK) |
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1828 { |
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1829 dmErrorMsg("Could not allocate C64 palette for output image: %d\n", err); |
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1830 goto error; |
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1831 } |
1235
5b8245e5f785
Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1167
diff
changeset
|
1832 |
1479
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
1833 while (offs + outSize < dataSize && (optItemCount < 0 || itemCount < optItemCount)) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1834 { |
827 | 1835 if ((err = dmC64ConvertCSDataToImage(outImage, outX * outWidthPX, outY * outHeight, |
1865
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
1836 dataBuf + offs, outWidth, outHeight, optInMulticolor, optColorMap)) != DMERR_OK) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1837 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
1838 dmErrorMsg("Internal error in conversion of raw data to bitmap: %d.\n", err); |
2094
4276b8c0fef0
Revamp how the DMImage palette system and color formats work, as preparation
Matti Hamalainen <ccr@tnsp.org>
parents:
2079
diff
changeset
|
1839 goto error; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1840 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1841 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1842 if (optSequential) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1843 { |
1479
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
1844 outFilename = dm_strdup_printf("%s%04d.%s", |
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
1845 optOutFilename, |
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
1846 itemCount, |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1847 convFormatList[optOutType].fext); |
1479
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
1848 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1849 if (outFilename == NULL) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1850 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
1851 dmErrorMsg("Could not allocate memory for filename template?\n"); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1852 goto error; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1853 } |
1235
5b8245e5f785
Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1167
diff
changeset
|
1854 |
1811
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1855 ret = dmWriteImage(outFilename, outImage, &optSpec, |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1856 &dmImageFormatList[optOutFormat], TRUE); |
972
6d5edc6af2ad
Error handling cleanups/fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
958
diff
changeset
|
1857 if (ret != DMERR_OK) |
799 | 1858 { |
1525
9602f7ea1e7e
Improve some error messages in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1524
diff
changeset
|
1859 dmErrorMsg("Error writing output image '%s': %s.\n", |
9602f7ea1e7e
Improve some error messages in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1524
diff
changeset
|
1860 outFilename, dmErrorStr(ret)); |
799 | 1861 } |
1862 | |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1863 dmFree(outFilename); |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1864 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1865 else |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1866 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1867 if (++outX >= optPlanedWidth) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1868 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1869 outX = 0; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1870 outY++; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1871 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1872 } |
1235
5b8245e5f785
Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1167
diff
changeset
|
1873 |
1479
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
1874 offs += outSize; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1875 itemCount++; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1876 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1877 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1878 if (!optSequential) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1879 { |
1811
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
1880 ret = dmWriteImage(optOutFilename, outImage, &optSpec, |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1881 &dmImageFormatList[optOutFormat], TRUE); |
972
6d5edc6af2ad
Error handling cleanups/fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
958
diff
changeset
|
1882 if (ret != DMERR_OK) |
799 | 1883 { |
1525
9602f7ea1e7e
Improve some error messages in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1524
diff
changeset
|
1884 dmError(ret, "Error writing output image '%s': %s.\n", |
9602f7ea1e7e
Improve some error messages in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1524
diff
changeset
|
1885 optOutFilename, dmErrorStr(ret)); |
799 | 1886 } |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1887 } |
1235
5b8245e5f785
Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1167
diff
changeset
|
1888 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1889 dmImageFree(outImage); |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1890 } |
607
360b1ad83ed9
Rename things; Fix build by combining the conflicting rules.
Matti Hamalainen <ccr@tnsp.org>
parents:
566
diff
changeset
|
1891 else |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1892 if (optOutType == FFMT_BITMAP) |
607
360b1ad83ed9
Rename things; Fix build by combining the conflicting rules.
Matti Hamalainen <ccr@tnsp.org>
parents:
566
diff
changeset
|
1893 { |
360b1ad83ed9
Rename things; Fix build by combining the conflicting rules.
Matti Hamalainen <ccr@tnsp.org>
parents:
566
diff
changeset
|
1894 if (optSequential) |
360b1ad83ed9
Rename things; Fix build by combining the conflicting rules.
Matti Hamalainen <ccr@tnsp.org>
parents:
566
diff
changeset
|
1895 { |
972
6d5edc6af2ad
Error handling cleanups/fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
958
diff
changeset
|
1896 ret = dmError(DMERR_INVALID_ARGS, |
6d5edc6af2ad
Error handling cleanups/fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
958
diff
changeset
|
1897 "Sequential output not supported for spr/char -> bitmap conversion.\n"); |
607
360b1ad83ed9
Rename things; Fix build by combining the conflicting rules.
Matti Hamalainen <ccr@tnsp.org>
parents:
566
diff
changeset
|
1898 goto error; |
360b1ad83ed9
Rename things; Fix build by combining the conflicting rules.
Matti Hamalainen <ccr@tnsp.org>
parents:
566
diff
changeset
|
1899 } |
360b1ad83ed9
Rename things; Fix build by combining the conflicting rules.
Matti Hamalainen <ccr@tnsp.org>
parents:
566
diff
changeset
|
1900 } |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1901 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1902 error: |
972
6d5edc6af2ad
Error handling cleanups/fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
958
diff
changeset
|
1903 return ret; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1904 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1905 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1906 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1907 int main(int argc, char *argv[]) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1908 { |
933 | 1909 FILE *inFile = NULL; |
1931
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
1910 DMC64ImageConvSpec imageSpecC64; |
1440 | 1911 const DMC64ImageFormat *inC64Fmt = NULL; |
1869
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
1912 DMConvFormat inFormat, outFormat; |
1490
665a0b917d22
Begin restructuring how C64 bitmaps are converted.
Matti Hamalainen <ccr@tnsp.org>
parents:
1481
diff
changeset
|
1913 DMC64Image *inC64Image = NULL, *outC64Image = NULL; |
2052
aa8df4f1b785
Fix minor memory leaks in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2030
diff
changeset
|
1914 DMImage *inImage = NULL, *outImage = NULL; |
1479
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
1915 Uint8 *dataBuf = NULL, *dataBufOrig = NULL; |
2005
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
1916 size_t dataSize, dataSizeOrig, dataRealOffs; |
2097 | 1917 int i, n, res; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1918 |
1865
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
1919 // Default color mapping |
2125
56d4dc81774b
Rename various C64_* constants to D64_*.
Matti Hamalainen <ccr@tnsp.org>
parents:
2124
diff
changeset
|
1920 for (i = 0; i < D64_NCOLORS; i++) |
1865
3e830bcb001a
Improve color map and ANSI output support.
Matti Hamalainen <ccr@tnsp.org>
parents:
1864
diff
changeset
|
1921 optColorMap[i] = i; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1922 |
1931
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
1923 // Initialize c64 image conversion spec |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
1924 memset(&imageSpecC64, 0, sizeof(imageSpecC64)); |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
1925 |
1616
36d073c45327
Refactor the format handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
1609
diff
changeset
|
1926 // Initialize list of additional conversion formats |
1775
4e4d54135baf
Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents:
1759
diff
changeset
|
1927 dmC64InitializeFormats(); |
1616
36d073c45327
Refactor the format handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
1609
diff
changeset
|
1928 nconvFormatList = ndmImageFormatList + nbaseFormatList; |
36d073c45327
Refactor the format handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
1609
diff
changeset
|
1929 convFormatList = dmCalloc(nconvFormatList, sizeof(DMConvFormat)); |
36d073c45327
Refactor the format handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
1609
diff
changeset
|
1930 |
36d073c45327
Refactor the format handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
1609
diff
changeset
|
1931 for (n = i = 0; i < ndmImageFormatList; i++) |
36d073c45327
Refactor the format handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
1609
diff
changeset
|
1932 { |
36d073c45327
Refactor the format handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
1609
diff
changeset
|
1933 const DMImageFormat *sfmt = &dmImageFormatList[i]; |
36d073c45327
Refactor the format handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
1609
diff
changeset
|
1934 DMConvFormat *dfmt = &convFormatList[n++]; |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1935 dfmt->name = sfmt->name; |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1936 dfmt->fext = sfmt->fext; |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1937 dfmt->flags = sfmt->flags; |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1938 dfmt->type = FFMT_IMAGE; |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1939 dfmt->format = sfmt->fmtid; |
1616
36d073c45327
Refactor the format handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
1609
diff
changeset
|
1940 } |
36d073c45327
Refactor the format handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
1609
diff
changeset
|
1941 |
36d073c45327
Refactor the format handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
1609
diff
changeset
|
1942 for (i = 0; i < nbaseFormatList; i++) |
36d073c45327
Refactor the format handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
1609
diff
changeset
|
1943 memcpy(&convFormatList[n++], &baseFormatList[i], sizeof(DMConvFormat)); |
36d073c45327
Refactor the format handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
1609
diff
changeset
|
1944 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1945 // Initialize and parse commandline |
1910 | 1946 dmInitProg("gfxconv", "Simple graphics converter", "0.94", NULL, NULL); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1947 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1948 if (!dmArgsProcess(argc, argv, optList, optListN, |
860
daebbf28953d
The argument handling API in dmargs* was synced with th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
854
diff
changeset
|
1949 argHandleOpt, argHandleFile, OPTH_BAILOUT)) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1950 exit(1); |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1951 |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1952 // Determine input format, if not specified |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1953 if (optInType == FFMT_AUTO && optInFilename != NULL) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1954 { |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1955 char *dext = strrchr(optInFilename, '.'); |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1956 if (dext) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1957 { |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1958 if (dmGetFormatByExt(dext + 1, &optInType, &optInFormat) || |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1959 dmGetC64FormatByExt(dext + 1, &optInType, &optInFormat)) |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1960 { |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1961 dmMsg(3, "Guessed input type as %s\n", |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1962 formatTypeList[optInType]); |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1963 } |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1964 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1965 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1966 |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1967 if (optInFilename == NULL) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1968 { |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1969 if (optInType == FFMT_AUTO) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1970 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
1971 dmErrorMsg("Standard input cannot be used without specifying input format.\n"); |
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
1972 dmErrorMsg("Perhaps you should try using --help\n"); |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
1973 goto error; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1974 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1975 inFile = stdin; |
1479
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
1976 optInFilename = "stdin"; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1977 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1978 else |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1979 if ((inFile = fopen(optInFilename, "rb")) == NULL) |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1980 { |
2097 | 1981 res = dmGetErrno(); |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
1982 dmErrorMsg("Error opening input file '%s', %d: %s\n", |
488 | 1983 optInFilename, res, dmErrorStr(res)); |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
1984 goto error; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1985 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1986 |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1987 // Determine output format, if not specified |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1988 if (optOutType == FFMT_AUTO && optOutFilename != NULL) |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1989 { |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1990 char *dext = strrchr(optOutFilename, '.'); |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1991 if (dext) |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1992 { |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1993 if (dmGetFormatByExt(dext + 1, &optOutType, &optOutFormat) || |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1994 dmGetC64FormatByExt(dext + 1, &optOutType, &optOutFormat)) |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1995 { |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1996 dmMsg(3, "Guessed output type as %s\n", |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1997 formatTypeList[optOutType]); |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1998 } |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
1999 } |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
2000 } |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
2001 else |
1911
794cbb938a58
Do not force output type to FFMT_ASCII if format is set on commandline.
Matti Hamalainen <ccr@tnsp.org>
parents:
1910
diff
changeset
|
2002 if (optOutType == FFMT_AUTO) |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
2003 optOutType = FFMT_ASCII; |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
2004 |
1479
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
2005 // Read the input .. |
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
2006 dmMsg(1, "Reading input from '%s'.\n", optInFilename); |
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
2007 |
2097 | 2008 if ((res = dmReadDataFile(inFile, NULL, &dataBufOrig, &dataSizeOrig)) != DMERR_OK) |
2009 { | |
2010 dmErrorMsg("Could not read input: %s.\n", dmErrorStr(res)); | |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2011 goto error; |
2097 | 2012 } |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2013 |
1664
9181d9148654
Fix a minor memory leak and file descriptor leak.
Matti Hamalainen <ccr@tnsp.org>
parents:
1640
diff
changeset
|
2014 fclose(inFile); |
9181d9148654
Fix a minor memory leak and file descriptor leak.
Matti Hamalainen <ccr@tnsp.org>
parents:
1640
diff
changeset
|
2015 |
1479
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
2016 // Check and compute the input skip |
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
2017 if (optInSkip > dataSizeOrig) |
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
2018 { |
2010
09d548b08150
Improve input skip option messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
2006
diff
changeset
|
2019 dmErrorMsg("Input skip value %d (0x%x) is larger than input size %" DM_PRIu_SIZE_T ".\n", |
09d548b08150
Improve input skip option messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
2006
diff
changeset
|
2020 optInSkip, optInSkip, dataSizeOrig); |
1479
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
2021 goto error; |
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
2022 } |
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
2023 |
2005
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
2024 if (optInSkipNeg) |
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
2025 { |
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
2026 dataBuf = dataBufOrig + dataSizeOrig - optInSkip; |
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
2027 dataSize = optInSkip; |
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
2028 dataRealOffs = dataSizeOrig - optInSkip; |
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
2029 |
2010
09d548b08150
Improve input skip option messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
2006
diff
changeset
|
2030 dmMsg(1, "Input skip -%d (-0x%x). Offset %d (0x%x), size %d (0x%x).\n", |
2005
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
2031 optInSkip, optInSkip, |
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
2032 dataRealOffs, dataRealOffs, |
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
2033 dataSize, dataSize); |
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
2034 |
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
2035 } |
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
2036 else |
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
2037 { |
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
2038 dataBuf = dataBufOrig + optInSkip; |
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
2039 dataSize = dataSizeOrig - optInSkip; |
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
2040 dataRealOffs = optInSkip; |
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
2041 |
2010
09d548b08150
Improve input skip option messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
2006
diff
changeset
|
2042 dmMsg(1, "Input skip %d (0x%x), size %d (0x%x).\n", |
2005
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
2043 optInSkip, optInSkip, |
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
2044 dataSize, dataSize); |
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
2045 } |
1479
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
2046 |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
2047 // Check for forced input format here |
1869
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
2048 if (optForcedInSubFormat >= 0) |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
2049 optInFormat = optForcedInSubFormat; |
1869
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
2050 |
1479
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
2051 // Perform probing, if required |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
2052 if (optInType == FFMT_AUTO || optInType == FFMT_BITMAP) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2053 { |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2054 // Probe for format |
516 | 2055 const DMC64ImageFormat *forced = NULL; |
1707
a0986cfd6f9d
More consistently use DMGrowBuf in the lib64gfx APIs, and implement
Matti Hamalainen <ccr@tnsp.org>
parents:
1696
diff
changeset
|
2056 DMGrowBuf tbuf; |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2057 |
1867
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
2058 if (optForcedInSubFormat >= 0) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2059 { |
1867
15cbf17a8ea6
Make output format -f option symmetric with the -i input format option.
Matti Hamalainen <ccr@tnsp.org>
parents:
1866
diff
changeset
|
2060 forced = &dmC64ImageFormats[optForcedInSubFormat]; |
1869
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
2061 dmMsg(0, "Forced '%s' format image, type %d, %s\n", |
1775
4e4d54135baf
Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents:
1759
diff
changeset
|
2062 forced->name, forced->format->type, forced->fext); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2063 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2064 |
1747
5e928618fdc8
Change DMGrowBuf API somewhat and implement more copy operations.
Matti Hamalainen <ccr@tnsp.org>
parents:
1730
diff
changeset
|
2065 res = dmC64DecodeBMP(&inC64Image, |
5e928618fdc8
Change DMGrowBuf API somewhat and implement more copy operations.
Matti Hamalainen <ccr@tnsp.org>
parents:
1730
diff
changeset
|
2066 dmGrowBufConstCreateFrom(&tbuf, dataBuf, dataSize), |
5e928618fdc8
Change DMGrowBuf API somewhat and implement more copy operations.
Matti Hamalainen <ccr@tnsp.org>
parents:
1730
diff
changeset
|
2067 0, 2, &inC64Fmt, forced); |
5e928618fdc8
Change DMGrowBuf API somewhat and implement more copy operations.
Matti Hamalainen <ccr@tnsp.org>
parents:
1730
diff
changeset
|
2068 |
1630
00e0d345e7f1
Improve autoprobing error handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
1629
diff
changeset
|
2069 if (forced == NULL && inC64Fmt != NULL && res == DMERR_OK) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2070 { |
1522
0d1cf72fb732
Clarify the "probed" messages of gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1514
diff
changeset
|
2071 dmMsg(1, "Probed '%s' format image, type %d, %s\n", |
1775
4e4d54135baf
Refactor the c64 bitmap format definitions handling to be more flexible. Again.
Matti Hamalainen <ccr@tnsp.org>
parents:
1759
diff
changeset
|
2072 inC64Fmt->name, inC64Fmt->format->type, inC64Fmt->fext); |
1630
00e0d345e7f1
Improve autoprobing error handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
1629
diff
changeset
|
2073 |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
2074 optInType = FFMT_BITMAP; |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2075 } |
897 | 2076 else |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
2077 if (res != DMERR_OK && (forced != NULL || optInType == FFMT_BITMAP)) |
897 | 2078 { |
1464
73e00bf7531c
Improve one error message by showing the error code.
Matti Hamalainen <ccr@tnsp.org>
parents:
1457
diff
changeset
|
2079 dmErrorMsg("Could not decode input image: %s.\n", dmErrorStr(res)); |
1514
61a5bbaf8d5c
Plug some minor memory leaks in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1502
diff
changeset
|
2080 goto error; |
897 | 2081 } |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2082 } |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2083 |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
2084 if (optInType == FFMT_AUTO || optInType == FFMT_IMAGE) |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2085 { |
1616
36d073c45327
Refactor the format handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
1609
diff
changeset
|
2086 const DMImageFormat *ifmt = NULL; |
435 | 2087 int index; |
465 | 2088 dmMsg(4, "Trying to probe image formats.\n"); |
1708
55db8d6dffa5
Do not apply input skip offset here anymore, it's handled more generally elsewhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
1707
diff
changeset
|
2089 if (dmImageProbeGeneric(dataBuf, dataSize, &ifmt, &index) > 0) |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2090 { |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
2091 optInType = FFMT_IMAGE; |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
2092 optInFormat = index; |
1869
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
2093 dmMsg(1, "Probed '%s' format image.\n", ifmt->name); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2094 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2095 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2096 |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
2097 if (optInType == FFMT_AUTO) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2098 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
2099 dmErrorMsg("No input format specified, and could not be determined automatically.\n"); |
1514
61a5bbaf8d5c
Plug some minor memory leaks in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1502
diff
changeset
|
2100 goto error; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2101 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2102 |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
2103 if (dmGetConvFormat(optInType, optInFormat, &inFormat) && |
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
2104 dmGetConvFormat(optOutType, optOutFormat, &outFormat)) |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2105 { |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2106 dmMsg(1, "Attempting conversion %s (%s) -> %s (%s)\n", |
1869
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
2107 inFormat.name, inFormat.fext, |
1067df067f28
Improve input/output format probe/forcing and related messages.
Matti Hamalainen <ccr@tnsp.org>
parents:
1867
diff
changeset
|
2108 outFormat.name, outFormat.fext); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2109 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2110 |
2058
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
2111 if (optScaleMode != SCALE_SET) |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
2112 { |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
2113 int scaleX = 1, scaleY = 1; |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
2114 if (inC64Fmt != NULL) |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
2115 { |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
2116 scaleX = inC64Fmt->format->aspectX; |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
2117 scaleY = inC64Fmt->format->aspectY; |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
2118 } |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
2119 |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
2120 switch (optScaleMode) |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
2121 { |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
2122 case SCALE_AUTO: |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
2123 optSpec.scaleX = scaleX; |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
2124 optSpec.scaleY = scaleY; |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
2125 break; |
2070 | 2126 |
2058
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
2127 case SCALE_RELATIVE: |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
2128 optSpec.scaleX *= scaleX; |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
2129 optSpec.scaleY *= scaleY; |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
2130 break; |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
2131 } |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
2132 } |
020f2151949a
Implement support for the c64 format aspect rations and automatic scaling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2052
diff
changeset
|
2133 |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
2134 switch (optInType) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2135 { |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2136 case FFMT_SPRITE: |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2137 case FFMT_CHAR: |
2005
2ff214f811b4
Implement negative input data skip values for gfxconv -s option.
Matti Hamalainen <ccr@tnsp.org>
parents:
2004
diff
changeset
|
2138 dmDumpSpritesAndChars(dataBuf, dataSize, dataRealOffs); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2139 break; |
1235
5b8245e5f785
Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1167
diff
changeset
|
2140 |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2141 case FFMT_BITMAP: |
2097 | 2142 if (optOutFilename == NULL) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2143 { |
2097 | 2144 dmErrorMsg("Output filename not set, required for bitmap formats.\n"); |
2145 goto error; | |
2146 } | |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2147 |
2097 | 2148 switch (optOutType) |
2149 { | |
2150 case FFMT_IMAGE: | |
2151 case FFMT_CHAR: | |
2152 case FFMT_SPRITE: | |
2123
47ddbedf5b56
Add initial support to 64vw and gfxconv for viewing and converting character
Matti Hamalainen <ccr@tnsp.org>
parents:
2120
diff
changeset
|
2153 // Set character data if required |
47ddbedf5b56
Add initial support to 64vw and gfxconv for viewing and converting character
Matti Hamalainen <ccr@tnsp.org>
parents:
2120
diff
changeset
|
2154 if ((inC64Fmt->format->type & D64_FMT_CHAR) && |
2126
cffadb745484
Fix character ROM data handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
2155 inC64Image->charData[0].data == NULL) |
2123
47ddbedf5b56
Add initial support to 64vw and gfxconv for viewing and converting character
Matti Hamalainen <ccr@tnsp.org>
parents:
2120
diff
changeset
|
2156 { |
2126
cffadb745484
Fix character ROM data handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
2157 // Check character ROM filename |
cffadb745484
Fix character ROM data handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
2158 if (optCharROMFilename == NULL) |
cffadb745484
Fix character ROM data handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
2159 optCharROMFilename = DM_DEF_CHARGEN; |
cffadb745484
Fix character ROM data handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
2160 |
2123
47ddbedf5b56
Add initial support to 64vw and gfxconv for viewing and converting character
Matti Hamalainen <ccr@tnsp.org>
parents:
2120
diff
changeset
|
2161 // Attempt to read character ROM |
47ddbedf5b56
Add initial support to 64vw and gfxconv for viewing and converting character
Matti Hamalainen <ccr@tnsp.org>
parents:
2120
diff
changeset
|
2162 dmMsg(1, "Using character ROM file '%s'.\n", |
47ddbedf5b56
Add initial support to 64vw and gfxconv for viewing and converting character
Matti Hamalainen <ccr@tnsp.org>
parents:
2120
diff
changeset
|
2163 optCharROMFilename); |
47ddbedf5b56
Add initial support to 64vw and gfxconv for viewing and converting character
Matti Hamalainen <ccr@tnsp.org>
parents:
2120
diff
changeset
|
2164 |
47ddbedf5b56
Add initial support to 64vw and gfxconv for viewing and converting character
Matti Hamalainen <ccr@tnsp.org>
parents:
2120
diff
changeset
|
2165 if ((res = dmReadDataFile(NULL, optCharROMFilename, |
2126
cffadb745484
Fix character ROM data handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
2166 &inC64Image->charData[0].data, |
cffadb745484
Fix character ROM data handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
2125
diff
changeset
|
2167 &inC64Image->charData[0].size)) != DMERR_OK) |
2123
47ddbedf5b56
Add initial support to 64vw and gfxconv for viewing and converting character
Matti Hamalainen <ccr@tnsp.org>
parents:
2120
diff
changeset
|
2168 { |
47ddbedf5b56
Add initial support to 64vw and gfxconv for viewing and converting character
Matti Hamalainen <ccr@tnsp.org>
parents:
2120
diff
changeset
|
2169 dmErrorMsg("Could not read character ROM from '%s'.\n", |
47ddbedf5b56
Add initial support to 64vw and gfxconv for viewing and converting character
Matti Hamalainen <ccr@tnsp.org>
parents:
2120
diff
changeset
|
2170 optCharROMFilename); |
47ddbedf5b56
Add initial support to 64vw and gfxconv for viewing and converting character
Matti Hamalainen <ccr@tnsp.org>
parents:
2120
diff
changeset
|
2171 goto error; |
47ddbedf5b56
Add initial support to 64vw and gfxconv for viewing and converting character
Matti Hamalainen <ccr@tnsp.org>
parents:
2120
diff
changeset
|
2172 } |
47ddbedf5b56
Add initial support to 64vw and gfxconv for viewing and converting character
Matti Hamalainen <ccr@tnsp.org>
parents:
2120
diff
changeset
|
2173 } |
47ddbedf5b56
Add initial support to 64vw and gfxconv for viewing and converting character
Matti Hamalainen <ccr@tnsp.org>
parents:
2120
diff
changeset
|
2174 |
47ddbedf5b56
Add initial support to 64vw and gfxconv for viewing and converting character
Matti Hamalainen <ccr@tnsp.org>
parents:
2120
diff
changeset
|
2175 // Convert the image |
2097 | 2176 res = dmC64ConvertBMP2Image(&outImage, inC64Image, inC64Fmt, &imageSpecC64); |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2177 |
2097 | 2178 if (res != DMERR_OK || outImage == NULL) |
2179 { | |
2180 dmErrorMsg("Error in bitmap to image conversion.\n"); | |
2181 goto error; | |
2182 } | |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2183 |
2097 | 2184 switch (optOutType) |
2185 { | |
2186 case FFMT_IMAGE: | |
2187 res = dmWriteImage(optOutFilename, outImage, &optSpec, | |
2188 &dmImageFormatList[optOutFormat], TRUE); | |
2189 break; | |
1874 | 2190 |
2097 | 2191 case FFMT_CHAR: |
2192 case FFMT_SPRITE: | |
2193 res = dmWriteSpritesAndChars(optOutFilename, outImage, | |
2194 optOutType, optInMulticolor); | |
2195 break; | |
2196 } | |
2197 break; | |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2198 |
2097 | 2199 case FFMT_BITMAP: |
2200 if ((res = dmConvertC64Bitmap(&outC64Image, inC64Image, | |
2201 &dmC64ImageFormats[optOutFormat], inC64Fmt)) != DMERR_OK) | |
2202 { | |
2203 dmErrorMsg("Error in bitmap format conversion.\n"); | |
2204 goto error; | |
2205 } | |
2206 if (dmVerbosity >= 2) | |
2207 { | |
2208 dmPrint(0, "INPUT:\n"); dmC64ImageDump(stderr, inC64Image, inC64Fmt, " "); | |
2209 dmPrint(0, "OUTPUT:\n"); dmC64ImageDump(stderr, outC64Image, &dmC64ImageFormats[optOutFormat], " "); | |
2210 } | |
2211 res = dmWriteBitmap(optOutFilename, outC64Image, &dmC64ImageFormats[optOutFormat]); | |
2212 break; | |
534
fbfdc9e4fe2b
Begin preparations for improved bitmap conversion support. Breaks lib64gfx API.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
2213 |
2097 | 2214 default: |
2215 dmErrorMsg("Unsupported output format for bitmap conversion.\n"); | |
2216 break; | |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2217 } |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2218 break; |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2219 |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2220 case FFMT_IMAGE: |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2221 { |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
2222 const DMImageFormat *ifmt = &dmImageFormatList[optInFormat]; |
1609
c29adf5ce240
Convert libgfx file format routines to use DMResource instead of stdio FILE.
Matti Hamalainen <ccr@tnsp.org>
parents:
1604
diff
changeset
|
2223 DMResource *fp; |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2224 |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2225 if (optOutFilename == NULL) |
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2226 { |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
2227 dmErrorMsg("Output filename not set, required for image formats.\n"); |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2228 goto error; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2229 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2230 |
1609
c29adf5ce240
Convert libgfx file format routines to use DMResource instead of stdio FILE.
Matti Hamalainen <ccr@tnsp.org>
parents:
1604
diff
changeset
|
2231 if ((res = dmf_open_memio(NULL, optInFilename, dataBuf, dataSize, &fp)) != DMERR_OK) |
c29adf5ce240
Convert libgfx file format routines to use DMResource instead of stdio FILE.
Matti Hamalainen <ccr@tnsp.org>
parents:
1604
diff
changeset
|
2232 { |
c29adf5ce240
Convert libgfx file format routines to use DMResource instead of stdio FILE.
Matti Hamalainen <ccr@tnsp.org>
parents:
1604
diff
changeset
|
2233 dmErrorMsg("Could not create MemIO handle for input.\n"); |
c29adf5ce240
Convert libgfx file format routines to use DMResource instead of stdio FILE.
Matti Hamalainen <ccr@tnsp.org>
parents:
1604
diff
changeset
|
2234 goto error; |
c29adf5ce240
Convert libgfx file format routines to use DMResource instead of stdio FILE.
Matti Hamalainen <ccr@tnsp.org>
parents:
1604
diff
changeset
|
2235 } |
c29adf5ce240
Convert libgfx file format routines to use DMResource instead of stdio FILE.
Matti Hamalainen <ccr@tnsp.org>
parents:
1604
diff
changeset
|
2236 |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2237 // Read input |
1886
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
2238 if (ifmt->read != NULL) |
1af79412f249
Remove the stdio FILE support from libgfx API, now only DMResource is supported.
Matti Hamalainen <ccr@tnsp.org>
parents:
1874
diff
changeset
|
2239 res = ifmt->read(fp, &inImage); |
441
2a4de5fe4003
Improve loading of input images to use the list provided by libgfx.
Matti Hamalainen <ccr@tnsp.org>
parents:
435
diff
changeset
|
2240 else |
1874 | 2241 dmErrorMsg("Unsupported input image format for image conversion.\n"); |
409
b529b7e8ff83
Various improvements and cruft cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents:
407
diff
changeset
|
2242 |
1609
c29adf5ce240
Convert libgfx file format routines to use DMResource instead of stdio FILE.
Matti Hamalainen <ccr@tnsp.org>
parents:
1604
diff
changeset
|
2243 dmf_close(fp); |
c29adf5ce240
Convert libgfx file format routines to use DMResource instead of stdio FILE.
Matti Hamalainen <ccr@tnsp.org>
parents:
1604
diff
changeset
|
2244 |
1440 | 2245 if (res != DMERR_OK || inImage == NULL) |
1874 | 2246 goto error; |
1235
5b8245e5f785
Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
1167
diff
changeset
|
2247 |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
2248 switch (optOutType) |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2249 { |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2250 case FFMT_IMAGE: |
1811
4f141426eb31
Clean up the image format output stuff in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
1807
diff
changeset
|
2251 res = dmWriteImage(optOutFilename, inImage, &optSpec, |
1909
a323ca23f449
Rename several variables to lessen the confusion about input/output "format"
Matti Hamalainen <ccr@tnsp.org>
parents:
1897
diff
changeset
|
2252 &dmImageFormatList[optOutFormat], TRUE); |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2253 break; |
417 | 2254 |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
2255 case FFMT_CHAR: |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
2256 case FFMT_SPRITE: |
1931
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2257 res = dmWriteSpritesAndChars(optOutFilename, inImage, |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2258 optOutType, optInMulticolor); |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2259 break; |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2260 |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2261 case FFMT_BITMAP: |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2262 { |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2263 DMC64Image *tmpC64Image = NULL; |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2264 res = dmC64ConvertImage2BMP(&tmpC64Image, inImage, |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2265 &dmC64ImageFormats[optOutFormat], &imageSpecC64); |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2266 |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2267 if (res != DMERR_OK || tmpC64Image == NULL) |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2268 { |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2269 dmC64ImageFree(tmpC64Image); |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2270 dmErrorMsg("Error in image to bitmap conversion: %s\n", |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2271 dmErrorStr(res)); |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2272 goto error; |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2273 } |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2274 |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2275 if ((res = dmConvertC64Bitmap(&outC64Image, tmpC64Image, |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2276 &dmC64ImageFormats[optOutFormat], &dmC64ImageFormats[optOutFormat])) != DMERR_OK) |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2277 { |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2278 dmC64ImageFree(tmpC64Image); |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2279 dmErrorMsg("Error in bitmap format conversion: %s\n", |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2280 dmErrorStr(res)); |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2281 goto error; |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2282 } |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2283 |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2284 res = dmWriteBitmap(optOutFilename, outC64Image, &dmC64ImageFormats[optOutFormat]); |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2285 dmC64ImageFree(tmpC64Image); |
410679d2fe8a
"Enable" the image->c64 bitmap conversion path in gfxconv. It does not work
Matti Hamalainen <ccr@tnsp.org>
parents:
1929
diff
changeset
|
2286 } |
489
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
2287 break; |
fca3c240ccac
Implement simplistic image input to char/sprite splitter conversion.
Matti Hamalainen <ccr@tnsp.org>
parents:
488
diff
changeset
|
2288 |
417 | 2289 default: |
1874 | 2290 dmErrorMsg("Unsupported output format for image conversion.\n"); |
417 | 2291 break; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2292 } |
806 | 2293 |
2294 if (res != DMERR_OK) | |
2295 { | |
958
985225a93aeb
Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents:
940
diff
changeset
|
2296 dmErrorMsg("Error writing output (%s), probably unsupported output format for bitmap/image conversion.\n", |
806 | 2297 dmErrorStr(res)); |
2298 } | |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2299 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2300 break; |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2301 } |
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2302 |
933 | 2303 error: |
1664
9181d9148654
Fix a minor memory leak and file descriptor leak.
Matti Hamalainen <ccr@tnsp.org>
parents:
1640
diff
changeset
|
2304 dmFree(convFormatList); |
1479
c4755b73b93c
Improve how input skipping is done. This, however, currently breaks skipping for
Matti Hamalainen <ccr@tnsp.org>
parents:
1470
diff
changeset
|
2305 dmFree(dataBufOrig); |
1440 | 2306 dmC64ImageFree(inC64Image); |
1490
665a0b917d22
Begin restructuring how C64 bitmaps are converted.
Matti Hamalainen <ccr@tnsp.org>
parents:
1481
diff
changeset
|
2307 dmC64ImageFree(outC64Image); |
2052
aa8df4f1b785
Fix minor memory leaks in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2030
diff
changeset
|
2308 dmImageFree(inImage); |
aa8df4f1b785
Fix minor memory leaks in gfxconv.
Matti Hamalainen <ccr@tnsp.org>
parents:
2030
diff
changeset
|
2309 dmImageFree(outImage); |
419
936bc27a79d6
Modularize some functions to lib64gfx, fix bitmap -> image conversion,
Matti Hamalainen <ccr@tnsp.org>
parents:
417
diff
changeset
|
2310 |
933 | 2311 return 0; |
407
59244a7ae37f
Move c64 utilities to the engine lib, as we benefit from a common framework.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2312 } |