📄 fsdefineshape2.java
字号:
@param anArray set the line styles for the shape.
*/
public void setLineStyles(ArrayList anArray)
{
lineStyles = anArray;
}
/** Sets the shape.
@param aShape set the shape to be drawn.
*/
public void setShape(FSShape aShape)
{
shape = aShape;
}
public Object clone()
{
FSDefineShape2 anObject = (FSDefineShape2)super.clone();
anObject.bounds = (bounds != null) ? (FSBounds)bounds.clone() : null;
anObject.fillStyles = new ArrayList();
for (Iterator i = fillStyles.iterator(); i.hasNext();)
anObject.fillStyles.add(((FSFillStyle)i.next()).clone());
anObject.lineStyles = new ArrayList();
for (Iterator i = lineStyles.iterator(); i.hasNext();)
anObject.lineStyles.add(((FSLineStyle)i.next()).clone());
anObject.shape = (shape != null) ? (FSShape)shape.clone() : null;
return anObject;
}
public boolean equals(Object anObject)
{
boolean result = false;
if (super.equals(anObject))
{
FSDefineShape2 typedObject = (FSDefineShape2)anObject;
if (bounds != null)
result = bounds.equals(typedObject.bounds);
else
result = bounds == typedObject.bounds;
if (fillStyles != null)
result = result && fillStyles.equals(typedObject.fillStyles);
else
result = result && fillStyles == typedObject.fillStyles;
if (lineStyles != null)
result = result && lineStyles.equals(typedObject.lineStyles);
else
result = result && lineStyles == typedObject.lineStyles;
if (shape != null)
result = result && shape.equals(typedObject.shape);
else
result = result && shape == typedObject.shape;
}
return result;
}
public void appendDescription(StringBuffer buffer, int depth)
{
buffer.append(name());
if (depth > 0)
{
buffer.append(": { ");
Transform.append(buffer, "identifier", identifier);
Transform.append(buffer, "bounds", bounds, depth);
Transform.append(buffer, "fillStyles", fillStyles, depth);
Transform.append(buffer, "lineStyles", lineStyles, depth);
Transform.append(buffer, "shape", shape, depth);
buffer.append("}");
}
}
public int length(FSCoder coder)
{
int numberOfFillBits = FSCoder.size(fillStyles.size(), false);
int numberOfLineBits = FSCoder.size(lineStyles.size(), false);
super.length(coder);
length += bounds.length(coder);
length += (fillStyles.size() >= 255) ? 3 : 1;
for (Iterator styleIterator = fillStyles.iterator(); styleIterator.hasNext();)
length += ((FSTransformObject)styleIterator.next()).length(coder);
length += (lineStyles.size() >= 255) ? 3 : 1;
for (Iterator styleIterator = lineStyles.iterator(); styleIterator.hasNext();)
length += ((FSTransformObject)styleIterator.next()).length(coder);
coder.context[FSCoder.ArrayCountExtended] = 1;
coder.context[FSCoder.NumberOfFillBits] = numberOfFillBits;
coder.context[FSCoder.NumberOfLineBits] = numberOfLineBits;
length += shape.length(coder);
coder.context[FSCoder.ArrayCountExtended] = 0;
coder.context[FSCoder.NumberOfFillBits] = 0;
coder.context[FSCoder.NumberOfLineBits] = 0;
return length;
}
public void encode(FSCoder coder)
{
int numberOfFillBits = FSCoder.size(fillStyles.size(), false);
int numberOfLineBits = FSCoder.size(lineStyles.size(), false);
super.encode(coder);
bounds.encode(coder);
if (fillStyles.size() >= 255)
{
coder.writeWord(0xFF, 1);
coder.writeWord(fillStyles.size(), 2);
}
else
{
coder.writeWord(fillStyles.size(), 1);
}
for (Iterator styleIterator = fillStyles.iterator(); styleIterator.hasNext();)
((FSTransformObject)styleIterator.next()).encode(coder);
if (lineStyles.size() >= 255)
{
coder.writeWord(0xFF, 1);
coder.writeWord(lineStyles.size(), 2);
}
else
{
coder.writeWord(lineStyles.size(), 1);
}
for (Iterator styleIterator = lineStyles.iterator(); styleIterator.hasNext();)
((FSTransformObject)styleIterator.next()).encode(coder);
coder.context[FSCoder.ArrayCountExtended] = 1;
coder.context[FSCoder.NumberOfFillBits] = numberOfFillBits;
coder.context[FSCoder.NumberOfLineBits] = numberOfLineBits;
shape.encode(coder);
coder.context[FSCoder.ArrayCountExtended] = 0;
coder.context[FSCoder.NumberOfFillBits] = 0;
coder.context[FSCoder.NumberOfLineBits] = 0;
coder.endObject(name());
}
public void decode(FSCoder coder)
{
int fillStyleCount = 0;
int lineStyleCount = 0;
super.decode(coder);
int start = coder.getPointer()-16; // account for identifier
bounds = new FSBounds(coder);
fillStyleCount = coder.readWord(1, false);
if (fillStyleCount == 0xFF)
fillStyleCount = coder.readWord(2, false);
fillStyles = new ArrayList(fillStyleCount);
fillStyles = new ArrayList();
for (int i=0; i<fillStyleCount; i++)
{
switch (coder.scanWord(1, false))
{
case FSFillStyle.Solid:
fillStyles.add(new FSSolidFill(coder));
break;
case FSFillStyle.Linear:
fillStyles.add(new FSGradientFill(coder));
break;
case FSFillStyle.Radial:
fillStyles.add(new FSGradientFill(coder));
break;
case FSFillStyle.Tiled:
fillStyles.add(new FSBitmapFill(coder));
break;
case FSFillStyle.Clipped:
fillStyles.add(new FSBitmapFill(coder));
break;
case FSFillStyle.Unsmoothed_Tiled:
fillStyles.add(new FSBitmapFill(coder));
break;
case FSFillStyle.Unsmoothed_Clipped:
fillStyles.add(new FSBitmapFill(coder));
break;
default:
break;
}
}
lineStyleCount = coder.readWord(1, false);
if (lineStyleCount == 0xFF)
lineStyleCount = coder.readWord(2, false);
lineStyles = new ArrayList(lineStyleCount);
for (int i=0; i<lineStyleCount; i++)
lineStyles.add(new FSSolidLine(coder));
coder.context[FSCoder.ArrayCountExtended] = 1;
int bytesDecoded = (coder.getPointer()-start) >> 3;
if (coder.context[FSCoder.DecodeShapes] == 1)
shape = new FSShape(coder);
else
shape = new FSShape(coder, length-bytesDecoded);
coder.context[FSCoder.ArrayCountExtended] = 0;
coder.endObject(name());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -