3
3
#include " array.h"
4
4
#include " log.h"
5
5
6
- #include " PwgPgHdr .h"
7
- #include " UrfPgHdr .h"
6
+ #include " pwgpghdr .h"
7
+ #include " urfpghdr .h"
8
8
9
9
#include < iostream>
10
10
#include < map>
@@ -65,7 +65,7 @@ void bmp_to_pwg(Bytestream& bmpBts, Bytestream& outBts, size_t page, const Print
65
65
}
66
66
67
67
outBts << lineRepeat;
68
- if (backside&& params.getBackHFlip ())
68
+ if (backside && params.getBackHFlip ())
69
69
{
70
70
// Flip line into tmp buffer
71
71
if (params.getBitsPerColor () == 1 )
@@ -162,7 +162,7 @@ void compress_line(uint8_t* raw, size_t len, Bytestream& outBts, int colors)
162
162
}
163
163
}
164
164
165
- static std::map<std::string, UrfPgHdr::MediaType_enum>
165
+ static const std::map<std::string, UrfPgHdr::MediaType_enum>
166
166
UrfMediaTypeMappings {{" auto" , UrfPgHdr::AutomaticMediaType},
167
167
{" stationery" , UrfPgHdr::Stationery},
168
168
{" transparency" , UrfPgHdr::Transparency},
@@ -187,6 +187,14 @@ void make_pwg_hdr(Bytestream& outBts, const PrintParameters& params, bool backsi
187
187
{
188
188
PwgPgHdr outHdr;
189
189
190
+ static const std::map<PrintParameters::ColorMode, PwgPgHdr::ColorSpace_enum>
191
+ pwgColorSpaceMappings {{PrintParameters::sRGB24 , PwgPgHdr::sRGB },
192
+ {PrintParameters::CMYK32, PwgPgHdr::CMYK},
193
+ {PrintParameters::Gray8, PwgPgHdr::sGray },
194
+ {PrintParameters::Black8, PwgPgHdr::Black},
195
+ {PrintParameters::Gray1, PwgPgHdr::sGray },
196
+ {PrintParameters::Black1, PwgPgHdr::Black}};
197
+
190
198
outHdr.MediaType = params.mediaType ;
191
199
outHdr.Duplex = params.isTwoSided ();
192
200
outHdr.HWResolutionX = params.hwResW ;
@@ -201,14 +209,11 @@ void make_pwg_hdr(Bytestream& outBts, const PrintParameters& params, bool backsi
201
209
outHdr.BitsPerColor = params.getBitsPerColor ();
202
210
outHdr.BitsPerPixel = params.getNumberOfColors () * outHdr.BitsPerColor ;
203
211
outHdr.BytesPerLine = params.getPaperSizeWInBytes ();
204
- outHdr.ColorSpace = params.colorMode == PrintParameters::CMYK32 ? PwgPgHdr::CMYK
205
- : params.colorMode == PrintParameters::sRGB24 ? PwgPgHdr::sRGB
206
- : params.isBlack () ? PwgPgHdr::Black
207
- : PwgPgHdr::sGray ;
212
+ outHdr.ColorSpace = pwgColorSpaceMappings.at (params.colorMode );
208
213
outHdr.NumColors = params.getNumberOfColors ();
209
214
outHdr.TotalPageCount = 0 ;
210
- outHdr.CrossFeedTransform = backside&& params.getBackHFlip () ? -1 : 1 ;
211
- outHdr.FeedTransform = backside&& params.getBackVFlip () ? -1 : 1 ;
215
+ outHdr.CrossFeedTransform = backside && params.getBackHFlip () ? -1 : 1 ;
216
+ outHdr.FeedTransform = backside && params.getBackVFlip () ? -1 : 1 ;
212
217
outHdr.AlternatePrimary = 0x00ffffff ;
213
218
outHdr.setPrintQuality (params.quality );
214
219
outHdr.PageSizeName = params.paperSizeName ;
@@ -222,19 +227,24 @@ void make_urf_hdr(Bytestream& outBts, const PrintParameters& params)
222
227
{
223
228
if (params.hwResW != params.hwResH )
224
229
{
225
- exit ( 2 );
230
+ throw std::logic_error ( " Asymmetric URF resolution " );
226
231
}
227
232
228
233
UrfPgHdr outHdr;
229
234
235
+ static const std::map<PrintParameters::ColorMode, UrfPgHdr::ColorSpace_enum>
236
+ urfColorSpaceMappings {{PrintParameters::sRGB24 , UrfPgHdr::sRGB },
237
+ {PrintParameters::CMYK32, UrfPgHdr::CMYK},
238
+ {PrintParameters::Gray8, UrfPgHdr::sGray }};
239
+
240
+ static const std::map<PrintParameters::DuplexMode, UrfPgHdr::Duplex_enum>
241
+ urfDuplexMappings {{PrintParameters::OneSided, UrfPgHdr::OneSided},
242
+ {PrintParameters::TwoSidedLongEdge, UrfPgHdr::TwoSidedLongEdge},
243
+ {PrintParameters::TwoSidedShortEdge, UrfPgHdr::TwoSidedShortEdge}};
244
+
230
245
outHdr.BitsPerPixel = 8 *params.getNumberOfColors ();
231
- outHdr.ColorSpace = params.colorMode == PrintParameters::CMYK32 ? UrfPgHdr::CMYK
232
- : params.colorMode == PrintParameters::sRGB24 ? UrfPgHdr::sRGB
233
- : UrfPgHdr::sGray ;
234
- outHdr.Duplex = params.isTwoSided () ? (params.duplexMode == PrintParameters::TwoSidedShortEdge
235
- ? UrfPgHdr::ShortSide
236
- : UrfPgHdr::LongSide)
237
- : UrfPgHdr::NoDuplex;
246
+ outHdr.ColorSpace = urfColorSpaceMappings.at (params.colorMode );
247
+ outHdr.Duplex = urfDuplexMappings.at (params.duplexMode );
238
248
outHdr.setQuality (params.quality );
239
249
outHdr.MediaType = params.mediaType == " " ? UrfPgHdr::AutomaticMediaType
240
250
: UrfMediaTypeMappings.at (params.mediaType );
0 commit comments