package com.epam.jdi.uitests.gui.sikuli.elements.pageobjects.annotations; import com.epam.jdi.uitests.core.annotations.AnnotationsUtil; import com.epam.jdi.uitests.gui.GuiSettings; import com.epam.jdi.uitests.gui.sikuli.elements.CheckPageTypes; import com.epam.jdi.uitests.gui.sikuli.elements.composite.Page; import com.epam.jdi.uitests.gui.sikuli.elements.pageobjects.annotations.elements.JPage; import org.sikuli.script.Pattern; import java.awt.*; import static com.epam.jdi.uitests.gui.sikuli.elements.CheckPageTypes.*; import static com.epam.jdi.uitests.gui.sikuli.elements.enums.OffsetUnits.*; /** * Created by Natalia_Grebenshchikova on 1/14/2016. */ public class GuiAnnotationsUtil extends AnnotationsUtil { public static void fillPageFromAnnotation(Page element, JPage pageAnnotation, Class<?> parentClass) { String filePath = GuiSettings.imageRoot + pageAnnotation.fileLogoPath(); int X = pageAnnotation.rectangle()[0]; int Y = pageAnnotation.rectangle()[1]; int W = pageAnnotation.rectangle()[2]; int H = pageAnnotation.rectangle()[3]; Rectangle rectangle = new Rectangle(X, Y, W, H); double similarity = pageAnnotation.similarity(); CheckPageTypes checkPage = pageAnnotation.checkPage(); if (checkPage == NONE) checkPage = (checkPage != NONE) ? checkPage : EQUAL; element.updatePageData(filePath, checkPage, rectangle, X, Y, W, H, similarity); } public static Pattern getPattern(JLocation locator, JOffset offset) { if (locator == null) return null; Pattern pattern = new Pattern(GuiSettings.imageRoot + locator.filePath()); pattern = pattern.similar((float) locator.similarity()); if (offset != null) switch (offset.offsetUnit()) { case PIXELS: pattern.targetOffset(offset.xOffset(), offset.yOffset()); break; case PERCENTAGE: int x = (int) pattern.getImage().getSize().getWidth() * offset.xOffset() / 100; int y = (int) pattern.getImage().getSize().getHeight() * offset.yOffset() / 100; pattern.targetOffset(x, y); break; } return pattern; } public static String getFilePath(JLocation locator) { if (locator == null) return null; return GuiSettings.imageRoot + locator.filePath(); } public static double getSimilarity(JLocation location) { return location.similarity(); } public static int getX(JRegion region) { return region.rectangle()[0]; } public static int getY(JRegion region) { return region.rectangle()[1]; } public static int getWight(JRegion region) { return region.rectangle()[2]; } public static int getHeight(JRegion region) { return region.rectangle()[3]; } public static Rectangle getRectangle(JRegion region) { int[] arr = region.rectangle(); return new Rectangle(arr[0], arr[1], arr[2], arr[3]); } }