Amelioration de la gestion de la grille en fonction du zoom utilise

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@110 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavierqet
2007-09-04 18:15:41 +00:00
parent d3ef7a5f02
commit b47dea1460
5 changed files with 35 additions and 3 deletions

View File

@@ -94,7 +94,7 @@ void BorderInset::draw(QPainter *qp, qreal x, qreal y) {
qp -> drawText(inset_date, Qt::AlignVCenter | Qt::AlignLeft, tr(" Date : ") + bi_date.toString("dd/MM/yyyy")); qp -> drawText(inset_date, Qt::AlignVCenter | Qt::AlignLeft, tr(" Date : ") + bi_date.toString("dd/MM/yyyy"));
qp -> drawRect(inset_title); qp -> drawRect(inset_title);
qp -> drawText(inset_title, Qt::AlignVCenter | Qt::AlignCenter, tr("Titre du document: ") + bi_title); qp -> drawText(inset_title, Qt::AlignVCenter | Qt::AlignCenter, tr("Titre du document : ") + bi_title);
qp -> drawRect(inset_file); qp -> drawRect(inset_file);
qp -> drawText(inset_file, Qt::AlignVCenter | Qt::AlignLeft, tr(" Fichier : ") + bi_filename); qp -> drawText(inset_file, Qt::AlignVCenter | Qt::AlignLeft, tr(" Fichier : ") + bi_filename);

View File

@@ -168,7 +168,13 @@ void Conducer::priv_modifieConducer(const QPointF &p1, QET::Orientation, const Q
// en deduit les coefficients de "redimensionnement" // en deduit les coefficients de "redimensionnement"
qreal coeff_x = new_dist_2_terminals_x / orig_dist_2_terms_x; qreal coeff_x = new_dist_2_terminals_x / orig_dist_2_terms_x;
qreal coeff_y = new_dist_2_terminals_y / orig_dist_2_terms_y; qreal coeff_y = new_dist_2_terminals_y / orig_dist_2_terms_y;
/*
if (!orig_dist_2_terms_x || !orig_dist_2_terms_y) {
qDebug() << "ca va planter";
PR(coeff_x)
PR(coeff_y)
}
*/
// genere les nouveaux points // genere les nouveaux points
int limite = moves_x.size() - 1; int limite = moves_x.size() - 1;
int coeff = type_trajet_x ? 1 : -1; int coeff = type_trajet_x ? 1 : -1;

View File

@@ -47,7 +47,7 @@ void Diagram::drawBackground(QPainter *p, const QRectF &r) {
p -> setBrush(Qt::white); p -> setBrush(Qt::white);
p -> drawRect(r); p -> drawRect(r);
if (draw_grid && r.width() < 2500 && r.height() < 2500) { if (draw_grid) {
// dessine les points de la grille // dessine les points de la grille
p -> setPen(Qt::black); p -> setPen(Qt::black);
p -> setBrush(Qt::NoBrush); p -> setBrush(Qt::NoBrush);

View File

@@ -222,6 +222,7 @@ void DiagramView::setSelectionMode() {
*/ */
void DiagramView::zoomPlus() { void DiagramView::zoomPlus() {
scale(4.0/3.0, 4.0/3.0); scale(4.0/3.0, 4.0/3.0);
adjustGridToZoom();
} }
/** /**
@@ -229,6 +230,7 @@ void DiagramView::zoomPlus() {
*/ */
void DiagramView::zoomMoins() { void DiagramView::zoomMoins() {
scale(0.75, 0.75); scale(0.75, 0.75);
adjustGridToZoom();
} }
/** /**
@@ -243,6 +245,7 @@ void DiagramView::zoomFit() {
} }
adjustSceneRect(); adjustSceneRect();
fitInView(sceneRect(), Qt::KeepAspectRatio); fitInView(sceneRect(), Qt::KeepAspectRatio);
adjustGridToZoom();
} }
/** /**
@@ -250,6 +253,7 @@ void DiagramView::zoomFit() {
*/ */
void DiagramView::zoomReset() { void DiagramView::zoomReset() {
resetMatrix(); resetMatrix();
adjustGridToZoom();
} }
/** /**
@@ -597,3 +601,23 @@ void DiagramView::adjustSceneRect() {
// ajuste la sceneRect // ajuste la sceneRect
setSceneRect(elements_bounding_rect.united(border_bounding_rect)); setSceneRect(elements_bounding_rect.united(border_bounding_rect));
} }
void DiagramView::adjustGridToZoom() {
QRectF viewed_scene = viewedSceneRect();
scene -> setDisplayGrid(viewed_scene.width() < 2000 || viewed_scene.height() < 2000);
}
QRectF DiagramView::viewedSceneRect() const {
// recupere la taille du widget viewport
QSize viewport_size = viewport() -> size();
// recupere la transformation viewport -> scene
QTransform view_to_scene = viewportTransform().inverted();
// mappe le coin superieur gauche et le coin inferieur droit de la viewport sur la scene
QPointF scene_left_top = view_to_scene.map(QPointF(0.0, 0.0));
QPointF scene_right_bottom = view_to_scene.map(QPointF(viewport_size.width(), viewport_size.height()));
// en deduit le rectangle visualise par la scene
return(QRectF(scene_left_top, scene_right_bottom));
}

View File

@@ -50,6 +50,7 @@ class DiagramView : public QGraphicsView {
void dragLeaveEvent(QDragLeaveEvent *); void dragLeaveEvent(QDragLeaveEvent *);
void dragMoveEvent(QDragMoveEvent *); void dragMoveEvent(QDragMoveEvent *);
void dropEvent(QDropEvent *); void dropEvent(QDropEvent *);
QRectF viewedSceneRect() const;
signals: signals:
void selectionChanged(); void selectionChanged();
@@ -75,5 +76,6 @@ class DiagramView : public QGraphicsView {
private slots: private slots:
void flushGarbage(); void flushGarbage();
void slot_selectionChanged(); void slot_selectionChanged();
void adjustGridToZoom();
}; };
#endif #endif