| 1237 | } |
| 1238 | |
| 1239 | void MapPrinter::drawSeparationPages(QPrinter* printer, QPainter* device_painter, const QRectF& page_extent) const |
| 1240 | { |
| 1241 | Q_ASSERT(printer->colorMode() == QPrinter::GrayScale); |
| 1242 | |
| 1243 | device_painter->save(); |
| 1244 | |
| 1245 | device_painter->setRenderHint(QPainter::Antialiasing); |
| 1246 | |
| 1247 | // Translate for top left page margin |
| 1248 | qreal scale = options.resolution / 25.4; // Dots per mm |
| 1249 | device_painter->scale(scale, scale); |
| 1250 | device_painter->translate(page_format.page_rect.left(), page_format.page_rect.top()); |
| 1251 | |
| 1252 | // Convert native map scale to print scale |
| 1253 | if (scale_adjustment != 1.0) |
| 1254 | { |
| 1255 | scale *= scale_adjustment; |
| 1256 | device_painter->scale(scale_adjustment, scale_adjustment); |
| 1257 | } |
| 1258 | |
| 1259 | // Translate and clip for margins and print area |
| 1260 | device_painter->translate(-page_extent.left(), -page_extent.top()); |
| 1261 | device_painter->setClipRect(page_extent.intersected(print_area).adjusted(-10, 10, 10, 10), Qt::ReplaceClip); |
| 1262 | |
| 1263 | bool need_new_page = false; |
| 1264 | for (int i = map.getNumColors() - 1; i >= 0; --i) |
| 1265 | { |
| 1266 | const MapColor* color = map.getColor(i); |
| 1267 | if (color->getSpotColorMethod() == MapColor::SpotColor) |
| 1268 | { |
| 1269 | if (need_new_page) |
| 1270 | { |
| 1271 | printer->newPage(); |
| 1272 | } |
| 1273 | |
| 1274 | RenderConfig config = { map, page_extent, scale, RenderConfig::NoOptions, 1.0 }; |
| 1275 | map.drawColorSeparation(device_painter, config, color); |
| 1276 | need_new_page = true; |
| 1277 | } |
| 1278 | } |
| 1279 | |
| 1280 | device_painter->restore(); |
| 1281 | } |
| 1282 | |
| 1283 | bool MapPrinter::printMap(QPrinter* printer) |
| 1284 | { |
nothing calls this directly
no test coverage detected