Drawbox points sorting for XML implemented
This commit is contained in:
@ -1,6 +1,10 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<classpath>
|
<classpath>
|
||||||
<classpathentry kind="src" path="src"/>
|
<classpathentry kind="src" path="src"/>
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk-17.0.7.7-hotspot"/>
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk-19">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="module" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
<classpathentry kind="output" path="bin"/>
|
<classpathentry kind="output" path="bin"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|||||||
@ -87,19 +87,7 @@ public class DrawboxEditor extends Editable {
|
|||||||
Point p = new Point(e.getX(), e.getY());
|
Point p = new Point(e.getX(), e.getY());
|
||||||
drawboxPoints.add(p);
|
drawboxPoints.add(p);
|
||||||
if(drawboxPoints.size() == 4) {
|
if(drawboxPoints.size() == 4) {
|
||||||
Point baseStart = drawboxPoints.get(0),
|
sortingDrawboxPoints();
|
||||||
baseEnd = drawboxPoints.get(1);
|
|
||||||
for(Point pseudo: drawboxPoints) { // если не будет цикла в цикле - не выйдет сравнить всех со всеми
|
|
||||||
for(Point vertex: drawboxPoints) { // что приведёт к артефактам построения основания
|
|
||||||
if(vertex != baseStart && vertex != baseEnd) {
|
|
||||||
if(vertex.y >= baseStart.y) baseStart = vertex;
|
|
||||||
else if(vertex.y >= baseEnd.y) baseEnd = vertex;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
basePoints.add(baseStart);
|
|
||||||
basePoints.add(baseEnd);
|
|
||||||
|
|
||||||
saveDataInEntity();
|
saveDataInEntity();
|
||||||
//при выборе 4-й точки и формировании данных drawbox, уведомляем всех подписчит
|
//при выборе 4-й точки и формировании данных drawbox, уведомляем всех подписчит
|
||||||
if(listeners!=null) {
|
if(listeners!=null) {
|
||||||
@ -116,16 +104,24 @@ public class DrawboxEditor extends Editable {
|
|||||||
* но на данном этапе на всякий случай стоит так поступить*/
|
* но на данном этапе на всякий случай стоит так поступить*/
|
||||||
private void sortingDrawboxPoints() {
|
private void sortingDrawboxPoints() {
|
||||||
//окей, это написано плохо, но... Похуй, пляшем)
|
//окей, это написано плохо, но... Похуй, пляшем)
|
||||||
for(int i = 0; i<3; i++) {
|
Collections.sort(
|
||||||
Point leftTopPoint = drawboxPoints.get(i);
|
drawboxPoints,
|
||||||
for(int j = i+1; j<4; j++) {
|
(point1, point2) -> Float.compare(point1.y, point2.y)
|
||||||
if((leftTopPoint.x>drawboxPoints.get(j).x)&&(leftTopPoint.y>drawboxPoints.get(j).y)) {
|
);
|
||||||
Collections.swap(drawboxPoints, 0, j);
|
if(drawboxPoints.get(0).x>drawboxPoints.get(1).x) {
|
||||||
|
Collections.swap(drawboxPoints, 0, 1);
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if(drawboxPoints.get(2).x<drawboxPoints.get(3).x) {
|
||||||
|
Collections.swap(drawboxPoints, 2, 3);
|
||||||
|
}
|
||||||
|
/*Багтест, проверка очередности построения точек
|
||||||
|
*
|
||||||
|
* System.out.println("_______________");
|
||||||
|
int i = 0;
|
||||||
|
for (Point point : drawboxPoints) {
|
||||||
|
System.out.println("Point["+i+"]: ("+point.x+" ; "+point.y+");");
|
||||||
|
i++;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -333,7 +333,11 @@ public class Project implements Iterable<Entity>, EntityDrawboxChangedListener {
|
|||||||
public List<Entity> getListEntity() {
|
public List<Entity> getListEntity() {
|
||||||
return listEntity;
|
return listEntity;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* Получение события при отрисовке нового Drawbox, для изменения XML-дерева.
|
||||||
|
* Объект event хранит в себе ссылку на новый объект drawbox и объект entity, для которой он был создан.
|
||||||
|
* Необходимо из Entity получить имя сущности и в XML-дереве изменить данные drawbox-а, используя функцию toString.
|
||||||
|
* */
|
||||||
@Override
|
@Override
|
||||||
public void getEvent(EntityDrawboxChangedEvent event) {
|
public void getEvent(EntityDrawboxChangedEvent event) {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
|
|||||||
Reference in New Issue
Block a user