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"?> <?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>

View File

@ -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++;
}*/
} }

View File

@ -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