上传备份

master
王兵 2 weeks ago
parent e55dc76a87
commit eed73bfe88

@ -12,7 +12,6 @@ import org.sikuli.script.Mouse;
import org.sikuli.script.Pattern;
import org.sikuli.script.Region;
import org.sikuli.script.Screen;
import xyz.wbsite.jmacro.base.ColorLocation;
import xyz.wbsite.jmacro.base.Legend;
import xyz.wbsite.jmacro.util.Logger;
import xyz.wbsite.jmacro.util.MousePathUtil;
@ -398,6 +397,24 @@ public abstract class JMacro {
return new Region(match.getRect());
}
/**
*
*
* @param region
* @param legend
* @param minSimilar
* @return
*/
public Region findLegend(Region region, String legend, double minSimilar) {
Pattern pattern = new Pattern(of(legend).getFile().getAbsolutePath())
.similar(minSimilar);
Match match = region.findBest(pattern);
if (match == null) {
return null;
}
return new Region(match.getRect());
}
/**
*
*
@ -419,6 +436,63 @@ public abstract class JMacro {
}, timeout, TimeUnit.SECONDS);
}
/**
* ,,null
* <p>
*
* 1.
* 2.
* 3.
*
*
*
* @param legends
* @param minSimilar
* @return
*/
public Region[] matchLegends(String[] legends, double minSimilar) {
Region[] viewRects = new Region[legends.length];
for (int i = 0; i < legends.length; i++) {
String legend = legends[i];
viewRects[i] = findLegend(legend, minSimilar);
if (viewRects[i] != null) {
return viewRects;
}
}
return viewRects;
}
/**
*
*
* @param legends
* @param minSimilar
* @param seconds
* @return
*/
public Region[] waitAndMatchLegends(String[] legends, double minSimilar, long seconds) {
if (legends.length == 0) {
return new Region[0];
}
Logger.info("等待并匹配图例组合:{}", String.join(",", legends));
Region[] result = TaskUtil.timeTask(() -> {
while (JMainService.getInstance().run) {
Region[] viewRects = matchLegends(legends, minSimilar);
for (Region viewRect : viewRects) {
if (viewRect != null) {
return viewRects;
}
}
}
return new Region[legends.length];
}, seconds, TimeUnit.SECONDS);
if (result == null) {
result = new Region[legends.length];
}
return result;
}
/**
*
*
@ -457,27 +531,6 @@ public abstract class JMacro {
return new Location(x + ox, y + oy);
}
/**
*
*
* @param relativePoint
* @return
*/
public Location of(Location relativePoint) {
return of(relativePoint.getX(), relativePoint.getY());
}
/**
*
*
* @return
*/
public ColorLocation of(int x, int y, String hexColor) {
int ox = getWorkRegion().getX();
int oy = getWorkRegion().getY();
return new ColorLocation(x + ox, y + oy, hexColor);
}
/**
*
*
@ -487,16 +540,6 @@ public abstract class JMacro {
return legends;
}
/**
*
*
* @param relativePoint
* @return
*/
public ColorLocation of(Location relativePoint, String hexColor) {
return of(relativePoint.getX(), relativePoint.getY(), hexColor);
}
/**
*
*

Loading…
Cancel
Save

Powered by TurnKey Linux.