Exemplo n.º 1
0
    public boolean addSlot(Stitcher.Holder par1StitchHolder) {
      if (this.holder != null) {
        return false;
      } else {
        int i = par1StitchHolder.getWidth();
        int j = par1StitchHolder.getHeight();

        if (i <= this.width && j <= this.height) {
          if (i == this.width && j == this.height) {
            this.holder = par1StitchHolder;
            return true;
          } else {
            if (this.subSlots == null) {
              this.subSlots = new ArrayList(1);
              this.subSlots.add(new Stitcher.Slot(this.originX, this.originY, i, j));
              int k = this.width - i;
              int l = this.height - j;

              if (l > 0 && k > 0) {
                int i1 = Math.max(this.height, k);
                int j1 = Math.max(this.width, l);

                if (i1 >= j1) {
                  this.subSlots.add(new Stitcher.Slot(this.originX, this.originY + j, i, l));
                  this.subSlots.add(
                      new Stitcher.Slot(this.originX + i, this.originY, k, this.height));
                } else {
                  this.subSlots.add(new Stitcher.Slot(this.originX + i, this.originY, k, j));
                  this.subSlots.add(
                      new Stitcher.Slot(this.originX, this.originY + j, this.width, l));
                }
              } else if (k == 0) {
                this.subSlots.add(new Stitcher.Slot(this.originX, this.originY + j, i, l));
              } else if (l == 0) {
                this.subSlots.add(new Stitcher.Slot(this.originX + i, this.originY, k, j));
              }
            }

            Iterator iterator = this.subSlots.iterator();
            Stitcher.Slot slot;

            do {
              if (!iterator.hasNext()) {
                return false;
              }

              slot = (Stitcher.Slot) iterator.next();
            } while (!slot.addSlot(par1StitchHolder));

            return true;
          }
        } else {
          return false;
        }
      }
    }
Exemplo n.º 2
0
    public int compareTo(Stitcher.Holder par1StitchHolder) {
      int i;

      if (this.getHeight() == par1StitchHolder.getHeight()) {
        if (this.getWidth() == par1StitchHolder.getWidth()) {
          if (this.theTexture.getIconName() == null) {
            return par1StitchHolder.theTexture.getIconName() == null ? 0 : -1;
          }

          return this.theTexture.getIconName().compareTo(par1StitchHolder.theTexture.getIconName());
        }

        i = this.getWidth() < par1StitchHolder.getWidth() ? 1 : -1;
      } else {
        i = this.getHeight() < par1StitchHolder.getHeight() ? 1 : -1;
      }

      return i;
    }
Exemplo n.º 3
0
  /** Expand stitched texture in order to make space for specified tile */
  private boolean expandAndAllocateSlot(Stitcher.Holder par1StitchHolder) {
    int i = Math.min(par1StitchHolder.getWidth(), par1StitchHolder.getHeight());
    boolean flag = this.currentWidth == 0 && this.currentHeight == 0;
    boolean flag1;
    int j;

    if (this.forcePowerOf2) {
      j = MathHelper.roundUpToPowerOfTwo(this.currentWidth);
      int k = MathHelper.roundUpToPowerOfTwo(this.currentHeight);
      int l = MathHelper.roundUpToPowerOfTwo(this.currentWidth + i);
      int i1 = MathHelper.roundUpToPowerOfTwo(this.currentHeight + i);
      boolean flag2 = l <= this.maxWidth;
      boolean flag3 = i1 <= this.maxHeight;

      if (!flag2 && !flag3) {
        return false;
      }

      boolean flag4 = j != l;
      boolean flag5 = k != i1;

      if (flag4 ^ flag5) {
        flag1 =
            flag5
                && flag3; // Forge: Bug fix: Attempt to fill all downward space before expanding
                          // width
      } else {
        flag1 = flag2 && j <= k;
      }
    } else {
      boolean flag6 = this.currentWidth + i <= this.maxWidth;
      boolean flag7 = this.currentHeight + i <= this.maxHeight;

      if (!flag6 && !flag7) {
        return false;
      }

      flag1 = flag6 && (flag || this.currentWidth <= this.currentHeight);
    }

    j = Math.max(par1StitchHolder.getWidth(), par1StitchHolder.getHeight());

    if (MathHelper.roundUpToPowerOfTwo((flag1 ? this.currentHeight : this.currentWidth) + j)
        > (flag1 ? this.maxHeight : this.maxWidth)) {
      return false;
    } else {
      Stitcher.Slot slot;

      if (flag1) {
        if (par1StitchHolder.getWidth() > par1StitchHolder.getHeight()) {
          par1StitchHolder.rotate();
        }

        if (this.currentHeight == 0) {
          this.currentHeight = par1StitchHolder.getHeight();
        }

        slot =
            new Stitcher.Slot(
                this.currentWidth, 0, par1StitchHolder.getWidth(), this.currentHeight);
        this.currentWidth += par1StitchHolder.getWidth();
      } else {
        slot =
            new Stitcher.Slot(
                0, this.currentHeight, this.currentWidth, par1StitchHolder.getHeight());
        this.currentHeight += par1StitchHolder.getHeight();
      }

      slot.addSlot(par1StitchHolder);
      this.stitchSlots.add(slot);
      return true;
    }
  }