Java 类com.badlogic.gdx.tools.texturepacker.TexturePacker.Page 实例源码

项目:skin-composer    文件:MaxRectsPacker.java   
public Array<Page> pack (Array<Rect> inputRects) {
for (int i = 0, nn = inputRects.size; i < nn; i++) {
    Rect rect = inputRects.get(i);
    rect.width += settings.paddingX;
    rect.height += settings.paddingY;
}

if (settings.fast) {
    if (settings.rotation) {
        // Sort by longest side if rotation is enabled.
        sort.sort(inputRects, new Comparator<Rect>() {
            public int compare (Rect o1, Rect o2) {
                int n1 = o1.width > o1.height ? o1.width : o1.height;
                int n2 = o2.width > o2.height ? o2.width : o2.height;
                return n2 - n1;
            }
        });
    } else {
        // Sort only by width (largest to smallest) if rotation is disabled.
        sort.sort(inputRects, new Comparator<Rect>() {
项目:skin-composer    文件:MaxRectsPacker.java   
/** @param fully If true, the only results that pack all rects will be considered. If false, all results are considered, not
 *           all rects may be packed. */
private Page packAtSize (boolean fully, int width, int height, Array<Rect> inputRects) {
    Page bestResult = null;
    for (int i = 0, n = methods.length; i < n; i++) {
        maxRects.init(width, height);
        Page result;
        if (!settings.fast) {
            result = maxRects.pack(inputRects, methods[i]);
        } else {
            Array<Rect> remaining = new Array();
            for (int ii = 0, nn = inputRects.size; ii < nn; ii++) {
                Rect rect = inputRects.get(ii);
                if (maxRects.insert(rect, methods[i]) == null) {
                    while (ii < nn)
                        remaining.add(inputRects.get(ii++));
                }
            }
            result = maxRects.getResult();
            result.remainingRects = remaining;
        }
        if (fully && result.remainingRects.size > 0) continue;
        if (result.outputRects.size == 0) continue;
        bestResult = getBest(bestResult, result);
    }
    return bestResult;
}
项目:skin-composer    文件:GridPacker.java   
public Array<Page> pack (Array<Rect> inputRects) {
    if (!settings.silent) System.out.print("Packing");

    int cellWidth = 0, cellHeight = 0;
    for (int i = 0, nn = inputRects.size; i < nn; i++) {
        Rect rect = inputRects.get(i);
        cellWidth = Math.max(cellWidth, rect.width);
        cellHeight = Math.max(cellHeight, rect.height);
    }
    cellWidth += settings.paddingX;
    cellHeight += settings.paddingY;

    inputRects.reverse();

    Array<Page> pages = new Array();
    while (inputRects.size > 0) {
        Page result = packPage(inputRects, cellWidth, cellHeight);
        pages.add(result);
    }
    return pages;
}
项目:gdx-texture-packer-gui    文件:MaxRectsPacker.java   
public Array<Page> pack (Array<Rect> inputRects) {
for (int i = 0, nn = inputRects.size; i < nn; i++) {
    Rect rect = inputRects.get(i);
    rect.width += settings.paddingX;
    rect.height += settings.paddingY;
}

if (settings.fast) {
    if (settings.rotation) {
        // Sort by longest side if rotation is enabled.
        sort.sort(inputRects, new Comparator<Rect>() {
            public int compare (Rect o1, Rect o2) {
                int n1 = o1.width > o1.height ? o1.width : o1.height;
                int n2 = o2.width > o2.height ? o2.width : o2.height;
                return n2 - n1;
            }
        });
    } else {
        // Sort only by width (largest to smallest) if rotation is disabled.
        sort.sort(inputRects, new Comparator<Rect>() {
项目:gdx-texture-packer-gui    文件:MaxRectsPacker.java   
/** @param fully If true, the only results that pack all rects will be considered. If false, all results are considered, not
 *           all rects may be packed. */
private Page packAtSize (boolean fully, int width, int height, Array<Rect> inputRects) {
    Page bestResult = null;
    for (int i = 0, n = methods.length; i < n; i++) {
        maxRects.init(width, height);
        Page result;
        if (!settings.fast) {
            result = maxRects.pack(inputRects, methods[i]);
        } else {
            Array<Rect> remaining = new Array();
            for (int ii = 0, nn = inputRects.size; ii < nn; ii++) {
                Rect rect = inputRects.get(ii);
                if (maxRects.insert(rect, methods[i]) == null) {
                    while (ii < nn)
                        remaining.add(inputRects.get(ii++));
                }
            }
            result = maxRects.getResult();
            result.remainingRects = remaining;
        }
        if (fully && result.remainingRects.size > 0) continue;
        if (result.outputRects.size == 0) continue;
        bestResult = getBest(bestResult, result);
    }
    return bestResult;
}
项目:gdx-texture-packer-gui    文件:GridPacker.java   
public Array<Page> pack (Array<Rect> inputRects) {
    if (!settings.silent) System.out.print("Packing");

    int cellWidth = 0, cellHeight = 0;
    for (int i = 0, nn = inputRects.size; i < nn; i++) {
        Rect rect = inputRects.get(i);
        cellWidth = Math.max(cellWidth, rect.width);
        cellHeight = Math.max(cellHeight, rect.height);
    }
    cellWidth += settings.paddingX;
    cellHeight += settings.paddingY;

    inputRects.reverse();

    Array<Page> pages = new Array();
    while (inputRects.size > 0) {
        Page result = packPage(inputRects, cellWidth, cellHeight);
        pages.add(result);
    }
    return pages;
}
项目:libgdxcn    文件:MaxRectsPacker.java   
public Array<Page> pack (Array<Rect> inputRects) {
for (int i = 0, nn = inputRects.size; i < nn; i++) {
    Rect rect = inputRects.get(i);
    rect.width += settings.paddingX;
    rect.height += settings.paddingY;
}

if (settings.fast) {
    if (settings.rotation) {
        // Sort by longest side if rotation is enabled.
        sort.sort(inputRects, new Comparator<Rect>() {
            public int compare (Rect o1, Rect o2) {
                int n1 = o1.width > o1.height ? o1.width : o1.height;
                int n2 = o2.width > o2.height ? o2.width : o2.height;
                return n2 - n1;
            }
        });
    } else {
        // Sort only by width (largest to smallest) if rotation is disabled.
        sort.sort(inputRects, new Comparator<Rect>() {
项目:libgdxcn    文件:MaxRectsPacker.java   
/** @param fully If true, the only results that pack all rects will be considered. If false, all results are considered, not all
 *           rects may be packed. */
private Page packAtSize (boolean fully, int width, int height, Array<Rect> inputRects) {
    Page bestResult = null;
    for (int i = 0, n = methods.length; i < n; i++) {
        maxRects.init(width, height);
        Page result;
        if (!settings.fast) {
            result = maxRects.pack(inputRects, methods[i]);
        } else {
            Array<Rect> remaining = new Array();
            for (int ii = 0, nn = inputRects.size; ii < nn; ii++) {
                Rect rect = inputRects.get(ii);
                if (maxRects.insert(rect, methods[i]) == null) {
                    while (ii < nn)
                        remaining.add(inputRects.get(ii++));
                }
            }
            result = maxRects.getResult();
            result.remainingRects = remaining;
        }
        if (fully && result.remainingRects.size > 0) continue;
        if (result.outputRects.size == 0) continue;
        bestResult = getBest(bestResult, result);
    }
    return bestResult;
}
项目:libgdxcn    文件:GridPacker.java   
public Array<Page> pack (Array<Rect> inputRects) {
    System.out.print("Packing");

    int cellWidth = 0, cellHeight = 0;
    for (int i = 0, nn = inputRects.size; i < nn; i++) {
        Rect rect = inputRects.get(i);
        cellWidth = Math.max(cellWidth, rect.width);
        cellHeight = Math.max(cellHeight, rect.height);
    }
    cellWidth += settings.paddingX;
    cellHeight += settings.paddingY;

    inputRects.reverse();

    Array<Page> pages = new Array();
    while (inputRects.size > 0) {
        Page result = packPage(inputRects, cellWidth, cellHeight);
        pages.add(result);
    }
    return pages;
}
项目:skin-composer    文件:MaxRectsPacker.java   
/** For each rectangle, packs each one then chooses the best and packs that. Slow! */
public Page pack (Array<Rect> rects, FreeRectChoiceHeuristic method) {
    rects = new Array(rects);
    while (rects.size > 0) {
        int bestRectIndex = -1;
        Rect bestNode = new Rect();
        bestNode.score1 = Integer.MAX_VALUE;
        bestNode.score2 = Integer.MAX_VALUE;

        // Find the next rectangle that packs best.
        for (int i = 0; i < rects.size; i++) {
            Rect newNode = scoreRect(rects.get(i), method);
            if (newNode.score1 < bestNode.score1 || (newNode.score1 == bestNode.score1 && newNode.score2 < bestNode.score2)) {
                bestNode.set(rects.get(i));
                bestNode.score1 = newNode.score1;
                bestNode.score2 = newNode.score2;
                bestNode.x = newNode.x;
                bestNode.y = newNode.y;
                bestNode.width = newNode.width;
                bestNode.height = newNode.height;
                bestNode.rotated = newNode.rotated;
                bestRectIndex = i;
            }
        }

        if (bestRectIndex == -1) break;

        placeRect(bestNode);
        rects.removeIndex(bestRectIndex);
    }

    Page result = getResult();
    result.remainingRects = rects;
    return result;
}
项目:skin-composer    文件:MaxRectsPacker.java   
public Page getResult () {
    int w = 0, h = 0;
    for (int i = 0; i < usedRectangles.size; i++) {
        Rect rect = usedRectangles.get(i);
        w = Math.max(w, rect.x + rect.width);
        h = Math.max(h, rect.y + rect.height);
    }
    Page result = new Page();
    result.outputRects = new Array(usedRectangles);
    result.occupancy = getOccupancy();
    result.width = w;
    result.height = h;
    return result;
}
项目:gdx-texture-packer-gui    文件:MaxRectsPacker.java   
/** For each rectangle, packs each one then chooses the best and packs that. Slow! */
public Page pack (Array<Rect> rects, FreeRectChoiceHeuristic method) {
    rects = new Array(rects);
    while (rects.size > 0) {
        int bestRectIndex = -1;
        Rect bestNode = new Rect();
        bestNode.score1 = Integer.MAX_VALUE;
        bestNode.score2 = Integer.MAX_VALUE;

        // Find the next rectangle that packs best.
        for (int i = 0; i < rects.size; i++) {
            Rect newNode = scoreRect(rects.get(i), method);
            if (newNode.score1 < bestNode.score1 || (newNode.score1 == bestNode.score1 && newNode.score2 < bestNode.score2)) {
                bestNode.set(rects.get(i));
                bestNode.score1 = newNode.score1;
                bestNode.score2 = newNode.score2;
                bestNode.x = newNode.x;
                bestNode.y = newNode.y;
                bestNode.width = newNode.width;
                bestNode.height = newNode.height;
                bestNode.rotated = newNode.rotated;
                bestRectIndex = i;
            }
        }

        if (bestRectIndex == -1) break;

        placeRect(bestNode);
        rects.removeIndex(bestRectIndex);
    }

    Page result = getResult();
    result.remainingRects = rects;
    return result;
}
项目:gdx-texture-packer-gui    文件:MaxRectsPacker.java   
public Page getResult () {
    int w = 0, h = 0;
    for (int i = 0; i < usedRectangles.size; i++) {
        Rect rect = usedRectangles.get(i);
        w = Math.max(w, rect.x + rect.width);
        h = Math.max(h, rect.y + rect.height);
    }
    Page result = new Page();
    result.outputRects = new Array(usedRectangles);
    result.occupancy = getOccupancy();
    result.width = w;
    result.height = h;
    return result;
}
项目:libgdxcn    文件:MaxRectsPacker.java   
/** For each rectangle, packs each one then chooses the best and packs that. Slow! */
public Page pack (Array<Rect> rects, FreeRectChoiceHeuristic method) {
    rects = new Array(rects);
    while (rects.size > 0) {
        int bestRectIndex = -1;
        Rect bestNode = new Rect();
        bestNode.score1 = Integer.MAX_VALUE;
        bestNode.score2 = Integer.MAX_VALUE;

        // Find the next rectangle that packs best.
        for (int i = 0; i < rects.size; i++) {
            Rect newNode = scoreRect(rects.get(i), method);
            if (newNode.score1 < bestNode.score1 || (newNode.score1 == bestNode.score1 && newNode.score2 < bestNode.score2)) {
                bestNode.set(rects.get(i));
                bestNode.score1 = newNode.score1;
                bestNode.score2 = newNode.score2;
                bestNode.x = newNode.x;
                bestNode.y = newNode.y;
                bestNode.width = newNode.width;
                bestNode.height = newNode.height;
                bestNode.rotated = newNode.rotated;
                bestRectIndex = i;
            }
        }

        if (bestRectIndex == -1) break;

        placeRect(bestNode);
        rects.removeIndex(bestRectIndex);
    }

    Page result = getResult();
    result.remainingRects = rects;
    return result;
}
项目:libgdxcn    文件:MaxRectsPacker.java   
public Page getResult () {
    int w = 0, h = 0;
    for (int i = 0; i < usedRectangles.size; i++) {
        Rect rect = usedRectangles.get(i);
        w = Math.max(w, rect.x + rect.width);
        h = Math.max(h, rect.y + rect.height);
    }
    Page result = new Page();
    result.outputRects = new Array(usedRectangles);
    result.occupancy = getOccupancy();
    result.width = w;
    result.height = h;
    return result;
}
项目:skin-composer    文件:MaxRectsPacker.java   
private Page getBest (Page result1, Page result2) {
    if (result1 == null) return result2;
    if (result2 == null) return result1;
    return result1.occupancy > result2.occupancy ? result1 : result2;
}
项目:gdx-texture-packer-gui    文件:MaxRectsPacker.java   
private Page getBest (Page result1, Page result2) {
    if (result1 == null) return result2;
    if (result2 == null) return result1;
    return result1.occupancy > result2.occupancy ? result1 : result2;
}
项目:libgdxcn    文件:MaxRectsPacker.java   
private Page getBest (Page result1, Page result2) {
    if (result1 == null) return result2;
    if (result2 == null) return result1;
    return result1.occupancy > result2.occupancy ? result1 : result2;
}