Drawbox points sorting for XML implemented

This commit is contained in:
2024-09-12 22:45:47 +03:00
parent 7f7937c652
commit 7d125b5931
3 changed files with 28 additions and 24 deletions

View File

@ -1,6 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<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"/>
</classpath>

View File

@ -87,19 +87,7 @@ public class DrawboxEditor extends Editable {
Point p = new Point(e.getX(), e.getY());
drawboxPoints.add(p);
if(drawboxPoints.size() == 4) {
Point baseStart = drawboxPoints.get(0),
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);
sortingDrawboxPoints();
saveDataInEntity();
//при выборе 4-й точки и формировании данных drawbox, уведомляем всех подписчит
if(listeners!=null) {
@ -116,16 +104,24 @@ public class DrawboxEditor extends Editable {
* но на данном этапе на всякий случай стоит так поступить*/
private void sortingDrawboxPoints() {
//окей, это написано плохо, но... Похуй, пляшем)
for(int i = 0; i<3; i++) {
Point leftTopPoint = drawboxPoints.get(i);
for(int j = i+1; j<4; j++) {
if((leftTopPoint.x>drawboxPoints.get(j).x)&&(leftTopPoint.y>drawboxPoints.get(j).y)) {
Collections.swap(drawboxPoints, 0, j);
}
Collections.sort(
drawboxPoints,
(point1, point2) -> Float.compare(point1.y, point2.y)
);
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++;
}*/
}

View File

@ -333,7 +333,11 @@ public class Project implements Iterable<Entity>, EntityDrawboxChangedListener {
public List<Entity> getListEntity() {
return listEntity;
}
/*
* Получение события при отрисовке нового Drawbox, для изменения XML-дерева.
* Объект event хранит в себе ссылку на новый объект drawbox и объект entity, для которой он был создан.
* Необходимо из Entity получить имя сущности и в XML-дереве изменить данные drawbox-а, используя функцию toString.
* */
@Override
public void getEvent(EntityDrawboxChangedEvent event) {
// TODO Auto-generated method stub