|
From: <chr...@us...> - 2009-12-16 17:04:59
|
Revision: 5565
http://fudaa.svn.sourceforge.net/fudaa/?rev=5565&view=rev
Author: chrisc83
Date: 2009-12-16 17:04:46 +0000 (Wed, 16 Dec 2009)
Log Message:
-----------
Modified Paths:
--------------
trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java
trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZEbliCalquePanelController.java
trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/edition/BPaletteEdition.java
Modified: trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java
===================================================================
--- trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java 2009-12-15 16:35:08 UTC (rev 5564)
+++ trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java 2009-12-16 17:04:46 UTC (rev 5565)
@@ -214,9 +214,9 @@
}
public boolean changeSelection(final GrPoint _pt, final int _tolerancePixel, final int _action) {
- //TODO Voir si l'action doit se faire en mode atomique (comme mnt) ou dans tout mode diff\xE9rent du mode normal.
+ //TODO (Normalement r\xE9solu) Voir si l'action doit se faire en mode atomique ou dans tout mode diff\xE9rent du mode normal (comme mnt).
// if (isAtomicMode_) {
- if (this.mode == SelectionMode.Atomic) {
+ if (this.mode != SelectionMode.Normal) {
final EbliListeSelectionMulti l = selectionMulti(_pt, _tolerancePixel);
changeSelectionMulti(l, _action);
if ((l == null) || (l.isEmpty())) {
@@ -629,9 +629,9 @@
final GrBoite _clipReel) {
if (isSelectionEmpty()) return;
- //TODO Voir si l'action doit se faire en mode atomique (comme mnt) ou dans tout mode diff\xE9rent du mode normal.
+ //TODO (Normalement r\xE9solu) Voir si l'action doit se faire en mode atomique ou dans tout mode diff\xE9rent du mode normal (comme mnt).
// if (isAtomicMode_) {
- if (this.mode == SelectionMode.Atomic) {
+ if (this.mode != SelectionMode.Normal) {
CtuluListSelection containers=new CtuluListSelection(selectionMulti_.getIdxSelection());
paintSelectionSimple(_g, _trace, _versEcran, _clipReel, containers);
paintSelectionMulti(_g, _trace, _versEcran, _clipReel);
@@ -845,6 +845,9 @@
for (int i = modele_.getNbLigneBrisee() - 1; i >= 0; i--) {
modele_.getDomaineForGeometry(i, btLigne);
if (btLigne.contientXY(_pt) || btLigne.distanceXY(_pt) < distanceReel) {
+
+ if (this.mode == SelectionMode.Atomic)
+ {
for (int j = modele_.getNbPointForGeometry(i) - 1; j >= 0; j--) {
modele_.point(p, i, j);
if (bClip.contientXY(p) && (p.distanceXY(_pt) < distanceReel)) {
@@ -853,6 +856,46 @@
return r;
}
}
+ }
+ else
+ {
+ GrPoint pt1 = new GrPoint();
+ GrPoint pt2 = new GrPoint();
+
+ for (int j = modele_.getNbPointForGeometry(i) - 2; j >= 0; j--) {
+ // TODO L'algo peut bugger si le 2 points de la ligne ont les m\xEAme coordonn\xE9es.
+ modele_.point(pt1, i, j + 1);
+ modele_.point(pt2, i, j);
+
+ double dx = Math.abs((pt1.x_ - pt2.x_));
+ double dy = Math.abs((pt1.y_ - pt2.y_));
+
+ boolean useX = dx >= dy;
+
+ double a = useX ? ((pt1.y_ - pt2.y_) / (pt1.x_ - pt2.x_)) : ((pt1.x_ - pt2.x_) / (pt1.y_ - pt2.y_));
+ double b = useX ? (pt1.y_ - (a * pt1.x_)) : (pt1.x_ - (a * pt1.y_));
+
+ if (useX)
+ {
+ p.x_ = _pt.x_;
+ p.y_ = (a * p.x_) + b;
+ }
+ else
+ {
+ p.y_ = _pt.y_;
+ p.x_ = (a * p.y_) + b;
+ }
+
+ if (bClip.contientXY(p) && (p.distanceXY(_pt) < distanceReel)) {
+ final EbliListeSelectionMulti r = new EbliListeSelectionMulti(2);
+ r.set(i, j + 1);
+ r.add(i, j);
+ return r;
+ }
+ }
+ }
+
+
}
}
return null;
Modified: trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZEbliCalquePanelController.java
===================================================================
--- trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZEbliCalquePanelController.java 2009-12-15 16:35:08 UTC (rev 5564)
+++ trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZEbliCalquePanelController.java 2009-12-16 17:04:46 UTC (rev 5565)
@@ -739,12 +739,19 @@
if (txt == null) {
txt = CtuluLibString.EMPTY_STRING;
}
- // if (cqActif_ instanceof ZCalqueLigneBrisee && ((ZCalqueLigneBrisee) cqActif_).isAtomicMode()) {
- //TODO Voir si l'action se fait qu'en mode atomique (comme mnt) ou dans tout mode diff\xE9rent du mode normal.
- if (pn_.getScene().getCalqueActif() instanceof ZCalqueLigneBrisee
-// && ((ZCalqueLigneBrisee) pn_.getScene().getCalqueActif()).isAtomicMode()) {
- && (((ZCalqueLigneBrisee) pn_.getScene().getCalqueActif()).getSelectionMode() == SelectionMode.Atomic)) {
- txt = "<u>" + EbliLib.getS("SOMMET") + "</u>: " + txt;
+ //TODO Voir si modif correct et traduire SEGMENT.
+ if (pn_.getScene().getCalqueActif() instanceof ZCalqueLigneBrisee)
+ {
+ SelectionMode mode = ((ZCalqueLigneBrisee)pn_.getScene().getCalqueActif()).getSelectionMode();
+
+ if (mode == SelectionMode.Atomic)
+ {
+ txt = "<u>" + EbliLib.getS("SOMMET") + "</u>: " + txt;
+ }
+ else if (mode == SelectionMode.Segement)
+ {
+ txt = "<u>" + EbliLib.getS("SEGMENT") + "</u>: " + txt;
+ }
}
pn_.setModeText(txt);
}
Modified: trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/edition/BPaletteEdition.java
===================================================================
--- trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/edition/BPaletteEdition.java 2009-12-15 16:35:08 UTC (rev 5564)
+++ trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/edition/BPaletteEdition.java 2009-12-16 17:04:46 UTC (rev 5565)
@@ -216,6 +216,7 @@
bt.setActionCommand(ATOM_ACTION);
bt.setIcon(EbliResource.EBLI.getToolIcon("draw-atom"));
bt.setToolTipText(EbliLib.getS("Mode <SOMMET>"));
+ decoreButton(bt);
bt.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
@@ -229,13 +230,13 @@
}
}
});
- decoreButton(bt);
_target.add(bt);
bt = new BuToolToggleButton();
bt.setActionCommand(SEGMENT_ACTION);
bt.setIcon(EbliResource.EBLI.getToolIcon("draw-atom"));
bt.setToolTipText(EbliLib.getS("Mode <SEGMENT>"));
+ decoreButton(bt);
bt.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
@@ -249,7 +250,6 @@
}
}
});
- decoreButton(bt);
_target.add(bt);
/*
* bt = new BuToolToggleButton(); bt.setActionCommand("MODE_EDIT");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|