package org.gba.spritely.imgsrc;
import java.awt.image.BufferedImage;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import org.gba.spritely.Spritely;
import org.gba.spritely.processing.ImageProcessing;
import org.gba.spritely.sitescrapers.OpenClipartScraper;
public class OpenClipart {
public static List<BufferedImage> searchOC(Spritely s) {
List<BufferedImage> urls = new LinkedList<BufferedImage>();
int roundSize = 1;
List<String> fresh_urls = OpenClipartScraper.findClipart(s.query, 0, roundSize);
if(s.pickRandom){
Collections.shuffle(fresh_urls);
}
int round = 0;
while (urls.size() < s.imagesPerSource) {
if(Spritely.verbose)
System.out.println("Searching OpenClipart... " + fresh_urls.size() + " images found...");
LinkedList<BufferedImage> results = new LinkedList<BufferedImage>();
for (String url : fresh_urls) {
if (urls.size() > s.imagesPerSource)
break;
BufferedImage img = ImageProcessing.isBorderless(url, false);
if (img == null)
continue;
img = ImageProcessing.reduceBackground(
ImageProcessing.shrink(img, 96, 96), true);
img = ImageProcessing.isSingular(img);
if (img == null)
continue;
urls.add(img);
}
round++;
if (urls.size() < s.imagesPerSource) {
fresh_urls = OpenClipartScraper.findClipart(s.query, round * roundSize,
(round + 1) * roundSize);
if (fresh_urls.size() == 0) {
return urls;
}
}
}
if (Spritely.verbose) {
System.out.println("OpenClipart found " + urls.size() + " images");
}
while (urls.size() > s.imagesPerSource)
urls.remove(urls.size() - 1);
return urls;
}
}