List of usage examples for com.badlogic.gdx.tools.texturepacker TexturePacker addImage
public void addImage(File file)
From source file:com.o2d.pkayjava.editor.proxy.ProjectManager.java
License:Apache License
public void importSpriteAnimationsIntoProject(final Array<FileHandle> fileHandles, ProgressHandler progressHandler) { if (fileHandles == null) { return;/* www. j av a 2 s. c om*/ } handler = progressHandler; ExecutorService executor = Executors.newSingleThreadExecutor(); executor.execute(() -> { String newAnimName = null; String rawFileName = fileHandles.get(0).name(); String fileExtension = FilenameUtils.getExtension(rawFileName); if (fileExtension.equals("png")) { Settings settings = new Settings(); settings.square = true; settings.flattenPaths = true; TexturePacker texturePacker = new TexturePacker(settings); FileHandle pngsDir = new FileHandle(fileHandles.get(0).parent().path()); for (FileHandle entry : pngsDir.list(Overlap2DUtils.PNG_FILTER)) { texturePacker.addImage(entry.file()); } String fileNameWithoutExt = FilenameUtils.removeExtension(rawFileName); String fileNameWithoutFrame = fileNameWithoutExt.replaceAll("\\d*$", ""); String targetPath = currentWorkingPath + "/" + currentProjectVO.projectName + "/assets/orig/sprite-animations" + File.separator + fileNameWithoutFrame; File targetDir = new File(targetPath); if (targetDir.exists()) { try { FileUtils.deleteDirectory(targetDir); } catch (IOException e) { e.printStackTrace(); } } texturePacker.pack(targetDir, fileNameWithoutFrame); newAnimName = fileNameWithoutFrame; } else { for (FileHandle fileHandle : fileHandles) { try { Array<File> imgs = getAtlasPages(fileHandle); String fileNameWithoutExt = FilenameUtils.removeExtension(fileHandle.name()); String targetPath = currentWorkingPath + "/" + currentProjectVO.projectName + "/assets/orig/sprite-animations" + File.separator + fileNameWithoutExt; File targetDir = new File(targetPath); if (targetDir.exists()) { FileUtils.deleteDirectory(targetDir); } for (File img : imgs) { FileUtils.copyFileToDirectory(img, targetDir); } FileUtils.copyFileToDirectory(fileHandle.file(), targetDir); newAnimName = fileNameWithoutExt; } catch (IOException e) { e.printStackTrace(); } } } if (newAnimName != null) { ResolutionManager resolutionManager = facade.retrieveProxy(ResolutionManager.NAME); resolutionManager.resizeSpriteAnimationForAllResolutions(newAnimName, currentProjectInfoVO); } }); executor.execute(() -> { changePercentBy(100 - currentPercent); try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } handler.progressComplete(); }); executor.shutdown(); }
From source file:com.o2d.pkayjava.editor.proxy.ResolutionManager.java
License:Apache License
public void rePackProjectImages(ResolutionEntryVO resEntry) { ProjectManager projectManager = facade.retrieveProxy(ProjectManager.NAME); TexturePacker.Settings settings = new TexturePacker.Settings(); settings.flattenPaths = true;/*from w w w . ja va2s . com*/ // settings.maxHeight = getMinSquareNum(resEntry.height); // settings.maxWidth = getMinSquareNum(resEntry.height); settings.maxHeight = Integer.parseInt(projectManager.getCurrentProjectVO().texturepackerHeight); settings.maxWidth = Integer.parseInt(projectManager.getCurrentProjectVO().texturepackerWidth); settings.filterMag = Texture.TextureFilter.Linear; settings.filterMin = Texture.TextureFilter.Linear; TexturePacker tp = new TexturePacker(settings); String sourcePath = projectManager.getCurrentWorkingPath() + "/" + projectManager.getCurrentProjectVO().projectName + "/assets/" + resEntry.name + "/images"; String outputPath = projectManager.getCurrentWorkingPath() + "/" + projectManager.getCurrentProjectVO().projectName + "/assets/" + resEntry.name + "/pack"; FileHandle sourceDir = new FileHandle(sourcePath); File outputDir = new File(outputPath); try { FileUtils.forceMkdir(outputDir); FileUtils.cleanDirectory(outputDir); } catch (IOException e) { e.printStackTrace(); } for (FileHandle entry : sourceDir.list()) { String filename = entry.file().getName(); String extension = filename.substring(filename.lastIndexOf(".") + 1, filename.length()).toLowerCase(); if (extension.equals("png")) { tp.addImage(entry.file()); } } tp.pack(outputDir, "pack"); }
From source file:com.uwsoft.editor.controlles.ResolutionManager.java
License:Apache License
public void rePackProjectImages(ResolutionEntryVO resEntry) { TexturePacker.Settings settings = new TexturePacker.Settings(); settings.flattenPaths = true;//from w ww . j av a2 s . c om // settings.maxHeight = getMinSquareNum(resEntry.height); // settings.maxWidth = getMinSquareNum(resEntry.height); settings.maxHeight = Integer.parseInt(dataManager.getCurrentProjectVO().texturepackerHeight); settings.maxWidth = Integer.parseInt(dataManager.getCurrentProjectVO().texturepackerWidth); settings.filterMag = Texture.TextureFilter.Linear; settings.filterMin = Texture.TextureFilter.Linear; TexturePacker tp = new TexturePacker(settings); String sourcePath = dataManager.getCurrentWorkingPath() + "/" + dataManager.getCurrentProjectVO().projectName + "/assets/" + resEntry.name + "/images"; String outputPath = dataManager.getCurrentWorkingPath() + "/" + dataManager.getCurrentProjectVO().projectName + "/assets/" + resEntry.name + "/pack"; FileHandle sourceDir = new FileHandle(sourcePath); File outputDir = new File(outputPath); try { FileUtils.forceMkdir(outputDir); FileUtils.cleanDirectory(outputDir); } catch (IOException e) { e.printStackTrace(); } for (FileHandle entry : sourceDir.list()) { String filename = entry.file().getName(); String extension = filename.substring(filename.lastIndexOf(".") + 1, filename.length()).toLowerCase(); if (extension.equals("png")) { tp.addImage(entry.file()); } } tp.pack(outputDir, "pack"); }
From source file:com.uwsoft.editor.data.manager.DataManager.java
License:Apache License
public void importExternalSpriteAnimationsIntoProject(final ArrayList<File> files, ProgressHandler progressHandler) { if (files.size() == 0) { return;// w w w . j av a2s . c o m } handler = progressHandler; ExecutorService executor = Executors.newSingleThreadExecutor(); executor.execute(new Runnable() { @Override public void run() { String newAnimName = null; String rawFileName = files.get(0).getName(); String fileExtension = FilenameUtils.getExtension(rawFileName); if (fileExtension.equals("png")) { Settings settings = new Settings(); settings.square = true; settings.flattenPaths = true; TexturePacker texturePacker = new TexturePacker(settings); FileHandle pngsDir = new FileHandle(files.get(0).getParentFile().getAbsolutePath()); for (FileHandle entry : pngsDir.list(new PngFilenameFilter())) { texturePacker.addImage(entry.file()); } String fileNameWithoutExt = FilenameUtils.removeExtension(rawFileName); String fileNameWithoutFrame = fileNameWithoutExt.replaceAll("\\d*$", ""); String targetPath = currentWorkingPath + "/" + currentProjectVO.projectName + "/assets/orig/sprite-animations" + File.separator + fileNameWithoutFrame; File targetDir = new File(targetPath); if (targetDir.exists()) { try { FileUtils.deleteDirectory(targetDir); } catch (IOException e) { e.printStackTrace(); } } texturePacker.pack(targetDir, fileNameWithoutFrame); newAnimName = fileNameWithoutFrame; } else { for (File file : files) { try { ArrayList<File> imgs = getAtlasPages(file); String fileNameWithoutExt = FilenameUtils.removeExtension(file.getName()); String targetPath = currentWorkingPath + "/" + currentProjectVO.projectName + "/assets/orig/sprite-animations" + File.separator + fileNameWithoutExt; File targetDir = new File(targetPath); if (targetDir.exists()) { FileUtils.deleteDirectory(targetDir); } for (File img : imgs) { FileUtils.copyFileToDirectory(img, targetDir); } FileUtils.copyFileToDirectory(file, targetDir); newAnimName = fileNameWithoutExt; } catch (IOException e) { e.printStackTrace(); } } } if (newAnimName != null) { resolutionManager.resizeSpriteAnimationForAllResolutions(newAnimName, currentProjectInfoVO); } } }); executor.execute(new Runnable() { @Override public void run() { changePercentBy(100 - currentPercent); try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } handler.progressComplete(); } }); executor.shutdown(); }
From source file:phasereditor.atlas.core.internal.libgdx.LibGDXTexturePackerLauncher.java
License:Open Source License
@SuppressWarnings("static-method") public void pack() throws Exception { Settings settings = new TexturePacker.Settings(); // settings.maxWidth = 60; // settings.maxHeight = 60; settings.pot = false;//from w w w .j a v a2 s .co m settings.stripWhitespaceX = true; settings.stripWhitespaceY = true; settings.paddingX = 30; settings.paddingY = 30; settings.edgePadding = true; File dir = new File("C:/Users/arian/Documents/Source/Phaser Editor/Documents/Test/Trim/"); File[] inputFiles = new File[] { new File(dir, "Circle.png"), new File(dir, "Rect.png") }; // Sort input files by name to avoid platform-dependent atlas output // changes. Arrays.sort(inputFiles, new Comparator<File>() { @Override public int compare(File file1, File file2) { return file1.getName().compareTo(file2.getName()); } }); TexturePacker packer = new TexturePacker(settings); for (File file : inputFiles) { packer.addImage(file); } File gdxDir = new File(dir, "libgdx"); packer.pack(gdxDir, "output"); TextureAtlasData data = new TextureAtlasData(new FileHandle(new File(gdxDir, "output.atlas")), new FileHandle(gdxDir), false); for (Page page : data.getPages()) { out.println(page.textureFile.name()); } for (Region r : data.getRegions()) { out.println(r.page.textureFile.name()); out.println(r.name); } // processor.process(new File(input), new File(output)); }
From source file:phasereditor.atlas.ui.editors.AtlasGeneratorEditor.java
License:Open Source License
void build(boolean dirty, Runnable whenDone) { if (_model == null) { return;/*w w w . jav a 2 s. c o m*/ } _guessLastOutputFiles = _model.guessOutputFiles(); if (dirty) { dirtify(); } Job job = new Job("Build atlas '" + _model.getFile().getName() + "'") { @Override protected IStatus run(IProgressMonitor monitor) { monitor.beginTask("Building atlas '" + _model.getFile().getName() + "'", 2); // build new atlas SettingsBean settings = _model.getSettings(); TexturePacker packer = new TexturePacker(settings); List<IFile> missingFiles = new ArrayList<>(); for (IFile wsFile : _model.getImageFiles()) { File file = eclipseFileToJavaPath(wsFile).toFile(); if (file.exists() && file.isFile()) { packer.addImage(file); } else { missingFiles.add(wsFile); } } if (!missingFiles.isEmpty()) { Shell shell = getSite().getShell(); AtomicBoolean confirm = new AtomicBoolean(false); shell.getDisplay().syncExec(new Runnable() { @Override public void run() { StringBuilder sb = new StringBuilder(); for (IFile f : missingFiles) { sb.append(" " + f.getName() + "\n"); } if (MessageDialog.openConfirm(shell, "Atlas Build", String.format( "The following source images do not exist. Do you want to ignore them?\n\n%s", sb))) { confirm.set(true); } } }); if (!confirm.get()) { return Status.CANCEL_STATUS; } _model.getImageFiles().removeAll(missingFiles); } monitor.worked(1); File tempDir = null; try { // create atlas files in temporal folder tempDir = Files.createTempDirectory("PhaserEditor_Atlas_").toFile(); String atlasName = _model.getAtlasName(); packer.pack(tempDir, atlasName); // read generated atlas file File libgdxAtlasFile = new File(tempDir, atlasName + ".atlas"); out.println("Temporal atlas file " + libgdxAtlasFile); out.println(new String(Files.readAllBytes(libgdxAtlasFile.toPath()))); TextureAtlasData data = new TextureAtlasData(new FileHandle(libgdxAtlasFile), new FileHandle(tempDir), false); // create result model Result oldResult = _result; _result = new Result(); ImageLoader loader = new ImageLoader(); Array<Region> regions = data.getRegions(); _frameRegionNameMap = new HashMap<>(); for (TextureAtlasData.Page page : data.getPages()) { File textureFile = page.textureFile.file(); ImageData[] imgData = loader.load(textureFile.getAbsolutePath()); Image img = new Image(Display.getDefault(), imgData[0]); ResultPage resultPage = new ResultPage(); resultPage.setImage(img); for (Region region : regions) { if (region.page == page) { AtlasFrame frame = new AtlasFrame(); String regionName = region.name; if (region.index != -1) { regionName += "_" + region.index; } frame.setName(PhaserEditorUI.getNameFromFilename(regionName)); frame.setFrameX(region.left); frame.setFrameY(region.top); frame.setFrameW(region.width); frame.setFrameH(region.height); // todo: only if trimmed! frame.setSpriteX((int) (region.offsetX)); // this happens when white spaces are stripped! if (region.offsetY != 0) { // LibGDX uses the OpenGL Y order (from // bottom to top) frame.setSpriteY( (int) (region.originalHeight - region.offsetY - region.height)); } frame.setSpriteW(region.width); frame.setSpriteH(region.height); frame.setSourceW(region.originalWidth); frame.setSourceH(region.originalHeight); resultPage.addFrame(frame, regionName, region.index); _frameRegionNameMap.put(frame, regionName); } } if (settings.useIndexes) { resultPage.sortByIndexes(); } _result.getPages().add(resultPage); } // create editor model List<EditorPage> editorPages = new ArrayList<>(); for (ResultPage resultPage : _result.getPages()) { { out.println("page " + resultPage.getImage().getBounds()); } EditorPage editorPage = new EditorPage(); editorPage.addAll(resultPage.getFrames()); editorPages.add(editorPage); } _model.setPages(editorPages); monitor.worked(1); // update editor swtRun(new Runnable() { @Override public void run() { postBuild(_result); try { if (oldResult != null) { oldResult.dispose(); } } catch (Exception e) { e.printStackTrace(); } if (whenDone != null) { whenDone.run(); } } }); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } catch (Exception e) { e.printStackTrace(); swtRun(new Runnable() { @Override public void run() { MessageDialog.openError(getEditorSite().getShell(), "Build Atlas", e.getMessage()); openSettingsDialog(); } }); } finally { try { // delete temporal files if (tempDir != null) { for (File f : tempDir.listFiles()) { f.delete(); } tempDir.delete(); } } catch (Exception e) { e.printStackTrace(); } } return Status.OK_STATUS; } }; job.setUser(true); job.schedule(); }