mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-09-26 20:20:46 +00:00
Calculating shaperecords numbits everywhere
This commit is contained in:
@@ -2844,7 +2844,7 @@ public class SWFInputStream implements AutoCloseable {
|
||||
cer.controlDeltaX = (int) readSB(cer.numBits + 2, "controlDeltaX");
|
||||
cer.controlDeltaY = (int) readSB(cer.numBits + 2, "controlDeltaY");
|
||||
cer.anchorDeltaX = (int) readSB(cer.numBits + 2, "anchorDeltaX");
|
||||
cer.anchorDeltaY = (int) readSB(cer.numBits + 2, "anchorDeltaY");
|
||||
cer.anchorDeltaY = (int) readSB(cer.numBits + 2, "anchorDeltaY");
|
||||
ret = cer;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -358,6 +358,7 @@ public class SvgImporter {
|
||||
serclose.deltaX = (int) Math.round(p.x - prevPoint.x);
|
||||
serclose.deltaY = (int) Math.round(p.y - prevPoint.y);
|
||||
serclose.generalLineFlag = true;
|
||||
serclose.calculateBits();
|
||||
newRecords.add(serclose);
|
||||
|
||||
if (lineStyle != 0) {
|
||||
@@ -455,6 +456,8 @@ public class SvgImporter {
|
||||
serz.deltaY = (int) Math.round(p.y - prevPoint.y);
|
||||
prevPoint = new Point(prevPoint.x + serz.deltaX, prevPoint.y + serz.deltaY);
|
||||
serz.generalLineFlag = true;
|
||||
serz.simplify();
|
||||
serz.calculateBits();
|
||||
newRecords.add(serz);
|
||||
if (lineStyle2Obj != null) {
|
||||
lineStyle2Obj.noClose = false;
|
||||
@@ -472,6 +475,7 @@ public class SvgImporter {
|
||||
prevPoint = new Point(prevPoint.x + serl.deltaX, prevPoint.y + serl.deltaY);
|
||||
serl.generalLineFlag = true;
|
||||
serl.simplify();
|
||||
serl.calculateBits();
|
||||
newRecords.add(serl);
|
||||
empty = false;
|
||||
break;
|
||||
@@ -486,6 +490,7 @@ public class SvgImporter {
|
||||
prevPoint = new Point(prevPoint.x + serh.deltaX, prevPoint.y + serh.deltaY);
|
||||
serh.generalLineFlag = true;
|
||||
serh.simplify();
|
||||
serh.calculateBits();
|
||||
newRecords.add(serh);
|
||||
empty = false;
|
||||
break;
|
||||
@@ -501,6 +506,7 @@ public class SvgImporter {
|
||||
prevPoint = new Point(prevPoint.x + serv.deltaX, prevPoint.y + serv.deltaY);
|
||||
serv.generalLineFlag = true;
|
||||
serv.simplify();
|
||||
serv.calculateBits();
|
||||
newRecords.add(serv);
|
||||
empty = false;
|
||||
break;
|
||||
@@ -521,6 +527,7 @@ public class SvgImporter {
|
||||
cer.anchorDeltaX = (int) Math.round(p.x - prevPoint.x);
|
||||
cer.anchorDeltaY = (int) Math.round(p.y - prevPoint.y);
|
||||
prevPoint = new Point(prevPoint.x + cer.anchorDeltaX, prevPoint.y + cer.anchorDeltaY);
|
||||
cer.calculateBits();
|
||||
newRecords.add(cer);
|
||||
empty = false;
|
||||
break;
|
||||
@@ -558,6 +565,7 @@ public class SvgImporter {
|
||||
cerc.anchorDeltaX = (int) Math.round(p.x - prevPoint.x);
|
||||
cerc.anchorDeltaY = (int) Math.round(p.y - prevPoint.y);
|
||||
prevPoint = new Point(prevPoint.x + cerc.anchorDeltaX, prevPoint.y + cerc.anchorDeltaY);
|
||||
cerc.calculateBits();
|
||||
newRecords.add(cerc);
|
||||
}
|
||||
|
||||
|
||||
@@ -217,15 +217,19 @@ public abstract class ImageTag extends DrawableTag {
|
||||
StraightEdgeRecord top = new StraightEdgeRecord();
|
||||
top.generalLineFlag = true;
|
||||
top.deltaX = rect.getWidth();
|
||||
top.calculateBits();
|
||||
StraightEdgeRecord right = new StraightEdgeRecord();
|
||||
right.generalLineFlag = true;
|
||||
right.deltaY = rect.getHeight();
|
||||
right.calculateBits();
|
||||
StraightEdgeRecord bottom = new StraightEdgeRecord();
|
||||
bottom.generalLineFlag = true;
|
||||
bottom.deltaX = -rect.getWidth();
|
||||
bottom.calculateBits();
|
||||
StraightEdgeRecord left = new StraightEdgeRecord();
|
||||
left.generalLineFlag = true;
|
||||
left.deltaY = -rect.getHeight();
|
||||
left.calculateBits();
|
||||
shape.shapeRecords.add(top);
|
||||
shape.shapeRecords.add(right);
|
||||
shape.shapeRecords.add(bottom);
|
||||
|
||||
@@ -277,6 +277,7 @@ public abstract class MorphShapeTag extends DrawableTag {
|
||||
endPosY += cer2.controlDeltaY + cer2.anchorDeltaY;
|
||||
posX += cer.controlDeltaX + cer.anchorDeltaX;
|
||||
posY += cer.controlDeltaY + cer.anchorDeltaY;
|
||||
cer.calculateBits();
|
||||
finalRecords.add(cer);
|
||||
} else {
|
||||
StraightEdgeRecord ser1 = null;
|
||||
@@ -301,6 +302,8 @@ public abstract class MorphShapeTag extends DrawableTag {
|
||||
endPosY += ser2.deltaY;
|
||||
posX += ser.deltaX;
|
||||
posY += ser.deltaX;
|
||||
ser.simplify();
|
||||
ser.calculateBits();
|
||||
finalRecords.add(ser);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -402,15 +402,23 @@ public abstract class TextTag extends DrawableTag {
|
||||
StraightEdgeRecord top = new StraightEdgeRecord();
|
||||
top.generalLineFlag = true;
|
||||
top.deltaX = rect.getWidth();
|
||||
top.simplify();
|
||||
top.calculateBits();
|
||||
StraightEdgeRecord right = new StraightEdgeRecord();
|
||||
right.generalLineFlag = true;
|
||||
right.deltaY = rect.getHeight();
|
||||
right.simplify();
|
||||
right.calculateBits();
|
||||
StraightEdgeRecord bottom = new StraightEdgeRecord();
|
||||
bottom.generalLineFlag = true;
|
||||
bottom.deltaX = -rect.getWidth();
|
||||
bottom.simplify();
|
||||
bottom.calculateBits();
|
||||
StraightEdgeRecord left = new StraightEdgeRecord();
|
||||
left.generalLineFlag = true;
|
||||
left.deltaY = -rect.getHeight();
|
||||
left.simplify();
|
||||
left.calculateBits();
|
||||
shape.shapeRecords.add(top);
|
||||
shape.shapeRecords.add(right);
|
||||
shape.shapeRecords.add(bottom);
|
||||
|
||||
@@ -426,6 +426,7 @@ public final class DefineCompactedFont extends FontTag {
|
||||
StraightEdgeRecord ser = (StraightEdgeRecord) c;
|
||||
ser.deltaX = resize(ser.deltaX);
|
||||
ser.deltaY = resize(ser.deltaY);
|
||||
ser.simplify();
|
||||
ser.calculateBits();
|
||||
}
|
||||
recs.add(c);
|
||||
|
||||
@@ -129,6 +129,7 @@ public class ContourType implements Serializable {
|
||||
closeSer.generalLineFlag = true;
|
||||
closeSer.deltaX = (src.moveDeltaX - x);
|
||||
closeSer.deltaY = (src.moveDeltaY - y);
|
||||
closeSer.simplify();
|
||||
closeSer.calculateBits();
|
||||
recs.add(closeSer);
|
||||
|
||||
|
||||
@@ -134,6 +134,7 @@ public class EdgeType implements Serializable {
|
||||
ser = new StraightEdgeRecord();
|
||||
ser.generalLineFlag = false;
|
||||
ser.deltaX = data[1] * multiplier;
|
||||
ser.simplify();
|
||||
ser.calculateBits();
|
||||
return ser;
|
||||
case Edge_VLine:
|
||||
@@ -148,6 +149,7 @@ public class EdgeType implements Serializable {
|
||||
ser.generalLineFlag = true;
|
||||
ser.deltaX = data[1] * multiplier;
|
||||
ser.deltaY = data[2] * multiplier;
|
||||
ser.simplify();
|
||||
ser.calculateBits();
|
||||
return ser;
|
||||
case Edge_Quad:
|
||||
|
||||
+1
@@ -71,6 +71,7 @@ public class CurvedEdgeRecord extends SHAPERECORD {
|
||||
tmp = controlDeltaY;
|
||||
controlDeltaY = -anchorDeltaY;
|
||||
anchorDeltaY = -tmp;
|
||||
calculateBits();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+10
-20
@@ -195,6 +195,7 @@ public abstract class SHAPERECORD implements Cloneable, NeedsCharacters, Seriali
|
||||
ret.controlDeltaY = ser.deltaY / 2;
|
||||
ret.anchorDeltaX = ser.deltaX - ret.controlDeltaX;
|
||||
ret.anchorDeltaY = ser.deltaY - ret.controlDeltaY;
|
||||
ret.calculateBits();
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -345,14 +346,9 @@ public abstract class SHAPERECORD implements Cloneable, NeedsCharacters, Seriali
|
||||
ser.deltaX = multiplier * (((int) Math.round(points[0])) - lastX);
|
||||
ser.deltaY = multiplier * (((int) Math.round(points[1])) - lastY);
|
||||
|
||||
ser.generalLineFlag = ser.deltaX != 0 && ser.deltaY != 0;
|
||||
if (ser.deltaX == 0) {
|
||||
ser.vertLineFlag = true;
|
||||
}
|
||||
ser.numBits = SWFOutputStream.getNeededBitsS(ser.deltaX, ser.deltaY) - 2;
|
||||
if (ser.numBits < 0) {
|
||||
ser.numBits = 0;
|
||||
}
|
||||
ser.generalLineFlag = true;
|
||||
ser.simplify();
|
||||
ser.calculateBits();
|
||||
retList.add(ser);
|
||||
lastX = (int) Math.round(points[0]);
|
||||
lastY = (int) Math.round(points[1]);
|
||||
@@ -371,10 +367,7 @@ public abstract class SHAPERECORD implements Cloneable, NeedsCharacters, Seriali
|
||||
cer.controlDeltaY = multiplier * (((int) Math.round(quadCoords[i][1])) - lastY);
|
||||
cer.anchorDeltaX = multiplier * (((int) Math.round(quadCoords[i][2])) - ((int) Math.round(quadCoords[i][0])));
|
||||
cer.anchorDeltaY = multiplier * (((int) Math.round(quadCoords[i][3])) - ((int) Math.round(quadCoords[i][1])));
|
||||
cer.numBits = SWFOutputStream.getNeededBitsS(cer.controlDeltaX, cer.controlDeltaY, cer.anchorDeltaX, cer.anchorDeltaY) - 2;
|
||||
if (cer.numBits < 0) {
|
||||
cer.numBits = 0;
|
||||
}
|
||||
cer.calculateBits();
|
||||
lastX = (int) Math.round(quadCoords[i][2]);
|
||||
lastY = (int) Math.round(quadCoords[i][3]);
|
||||
retList.add(cer);
|
||||
@@ -386,10 +379,7 @@ public abstract class SHAPERECORD implements Cloneable, NeedsCharacters, Seriali
|
||||
cer.controlDeltaY = multiplier * (((int) Math.round(points[1])) - lastY);
|
||||
cer.anchorDeltaX = multiplier * (((int) Math.round(points[2])) - (int) Math.round(points[0]));
|
||||
cer.anchorDeltaY = multiplier * (((int) Math.round(points[3])) - (int) Math.round(points[1]));
|
||||
cer.numBits = SWFOutputStream.getNeededBitsS(cer.controlDeltaX, cer.controlDeltaY, cer.anchorDeltaX, cer.anchorDeltaY) - 2;
|
||||
if (cer.numBits < 0) {
|
||||
cer.numBits = 0;
|
||||
}
|
||||
cer.calculateBits();
|
||||
retList.add(cer);
|
||||
lastX = (int) Math.round(points[2]);
|
||||
lastY = (int) Math.round(points[3]);
|
||||
@@ -402,10 +392,8 @@ public abstract class SHAPERECORD implements Cloneable, NeedsCharacters, Seriali
|
||||
closeSer.generalLineFlag = true;
|
||||
closeSer.deltaX = multiplier * ((int) Math.round((startX - lastX)));
|
||||
closeSer.deltaY = multiplier * ((int) Math.round((startY - lastY)));
|
||||
closeSer.numBits = SWFOutputStream.getNeededBitsS(closeSer.deltaX, closeSer.deltaY) - 2;
|
||||
if (closeSer.numBits < 0) {
|
||||
closeSer.numBits = 0;
|
||||
}
|
||||
closeSer.simplify();
|
||||
closeSer.calculateBits();
|
||||
retList.add(closeSer);
|
||||
lastX = startX;
|
||||
lastY = startY;
|
||||
@@ -515,6 +503,8 @@ public abstract class SHAPERECORD implements Cloneable, NeedsCharacters, Seriali
|
||||
StraightEdgeRecord ser = (StraightEdgeRecord) c;
|
||||
ser.deltaX = (int) (multiplierX * ser.deltaX);
|
||||
ser.deltaY = (int) (multiplierY * ser.deltaY);
|
||||
ser.generalLineFlag = true;
|
||||
ser.simplify();
|
||||
ser.calculateBits();
|
||||
}
|
||||
|
||||
|
||||
+1
@@ -91,6 +91,7 @@ public class StraightEdgeRecord extends SHAPERECORD {
|
||||
public void flip() {
|
||||
deltaX = -deltaX;
|
||||
deltaY = -deltaY;
|
||||
calculateBits();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -611,6 +611,7 @@ public class XFLConverter {
|
||||
|
||||
cer.anchorDeltaX = anchorShouldBeX - (hintedX + cer.controlDeltaX);
|
||||
cer.anchorDeltaY = anchorShouldBeY - (hintedY + cer.controlDeltaY);
|
||||
cer.calculateBits();
|
||||
hintedX = anchorShouldBeX;
|
||||
hintedY = anchorShouldBeY;
|
||||
}
|
||||
|
||||
+1
@@ -63,6 +63,7 @@ public class CurvedEdgeRecordAdvanced extends ShapeRecordAdvanced {
|
||||
ret.controlDeltaY = (int) Math.round(controlDeltaY);
|
||||
ret.anchorDeltaX = (int) Math.round(anchorDeltaX);
|
||||
ret.anchorDeltaY = (int) Math.round(anchorDeltaY);
|
||||
ret.calculateBits();
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user