View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0017518 | Scribus | Printing | public | 2025-05-13 14:02 | 2025-05-13 19:10 |
Reporter | jirib | Assigned To | |||
Priority | normal | Severity | minor | Reproducibility | always |
Status | new | Resolution | open | ||
Product Version | 1.6.5.svn | ||||
Summary | 0017518: bleed/crop/registration marks and color bar is always added even if bleed area is 0 sized | ||||
Description | When trying to do cover for a book, my goal was to somehow print it. I created two facing pages starting with left page to have the cover - outside-back and outside-front. I needed to crop it. Since we do not provide printing it as "spread", I thought I could print it as two pages where crop marks would be only on top, bottom, outside bleed areas; however, even with inside bleed set to 0, Scribus always creates the print with marks in inside area, thus preventing to "merge" cover pages to be delivered to a print shop. Thus, I tried to cook a diff. | ||||
Steps To Reproduce | 1. two facing pages - starting with left 2. inside bleed set to 0 size 3. enable printing crop marks 4. print Each pages has crop marks even on "inside". | ||||
Additional Information | I haven't compile it, it is just a try. I'm sorry but I'm not really a developer. ---%>--- diff --git a/scribus/scpageoutput.cpp b/scribus/scpageoutput.cpp index 5143006f9..9f688af64 100644 --- a/scribus/scpageoutput.cpp +++ b/scribus/scpageoutput.cpp @@ -1588,7 +1588,7 @@ void ScPageOutput::drawMarks(ScPage* page, ScPainterExBase* painter, const Marks double bottom = offsetY + height, top = offsetY; drawBoxMarks(painter, QRectF(QPointF(left, top), QPointF(right, bottom)), bleedBox, markOffs, markLength); } - if (options.bleedMarks) + if (options.bleedMarks && (bleedTop > 0.0 || bleedBottom > 0.0 || bleedLeft > 0.0 || bleedRight > 0.0)) { double left = offsetX - bleedLeft, right = offsetX + width + bleedRight; double bottom = offsetY + height + bleedBottom, top = offsetY - bleedTop; @@ -1596,33 +1596,47 @@ void ScPageOutput::drawMarks(ScPage* page, ScPainterExBase* painter, const Marks } if (options.registrationMarks) { - double posX = (2* offsetX + width) / 2.0 - 7.0; - double posY = (offsetY + height + bleedBottom + markOffs + 3.0); - painter->save(); - painter->translate(posX, posY); - drawRegistrationCross(painter); - painter->restore(); - posX = (2 * offsetX + width) / 2.0 - 7.0; - posY = (offsetY - bleedTop - markOffs - 17); - painter->save(); - painter->translate(posX, posY); - drawRegistrationCross(painter); - painter->restore(); - - posX = (offsetX - bleedLeft - markOffs - 17); - posY = (2 * offsetY + height) / 2.0 - 7.0; - painter->save(); - painter->translate(posX, posY); - drawRegistrationCross(painter); - painter->restore(); - posX = (offsetX + width + bleedRight + markOffs + 3.0); - posY = (2 * offsetY + height) / 2.0 - 7.0; - painter->save(); - painter->translate(posX, posY); - drawRegistrationCross(painter); - painter->restore(); - } - if (options.colorMarks) + if (bleedBottom > 0.0) + { + double posX = (2 * offsetX + width) / 2.0 - 7.0; + double posY = offsetY + height + bleedBottom + markOffs + 3.0; + painter->save(); + painter->translate(posX, posY); + drawRegistrationCross(painter); + painter->restore(); + } + + if (bleedTop > 0.0) + { + double posX = (2 * offsetX + width) / 2.0 - 7.0; + double posY = offsetY - bleedTop - markOffs - 17; + painter->save(); + painter->translate(posX, posY); + drawRegistrationCross(painter); + painter->restore(); + } + + if (bleedLeft > 0.0) + { + double posX = offsetX - bleedLeft - markOffs - 17; + double posY = (2 * offsetY + height) / 2.0 - 7.0; + painter->save(); + painter->translate(posX, posY); + drawRegistrationCross(painter); + painter->restore(); + } + + if (bleedRight > 0.0) + { + double posX = offsetX + width + bleedRight + markOffs + 3.0; + double posY = (2 * offsetY + height) / 2.0 - 7.0; + painter->save(); + painter->translate(posX, posY); + drawRegistrationCross(painter); + painter->restore(); + } + } + if (options.colorMarks && bleedTop > 0.0) { int shade = 100; double startX = offsetX + 6.0; @@ -1686,33 +1700,49 @@ void ScPageOutput::drawBoxMarks(ScPainterExBase* painter, const QRectF& box, con double bleedBottom = bleedBox.bottom(); double bleedTop = bleedBox.top(); // Top Left - start.setXY(bleedLeft - offset, top); - end.setXY (bleedLeft - offset - markSize, top); - painter->drawLine(start, end); - start.setXY(left, bleedTop - offset); - end.setXY (left, bleedTop - offset - markSize); - painter->drawLine(start, end); + if (bleedTop > 0.0 && bleedLeft > 0.0) + { + start.setXY(bleedLeft - offset, top); + end.setXY(bleedLeft - offset - markSize, top); + painter->drawLine(start, end); + + start.setXY(left, bleedTop - offset); + end.setXY(left, bleedTop - offset - markSize); + painter->drawLine(start, end); + } // Top Right - start.setXY(bleedRight + offset, top); - end.setXY (bleedRight + offset + markSize, top); - painter->drawLine(start, end); - start.setXY(right, bleedTop - offset); - end.setXY (right, bleedTop - offset - markSize); - painter->drawLine(start, end); + if (bleedTop > 0.0 && bleedRight > 0.0) + { + start.setXY(bleedRight + offset, top); + end.setXY(bleedRight + offset + markSize, top); + painter->drawLine(start, end); + + start.setXY(right, bleedTop - offset); + end.setXY(right, bleedTop - offset - markSize); + painter->drawLine(start, end); + } // Bottom Left - start.setXY(bleedLeft - offset, bottom); - end.setXY (bleedLeft - offset - markSize, bottom); - painter->drawLine(start, end); - start.setXY(left, bleedBottom + offset); - end.setXY (left, bleedBottom + offset + markSize); - painter->drawLine(start, end); + if (bleedBottom > 0.0 && bleedLeft > 0.0) + { + start.setXY(bleedLeft - offset, bottom); + end.setXY(bleedLeft - offset - markSize, bottom); + painter->drawLine(start, end); + + start.setXY(left, bleedBottom + offset); + end.setXY(left, bleedBottom + offset + markSize); + painter->drawLine(start, end); + } // Bottom Right - start.setXY(bleedRight + offset, bottom); - end.setXY (bleedRight + offset + markSize, bottom); - painter->drawLine(start, end); - start.setXY(right, bleedBottom + offset); - end.setXY (right, bleedBottom + offset + markSize); - painter->drawLine(start, end); + if (bleedBottom > 0.0 && bleedRight > 0.0) + { + start.setXY(bleedRight + offset, bottom); + end.setXY(bleedRight + offset + markSize, bottom); + painter->drawLine(start, end); + + start.setXY(right, bleedBottom + offset); + end.setXY(right, bleedBottom + offset + markSize); + painter->drawLine(start, end); + } } void ScPageOutput::drawRegistrationCross(ScPainterExBase* painter) ---%<--- | ||||
Tags | No tags attached. | ||||
Patch | No | ||||
|
marks.diff (5,617 bytes)
diff --git a/scribus/scpageoutput.cpp b/scribus/scpageoutput.cpp index 5143006f9..9f688af64 100644 --- a/scribus/scpageoutput.cpp +++ b/scribus/scpageoutput.cpp @@ -1588,7 +1588,7 @@ void ScPageOutput::drawMarks(ScPage* page, ScPainterExBase* painter, const Marks double bottom = offsetY + height, top = offsetY; drawBoxMarks(painter, QRectF(QPointF(left, top), QPointF(right, bottom)), bleedBox, markOffs, markLength); } - if (options.bleedMarks) + if (options.bleedMarks && (bleedTop > 0.0 || bleedBottom > 0.0 || bleedLeft > 0.0 || bleedRight > 0.0)) { double left = offsetX - bleedLeft, right = offsetX + width + bleedRight; double bottom = offsetY + height + bleedBottom, top = offsetY - bleedTop; @@ -1596,33 +1596,47 @@ void ScPageOutput::drawMarks(ScPage* page, ScPainterExBase* painter, const Marks } if (options.registrationMarks) { - double posX = (2* offsetX + width) / 2.0 - 7.0; - double posY = (offsetY + height + bleedBottom + markOffs + 3.0); - painter->save(); - painter->translate(posX, posY); - drawRegistrationCross(painter); - painter->restore(); - posX = (2 * offsetX + width) / 2.0 - 7.0; - posY = (offsetY - bleedTop - markOffs - 17); - painter->save(); - painter->translate(posX, posY); - drawRegistrationCross(painter); - painter->restore(); - - posX = (offsetX - bleedLeft - markOffs - 17); - posY = (2 * offsetY + height) / 2.0 - 7.0; - painter->save(); - painter->translate(posX, posY); - drawRegistrationCross(painter); - painter->restore(); - posX = (offsetX + width + bleedRight + markOffs + 3.0); - posY = (2 * offsetY + height) / 2.0 - 7.0; - painter->save(); - painter->translate(posX, posY); - drawRegistrationCross(painter); - painter->restore(); - } - if (options.colorMarks) + if (bleedBottom > 0.0) + { + double posX = (2 * offsetX + width) / 2.0 - 7.0; + double posY = offsetY + height + bleedBottom + markOffs + 3.0; + painter->save(); + painter->translate(posX, posY); + drawRegistrationCross(painter); + painter->restore(); + } + + if (bleedTop > 0.0) + { + double posX = (2 * offsetX + width) / 2.0 - 7.0; + double posY = offsetY - bleedTop - markOffs - 17; + painter->save(); + painter->translate(posX, posY); + drawRegistrationCross(painter); + painter->restore(); + } + + if (bleedLeft > 0.0) + { + double posX = offsetX - bleedLeft - markOffs - 17; + double posY = (2 * offsetY + height) / 2.0 - 7.0; + painter->save(); + painter->translate(posX, posY); + drawRegistrationCross(painter); + painter->restore(); + } + + if (bleedRight > 0.0) + { + double posX = offsetX + width + bleedRight + markOffs + 3.0; + double posY = (2 * offsetY + height) / 2.0 - 7.0; + painter->save(); + painter->translate(posX, posY); + drawRegistrationCross(painter); + painter->restore(); + } + } + if (options.colorMarks && bleedTop > 0.0) { int shade = 100; double startX = offsetX + 6.0; @@ -1686,33 +1700,49 @@ void ScPageOutput::drawBoxMarks(ScPainterExBase* painter, const QRectF& box, con double bleedBottom = bleedBox.bottom(); double bleedTop = bleedBox.top(); // Top Left - start.setXY(bleedLeft - offset, top); - end.setXY (bleedLeft - offset - markSize, top); - painter->drawLine(start, end); - start.setXY(left, bleedTop - offset); - end.setXY (left, bleedTop - offset - markSize); - painter->drawLine(start, end); + if (bleedTop > 0.0 && bleedLeft > 0.0) + { + start.setXY(bleedLeft - offset, top); + end.setXY(bleedLeft - offset - markSize, top); + painter->drawLine(start, end); + + start.setXY(left, bleedTop - offset); + end.setXY(left, bleedTop - offset - markSize); + painter->drawLine(start, end); + } // Top Right - start.setXY(bleedRight + offset, top); - end.setXY (bleedRight + offset + markSize, top); - painter->drawLine(start, end); - start.setXY(right, bleedTop - offset); - end.setXY (right, bleedTop - offset - markSize); - painter->drawLine(start, end); + if (bleedTop > 0.0 && bleedRight > 0.0) + { + start.setXY(bleedRight + offset, top); + end.setXY(bleedRight + offset + markSize, top); + painter->drawLine(start, end); + + start.setXY(right, bleedTop - offset); + end.setXY(right, bleedTop - offset - markSize); + painter->drawLine(start, end); + } // Bottom Left - start.setXY(bleedLeft - offset, bottom); - end.setXY (bleedLeft - offset - markSize, bottom); - painter->drawLine(start, end); - start.setXY(left, bleedBottom + offset); - end.setXY (left, bleedBottom + offset + markSize); - painter->drawLine(start, end); + if (bleedBottom > 0.0 && bleedLeft > 0.0) + { + start.setXY(bleedLeft - offset, bottom); + end.setXY(bleedLeft - offset - markSize, bottom); + painter->drawLine(start, end); + + start.setXY(left, bleedBottom + offset); + end.setXY(left, bleedBottom + offset + markSize); + painter->drawLine(start, end); + } // Bottom Right - start.setXY(bleedRight + offset, bottom); - end.setXY (bleedRight + offset + markSize, bottom); - painter->drawLine(start, end); - start.setXY(right, bleedBottom + offset); - end.setXY (right, bleedBottom + offset + markSize); - painter->drawLine(start, end); + if (bleedBottom > 0.0 && bleedRight > 0.0) + { + start.setXY(bleedRight + offset, bottom); + end.setXY(bleedRight + offset + markSize, bottom); + painter->drawLine(start, end); + + start.setXY(right, bleedBottom + offset); + end.setXY(right, bleedBottom + offset + markSize); + painter->drawLine(start, end); + } } void ScPageOutput::drawRegistrationCross(ScPainterExBase* painter) |
|
PS: I could not figure out how to prevent presence of 'Page Information' :-( |
|
>> Since we do not provide printing it as "spread", I thought I could print it as two pages where crop marks would be only on top, bottom, outside bleed areas; however, even with inside bleed set to 0, Scribus always creates the print with marks in inside area, thus preventing to "merge" cover pages to be delivered to a print shop. Professional do not layout covers using spreads or facing pages. Facing pages simply do not work if spine width is several mm. Covers are layouted using single page documents. In this context, there is no "inside bleed", just left bleed and right bleed. |