Correction : les bords droits et inferieurs des schemas n'etaient pas imprimes a 1px pres.

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.3@751 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavier
2009-09-13 14:41:14 +00:00
parent bcdc0138ce
commit df124f0e38
2 changed files with 18 additions and 4 deletions

View File

@@ -76,6 +76,19 @@ QString DiagramPrintDialog::docName() const {
return(doc_name_);
}
/**
@param diagram Un schema
@return le rectangle a imprimer pour ce schema
*/
QRect DiagramPrintDialog::diagramRect(Diagram *diagram) const {
if (!diagram) return(QRect());
// ajuste la bordure du schema d'un pixel (epaisseur du trait)
QRect diagram_rect = diagram -> border().adjusted(0.0, 0.0, 1.0, 1.0).toAlignedRect();
return(diagram_rect);
}
/**
Execute le dialogue d'impression
*/
@@ -135,7 +148,7 @@ int DiagramPrintDialog::pagesCount(Diagram *diagram, bool fullpage) const {
int DiagramPrintDialog::horizontalPagesCount(Diagram *diagram, bool fullpage) const {
// note : pageRect et Paper Rect tiennent compte de l'orientation du papier
QRect printable_area = fullpage ? printer_ -> paperRect() : printer_ -> pageRect();
QRect diagram_rect = diagram -> border().toRect();
QRect diagram_rect = diagramRect(diagram);
int h_pages_count = int(ceil(qreal(diagram_rect.width()) / qreal(printable_area.width())));
return(h_pages_count);
@@ -149,7 +162,7 @@ int DiagramPrintDialog::horizontalPagesCount(Diagram *diagram, bool fullpage) co
int DiagramPrintDialog::verticalPagesCount(Diagram *diagram, bool fullpage) const {
// note : pageRect et Paper Rect tiennent compte de l'orientation du papier
QRect printable_area = fullpage ? printer_ -> paperRect() : printer_ -> pageRect();
QRect diagram_rect = diagram -> border().toRect();
QRect diagram_rect = diagramRect(diagram);
int v_pages_count = int(ceil(qreal(diagram_rect.height()) / qreal(printable_area.height())));
return(v_pages_count);
@@ -349,10 +362,10 @@ void DiagramPrintDialog::printDiagram(Diagram *diagram, bool fit_page, QPainter
if (fit_page) {
// impression adaptee sur une seule page
diagram -> render(qp, QRectF(), diagram -> border(), Qt::KeepAspectRatio);
diagram -> render(qp, QRectF(), diagramRect(diagram), Qt::KeepAspectRatio);
} else {
// impression sur une ou plusieurs pages
QRect diagram_rect = diagram -> border().adjusted(0.0, 0.0, 1.0, 1.0).toAlignedRect();
QRect diagram_rect = diagramRect(diagram);
QRect printed_area = full_page ? printer -> paperRect() : printer -> pageRect();
//qDebug() << "impression sur une ou plusieurs pages";
//qDebug() << " schema :" << diagram_rect;

View File

@@ -40,6 +40,7 @@ class DiagramPrintDialog : public QWidget {
QString fileName() const;
void setDocName(const QString &);
QString docName() const;
QRect diagramRect(Diagram *) const;
int pagesCount(Diagram *, bool = false) const;
int horizontalPagesCount(Diagram *, bool = false) const;
int verticalPagesCount(Diagram *, bool = false) const;