add files
This commit is contained in:
parent
e5695c8c8c
commit
97ab93da09
5
.editorconfig
Normal file
5
.editorconfig
Normal file
@ -0,0 +1,5 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = tab
|
||||
indent_size = 4
|
595
Classes/BoxPainter.uc
Normal file
595
Classes/BoxPainter.uc
Normal file
@ -0,0 +1,595 @@
|
||||
class BoxPainter extends BoxPainterBase;
|
||||
|
||||
public final function DrawBox(float X, float Y, float Width, float Height, float Edge, optional byte Shape = 0)
|
||||
{
|
||||
Edge = FMin(FMin(Edge, Width * 0.5), Height * 0.5);
|
||||
|
||||
switch (Shape)
|
||||
{
|
||||
case 100:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_Corner, // TopLeft // | |
|
||||
ECS_Corner, // TopRight // | |
|
||||
ECS_Corner, // BottomLeft // |______|
|
||||
ECS_Corner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 110:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_BeveledCorner, // TopLeft // / |
|
||||
ECS_Corner, // TopRight // | |
|
||||
ECS_Corner, // BottomLeft // |______/
|
||||
ECS_BeveledCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 111:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_Corner, // TopLeft // | \
|
||||
ECS_BeveledCorner, // TopRight // | |
|
||||
ECS_BeveledCorner, // BottomLeft // \______|
|
||||
ECS_Corner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 120:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // |\____/|
|
||||
ECS_VerticalCorner, // TopLeft // | |
|
||||
ECS_VerticalCorner, // TopRight // | |
|
||||
ECS_VerticalCorner, // BottomLeft // | ____ |
|
||||
ECS_VerticalCorner // BottomRight // |/ \|
|
||||
);
|
||||
break;
|
||||
|
||||
case 121:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // _______
|
||||
ECS_HorisontalCorner, // TopLeft // \ /
|
||||
ECS_HorisontalCorner, // TopRight // | |
|
||||
ECS_HorisontalCorner, // BottomLeft // | |
|
||||
ECS_HorisontalCorner // BottomRight // /_____\
|
||||
);
|
||||
break;
|
||||
|
||||
case 130:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_Corner, // TopLeft // | |
|
||||
ECS_Corner, // TopRight // | |
|
||||
ECS_Corner, // BottomLeft // |______/
|
||||
ECS_BeveledCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 131:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_Corner, // TopLeft // | \
|
||||
ECS_BeveledCorner, // TopRight // | |
|
||||
ECS_Corner, // BottomLeft // |______|
|
||||
ECS_Corner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 132:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_BeveledCorner, // TopLeft // / |
|
||||
ECS_Corner, // TopRight // | |
|
||||
ECS_Corner, // BottomLeft // |______|
|
||||
ECS_Corner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 133:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_Corner, // TopLeft // | |
|
||||
ECS_Corner, // TopRight // | |
|
||||
ECS_BeveledCorner, // BottomLeft // \______|
|
||||
ECS_Corner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 140:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_BeveledCorner, // TopLeft // / \
|
||||
ECS_BeveledCorner, // TopRight // | |
|
||||
ECS_BeveledCorner, // BottomLeft // \______|
|
||||
ECS_Corner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 141:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_BeveledCorner, // TopLeft // / |
|
||||
ECS_Corner, // TopRight // | |
|
||||
ECS_BeveledCorner, // BottomLeft // \______/
|
||||
ECS_BeveledCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 142:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_Corner, // TopLeft // | \
|
||||
ECS_BeveledCorner, // TopRight // | |
|
||||
ECS_BeveledCorner, // BottomLeft // \______/
|
||||
ECS_BeveledCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 143:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_BeveledCorner, // TopLeft // / \
|
||||
ECS_BeveledCorner, // TopRight // | |
|
||||
ECS_Corner, // BottomLeft // |______/
|
||||
ECS_BeveledCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 150:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_BeveledCorner, // TopLeft // / \
|
||||
ECS_BeveledCorner, // TopRight // | |
|
||||
ECS_VerticalCorner, // BottomLeft // | ____ |
|
||||
ECS_VerticalCorner // BottomRight // |/ \|
|
||||
);
|
||||
break;
|
||||
|
||||
case 151:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // _______
|
||||
ECS_BeveledCorner, // TopLeft // / /
|
||||
ECS_HorisontalCorner, // TopRight // | |
|
||||
ECS_BeveledCorner, // BottomLeft // \______\
|
||||
ECS_HorisontalCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 152:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // |\____/|
|
||||
ECS_VerticalCorner, // TopLeft // | |
|
||||
ECS_VerticalCorner, // TopRight // | |
|
||||
ECS_BeveledCorner, // BottomLeft // \______/
|
||||
ECS_BeveledCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 153:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // _______
|
||||
ECS_HorisontalCorner, // TopLeft // \ \
|
||||
ECS_BeveledCorner, // TopRight // | |
|
||||
ECS_HorisontalCorner, // BottomLeft // /______/
|
||||
ECS_BeveledCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 160:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_BeveledCorner, // TopLeft // / /
|
||||
ECS_HorisontalCorner, // TopRight // | |
|
||||
ECS_BeveledCorner, // BottomLeft // \_____/
|
||||
ECS_BeveledCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 161:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // |\_____
|
||||
ECS_VerticalCorner, // TopLeft // | \
|
||||
ECS_BeveledCorner, // TopRight // | |
|
||||
ECS_BeveledCorner, // BottomLeft // \______/
|
||||
ECS_BeveledCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 162:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_BeveledCorner, // TopLeft // / \
|
||||
ECS_BeveledCorner, // TopRight // | |
|
||||
ECS_HorisontalCorner, // BottomLeft // /______/
|
||||
ECS_BeveledCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 163:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_BeveledCorner, // TopLeft // / \
|
||||
ECS_BeveledCorner, // TopRight // | |
|
||||
ECS_BeveledCorner, // BottomLeft // \_____ |
|
||||
ECS_VerticalCorner // BottomRight // \|
|
||||
);
|
||||
break;
|
||||
|
||||
case 170:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_BeveledCorner, // TopLeft // / \
|
||||
ECS_BeveledCorner, // TopRight // | |
|
||||
ECS_BeveledCorner, // BottomLeft // \______\
|
||||
ECS_HorisontalCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 171:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // _____/|
|
||||
ECS_BeveledCorner, // TopLeft // / |
|
||||
ECS_VerticalCorner, // TopRight // | |
|
||||
ECS_BeveledCorner, // BottomLeft // \______/
|
||||
ECS_BeveledCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 172:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // _______
|
||||
ECS_HorisontalCorner, // TopLeft // \ \
|
||||
ECS_BeveledCorner, // TopRight // | |
|
||||
ECS_BeveledCorner, // BottomLeft // \______/
|
||||
ECS_BeveledCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 173:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_BeveledCorner, // TopLeft // / \
|
||||
ECS_BeveledCorner, // TopRight // | |
|
||||
ECS_VerticalCorner, // BottomLeft // | _____/
|
||||
ECS_BeveledCorner // BottomRight // |/
|
||||
);
|
||||
break;
|
||||
|
||||
case 180:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // _______
|
||||
ECS_Corner, // TopLeft // | /
|
||||
ECS_HorisontalCorner, // TopRight // | |
|
||||
ECS_Corner, // BottomLeft // |______|
|
||||
ECS_Corner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 181:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // |\_____
|
||||
ECS_VerticalCorner, // TopLeft // | |
|
||||
ECS_Corner, // TopRight // | |
|
||||
ECS_Corner, // BottomLeft // |______|
|
||||
ECS_Corner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 182:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_Corner, // TopLeft // | |
|
||||
ECS_Corner, // TopRight // | |
|
||||
ECS_HorisontalCorner, // BottomLeft // /______|
|
||||
ECS_Corner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 183:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_Corner, // TopLeft // | |
|
||||
ECS_Corner, // TopRight // | |
|
||||
ECS_Corner, // BottomLeft // |_____ |
|
||||
ECS_VerticalCorner // BottomRight // \|
|
||||
);
|
||||
break;
|
||||
|
||||
case 190:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_Corner, // TopLeft // | |
|
||||
ECS_Corner, // TopRight // | |
|
||||
ECS_Corner, // BottomLeft // |______\
|
||||
ECS_HorisontalCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 191:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // _____/|
|
||||
ECS_Corner, // TopLeft // | |
|
||||
ECS_VerticalCorner, // TopRight // | |
|
||||
ECS_Corner, // BottomLeft // |______|
|
||||
ECS_Corner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 192:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // _______
|
||||
ECS_HorisontalCorner, // TopLeft // \ |
|
||||
ECS_Corner, // TopRight // | |
|
||||
ECS_Corner, // BottomLeft // |______|
|
||||
ECS_Corner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 193:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_Corner, // TopLeft // | |
|
||||
ECS_Corner, // TopRight // | |
|
||||
ECS_VerticalCorner, // BottomLeft // | _____|
|
||||
ECS_Corner // BottomRight // |/
|
||||
);
|
||||
break;
|
||||
|
||||
case 200:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_Corner, // TopLeft // | |
|
||||
ECS_Corner, // TopRight // | |
|
||||
ECS_VerticalCorner, // BottomLeft // | ____ |
|
||||
ECS_VerticalCorner // BottomRight // |/ \|
|
||||
);
|
||||
break;
|
||||
|
||||
case 201:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // _______
|
||||
ECS_Corner, // TopLeft // | /
|
||||
ECS_HorisontalCorner, // TopRight // | |
|
||||
ECS_Corner, // BottomLeft // |______\
|
||||
ECS_HorisontalCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 202:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // |\____/|
|
||||
ECS_VerticalCorner, // TopLeft // | |
|
||||
ECS_VerticalCorner, // TopRight // | |
|
||||
ECS_Corner, // BottomLeft // |______|
|
||||
ECS_Corner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 203:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // _______
|
||||
ECS_HorisontalCorner, // TopLeft // \ |
|
||||
ECS_Corner, // TopRight // | |
|
||||
ECS_HorisontalCorner, // BottomLeft // /______|
|
||||
ECS_Corner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 210:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ________
|
||||
ECS_HorisontalCorner, // TopLeft // \ /
|
||||
ECS_HorisontalCorner, // TopRight // | |
|
||||
ECS_BeveledCorner, // BottomLeft // \______/
|
||||
ECS_BeveledCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 211:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // |\_____
|
||||
ECS_VerticalCorner, // TopLeft // | \
|
||||
ECS_BeveledCorner, // TopRight // | |
|
||||
ECS_VerticalCorner, // BottomLeft // | _____/
|
||||
ECS_BeveledCorner // BottomRight // |/
|
||||
);
|
||||
break;
|
||||
|
||||
case 212:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_BeveledCorner, // TopLeft // / \
|
||||
ECS_BeveledCorner, // TopRight // | |
|
||||
ECS_HorisontalCorner, // BottomLeft // /______\
|
||||
ECS_HorisontalCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 213:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // _____/|
|
||||
ECS_BeveledCorner, // TopLeft // / |
|
||||
ECS_VerticalCorner, // TopRight // | |
|
||||
ECS_BeveledCorner, // BottomLeft // \_____ |
|
||||
ECS_VerticalCorner // BottomRight // \|
|
||||
);
|
||||
break;
|
||||
|
||||
case 220:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ________
|
||||
ECS_HorisontalCorner, // TopLeft // \ /
|
||||
ECS_HorisontalCorner, // TopRight // | |
|
||||
ECS_Corner, // BottomLeft // |______|
|
||||
ECS_Corner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 221:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // |\_____
|
||||
ECS_VerticalCorner, // TopLeft // | |
|
||||
ECS_Corner, // TopRight // | |
|
||||
ECS_VerticalCorner, // BottomLeft // | _____|
|
||||
ECS_Corner // BottomRight // |/
|
||||
);
|
||||
break;
|
||||
|
||||
case 222:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_Corner, // TopLeft // | |
|
||||
ECS_Corner, // TopRight // | |
|
||||
ECS_HorisontalCorner, // BottomLeft // /______\
|
||||
ECS_HorisontalCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 223:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // _____/|
|
||||
ECS_Corner, // TopLeft // | |
|
||||
ECS_VerticalCorner, // TopRight // | |
|
||||
ECS_Corner, // BottomLeft // |_____ |
|
||||
ECS_VerticalCorner // BottomRight // \|
|
||||
);
|
||||
break;
|
||||
|
||||
case 230:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // _______
|
||||
ECS_BeveledCorner, // TopLeft // / /
|
||||
ECS_HorisontalCorner, // TopRight // | |
|
||||
ECS_HorisontalCorner, // BottomLeft // /______/
|
||||
ECS_BeveledCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 231:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // |\_____
|
||||
ECS_VerticalCorner, // TopLeft // | \
|
||||
ECS_BeveledCorner, // TopRight // | |
|
||||
ECS_BeveledCorner, // BottomLeft // \_____ |
|
||||
ECS_VerticalCorner // BottomRight // \|
|
||||
);
|
||||
break;
|
||||
|
||||
case 232:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // _______
|
||||
ECS_HorisontalCorner, // TopLeft // \ \
|
||||
ECS_BeveledCorner, // TopRight // | |
|
||||
ECS_BeveledCorner, // BottomLeft // \______\
|
||||
ECS_HorisontalCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 233:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // _____/|
|
||||
ECS_BeveledCorner, // TopLeft // / |
|
||||
ECS_VerticalCorner, // TopRight // | |
|
||||
ECS_VerticalCorner, // BottomLeft // | _____/
|
||||
ECS_BeveledCorner // BottomRight // |/
|
||||
);
|
||||
break;
|
||||
|
||||
case 240:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // _______
|
||||
ECS_Corner, // TopLeft // | /
|
||||
ECS_HorisontalCorner, // TopRight // | |
|
||||
ECS_HorisontalCorner, // BottomLeft // /______|
|
||||
ECS_Corner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 241:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // |\_____
|
||||
ECS_VerticalCorner, // TopLeft // | |
|
||||
ECS_Corner, // TopRight // | |
|
||||
ECS_Corner, // BottomLeft // |_____ |
|
||||
ECS_VerticalCorner // BottomRight // \|
|
||||
);
|
||||
break;
|
||||
|
||||
case 242:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // _______
|
||||
ECS_HorisontalCorner, // TopLeft // \ |
|
||||
ECS_Corner, // TopRight // | |
|
||||
ECS_Corner, // BottomLeft // |______\
|
||||
ECS_HorisontalCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 243:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // _____/|
|
||||
ECS_Corner, // TopLeft // | |
|
||||
ECS_VerticalCorner, // TopRight // | |
|
||||
ECS_VerticalCorner, // BottomLeft // | _____|
|
||||
ECS_Corner // BottomRight // |/
|
||||
);
|
||||
break;
|
||||
|
||||
case 250:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_BeveledCorner, // TopLeft // / \
|
||||
ECS_BeveledCorner, // TopRight // | |
|
||||
ECS_Corner, // BottomLeft // |______|
|
||||
ECS_Corner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 251:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_BeveledCorner, // TopLeft // / |
|
||||
ECS_Corner, // TopRight // | |
|
||||
ECS_BeveledCorner, // BottomLeft // \______|
|
||||
ECS_Corner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 252:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_Corner, // TopLeft // | |
|
||||
ECS_Corner, // TopRight // | |
|
||||
ECS_BeveledCorner, // BottomLeft // \______/
|
||||
ECS_BeveledCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 253:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, // ______
|
||||
ECS_Corner, // TopLeft // | \
|
||||
ECS_BeveledCorner, // TopRight // | |
|
||||
ECS_Corner, // BottomLeft // |______/
|
||||
ECS_BeveledCorner // BottomRight //
|
||||
);
|
||||
break;
|
||||
|
||||
case 0:
|
||||
default:
|
||||
DrawShapedBox(
|
||||
X, Y, Width, Height, Edge, //
|
||||
ECS_BeveledCorner, // TopLeft // ______
|
||||
ECS_BeveledCorner, // TopRight // / \
|
||||
ECS_BeveledCorner, // BottomLeft // | |
|
||||
ECS_BeveledCorner // BottomRight // \______/
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
|
||||
}
|
185
Classes/BoxPainterBase.uc
Normal file
185
Classes/BoxPainterBase.uc
Normal file
@ -0,0 +1,185 @@
|
||||
class BoxPainterBase extends Object;
|
||||
|
||||
const Texture = Texture2D'UI_LevelChevrons_TEX.UI_LevelChevron_Icon_02';
|
||||
|
||||
enum EPosition
|
||||
{
|
||||
ECP_TopLeft,
|
||||
ECP_TopRight,
|
||||
ECP_BottomLeft,
|
||||
ECP_BottomRight
|
||||
};
|
||||
|
||||
enum EShape
|
||||
{
|
||||
ECS_Corner,
|
||||
ECS_BeveledCorner,
|
||||
ECS_VerticalCorner,
|
||||
ECS_HorisontalCorner
|
||||
};
|
||||
|
||||
var public Canvas Canvas;
|
||||
|
||||
private final function DrawBoxTexture(float X, float Y)
|
||||
{
|
||||
Canvas.DrawTile(Texture, X, Y, 19, 45, 1, 1);
|
||||
}
|
||||
|
||||
private final function DrawCornerTexture(float Size, byte Position)
|
||||
{
|
||||
switch (Position)
|
||||
{
|
||||
case ECP_TopLeft: Canvas.DrawTile(Texture, Size, Size, 77, 15, -66, 58); return;
|
||||
case ECP_TopRight: Canvas.DrawTile(Texture, Size, Size, 11, 15, 66, 58); return;
|
||||
case ECP_BottomLeft: Canvas.DrawTile(Texture, Size, Size, 77, 73, -66, -58); return;
|
||||
case ECP_BottomRight: Canvas.DrawTile(Texture, Size, Size, 11, 73, 66, -58); return;
|
||||
}
|
||||
}
|
||||
|
||||
private final function DrawCorner(float X, float Y, float Edge, byte Position, byte Shape)
|
||||
{
|
||||
switch (Position)
|
||||
{
|
||||
case ECP_TopLeft: switch (Shape)
|
||||
{
|
||||
case ECS_Corner:
|
||||
return;
|
||||
|
||||
case ECS_BeveledCorner:
|
||||
Canvas.SetPos(X, Y);
|
||||
DrawCornerTexture(Edge, ECP_TopLeft);
|
||||
return;
|
||||
|
||||
case ECS_VerticalCorner:
|
||||
Canvas.SetPos(X, Y - Edge);
|
||||
DrawCornerTexture(Edge, ECP_TopRight);
|
||||
return;
|
||||
|
||||
case ECS_HorisontalCorner:
|
||||
Canvas.SetPos(X - Edge, Y);
|
||||
DrawCornerTexture(Edge, ECP_BottomLeft);
|
||||
return;
|
||||
}
|
||||
|
||||
case ECP_TopRight: switch (Shape)
|
||||
{
|
||||
case ECS_Corner:
|
||||
return;
|
||||
|
||||
case ECS_BeveledCorner:
|
||||
Canvas.SetPos(X - Edge, Y);
|
||||
DrawCornerTexture(Edge, ECP_TopRight);
|
||||
return;
|
||||
|
||||
case ECS_VerticalCorner:
|
||||
Canvas.SetPos(X - Edge, Y - Edge);
|
||||
DrawCornerTexture(Edge, ECP_TopLeft);
|
||||
return;
|
||||
|
||||
case ECS_HorisontalCorner:
|
||||
Canvas.SetPos(X, Y);
|
||||
DrawCornerTexture(Edge, ECP_BottomRight);
|
||||
return;
|
||||
}
|
||||
|
||||
case ECP_BottomLeft: switch (Shape)
|
||||
{
|
||||
case ECS_Corner:
|
||||
return;
|
||||
|
||||
case ECS_BeveledCorner:
|
||||
Canvas.SetPos(X, Y - Edge);
|
||||
DrawCornerTexture(Edge, ECP_BottomLeft);
|
||||
return;
|
||||
|
||||
case ECS_VerticalCorner:
|
||||
Canvas.SetPos(X, Y);
|
||||
DrawCornerTexture(Edge, ECP_BottomRight);
|
||||
return;
|
||||
|
||||
case ECS_HorisontalCorner:
|
||||
Canvas.SetPos(X - Edge, Y - Edge);
|
||||
DrawCornerTexture(Edge, ECP_TopLeft);
|
||||
return;
|
||||
}
|
||||
|
||||
case ECP_BottomRight: switch (Shape)
|
||||
{
|
||||
case ECS_Corner:
|
||||
return;
|
||||
|
||||
case ECS_BeveledCorner:
|
||||
Canvas.SetPos(X - Edge, Y - Edge);
|
||||
DrawCornerTexture(Edge, ECP_BottomRight);
|
||||
return;
|
||||
|
||||
case ECS_VerticalCorner:
|
||||
Canvas.SetPos(X - Edge, Y);
|
||||
DrawCornerTexture(Edge, ECP_BottomLeft);
|
||||
return;
|
||||
|
||||
case ECS_HorisontalCorner:
|
||||
Canvas.SetPos(X, Y - Edge);
|
||||
DrawCornerTexture(Edge, ECP_TopRight);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public final function DrawShapedBox(float X, float Y, float W, float H, float Edge, byte TopLeftShape, byte TopRightShape, byte BottomLeftShape, byte BottomRightShape)
|
||||
{
|
||||
local float BoxX, BoxW;
|
||||
|
||||
Canvas.PreOptimizeDrawTiles((
|
||||
3 // x3 DrawBoxTexture(...) + x1..x4 DrawCornerTexture(...)
|
||||
+ (TopLeftShape == ECS_Corner ? 0 : 1)
|
||||
+ (TopRightShape == ECS_Corner ? 0 : 1)
|
||||
+ (BottomLeftShape == ECS_Corner ? 0 : 1)
|
||||
+ (BottomRightShape == ECS_Corner ? 0 : 1)
|
||||
), Texture);
|
||||
|
||||
// Top Line
|
||||
DrawCorner(X, Y, Edge, ECP_TopLeft, TopLeftShape);
|
||||
|
||||
BoxX = X; BoxW = W;
|
||||
if (TopLeftShape == ECS_BeveledCorner)
|
||||
{
|
||||
BoxX += Edge;
|
||||
BoxW -= Edge;
|
||||
}
|
||||
if (TopRightShape == ECS_BeveledCorner)
|
||||
{
|
||||
BoxW -= Edge;
|
||||
}
|
||||
Canvas.SetPos(BoxX, Y);
|
||||
DrawBoxTexture(BoxW, Edge);
|
||||
|
||||
DrawCorner(X + W, Y, Edge, ECP_TopRight, TopRightShape);
|
||||
|
||||
// Mid Line
|
||||
Canvas.SetPos(X, Y + Edge);
|
||||
DrawBoxTexture(W, H - Edge * 2);
|
||||
|
||||
// Bottom Line
|
||||
DrawCorner(X, Y + H, Edge, ECP_BottomLeft, BottomLeftShape);
|
||||
|
||||
BoxX = X; BoxW = W;
|
||||
if (BottomLeftShape == ECS_BeveledCorner)
|
||||
{
|
||||
BoxX += Edge;
|
||||
BoxW -= Edge;
|
||||
}
|
||||
if (BottomRightShape == ECS_BeveledCorner)
|
||||
{
|
||||
BoxW -= Edge;
|
||||
}
|
||||
Canvas.SetPos(BoxX, Y + H - Edge);
|
||||
DrawBoxTexture(BoxW, Edge);
|
||||
|
||||
DrawCorner(X + W, Y + H, Edge, ECP_BottomRight, BottomRightShape);
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
|
||||
}
|
165
LICENSE
Normal file
165
LICENSE
Normal file
@ -0,0 +1,165 @@
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
||||
This version of the GNU Lesser General Public License incorporates
|
||||
the terms and conditions of version 3 of the GNU General Public
|
||||
License, supplemented by the additional permissions listed below.
|
||||
|
||||
0. Additional Definitions.
|
||||
|
||||
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||
General Public License.
|
||||
|
||||
"The Library" refers to a covered work governed by this License,
|
||||
other than an Application or a Combined Work as defined below.
|
||||
|
||||
An "Application" is any work that makes use of an interface provided
|
||||
by the Library, but which is not otherwise based on the Library.
|
||||
Defining a subclass of a class defined by the Library is deemed a mode
|
||||
of using an interface provided by the Library.
|
||||
|
||||
A "Combined Work" is a work produced by combining or linking an
|
||||
Application with the Library. The particular version of the Library
|
||||
with which the Combined Work was made is also called the "Linked
|
||||
Version".
|
||||
|
||||
The "Minimal Corresponding Source" for a Combined Work means the
|
||||
Corresponding Source for the Combined Work, excluding any source code
|
||||
for portions of the Combined Work that, considered in isolation, are
|
||||
based on the Application, and not on the Linked Version.
|
||||
|
||||
The "Corresponding Application Code" for a Combined Work means the
|
||||
object code and/or source code for the Application, including any data
|
||||
and utility programs needed for reproducing the Combined Work from the
|
||||
Application, but excluding the System Libraries of the Combined Work.
|
||||
|
||||
1. Exception to Section 3 of the GNU GPL.
|
||||
|
||||
You may convey a covered work under sections 3 and 4 of this License
|
||||
without being bound by section 3 of the GNU GPL.
|
||||
|
||||
2. Conveying Modified Versions.
|
||||
|
||||
If you modify a copy of the Library, and, in your modifications, a
|
||||
facility refers to a function or data to be supplied by an Application
|
||||
that uses the facility (other than as an argument passed when the
|
||||
facility is invoked), then you may convey a copy of the modified
|
||||
version:
|
||||
|
||||
a) under this License, provided that you make a good faith effort to
|
||||
ensure that, in the event an Application does not supply the
|
||||
function or data, the facility still operates, and performs
|
||||
whatever part of its purpose remains meaningful, or
|
||||
|
||||
b) under the GNU GPL, with none of the additional permissions of
|
||||
this License applicable to that copy.
|
||||
|
||||
3. Object Code Incorporating Material from Library Header Files.
|
||||
|
||||
The object code form of an Application may incorporate material from
|
||||
a header file that is part of the Library. You may convey such object
|
||||
code under terms of your choice, provided that, if the incorporated
|
||||
material is not limited to numerical parameters, data structure
|
||||
layouts and accessors, or small macros, inline functions and templates
|
||||
(ten or fewer lines in length), you do both of the following:
|
||||
|
||||
a) Give prominent notice with each copy of the object code that the
|
||||
Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
4. Combined Works.
|
||||
|
||||
You may convey a Combined Work under terms of your choice that,
|
||||
taken together, effectively do not restrict modification of the
|
||||
portions of the Library contained in the Combined Work and reverse
|
||||
engineering for debugging such modifications, if you also do each of
|
||||
the following:
|
||||
|
||||
a) Give prominent notice with each copy of the Combined Work that
|
||||
the Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
c) For a Combined Work that displays copyright notices during
|
||||
execution, include the copyright notice for the Library among
|
||||
these notices, as well as a reference directing the user to the
|
||||
copies of the GNU GPL and this license document.
|
||||
|
||||
d) Do one of the following:
|
||||
|
||||
0) Convey the Minimal Corresponding Source under the terms of this
|
||||
License, and the Corresponding Application Code in a form
|
||||
suitable for, and under terms that permit, the user to
|
||||
recombine or relink the Application with a modified version of
|
||||
the Linked Version to produce a modified Combined Work, in the
|
||||
manner specified by section 6 of the GNU GPL for conveying
|
||||
Corresponding Source.
|
||||
|
||||
1) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (a) uses at run time
|
||||
a copy of the Library already present on the user's computer
|
||||
system, and (b) will operate properly with a modified version
|
||||
of the Library that is interface-compatible with the Linked
|
||||
Version.
|
||||
|
||||
e) Provide Installation Information, but only if you would otherwise
|
||||
be required to provide such information under section 6 of the
|
||||
GNU GPL, and only to the extent that such information is
|
||||
necessary to install and execute a modified version of the
|
||||
Combined Work produced by recombining or relinking the
|
||||
Application with a modified version of the Linked Version. (If
|
||||
you use option 4d0, the Installation Information must accompany
|
||||
the Minimal Corresponding Source and Corresponding Application
|
||||
Code. If you use option 4d1, you must provide the Installation
|
||||
Information in the manner specified by section 6 of the GNU GPL
|
||||
for conveying Corresponding Source.)
|
||||
|
||||
5. Combined Libraries.
|
||||
|
||||
You may place library facilities that are a work based on the
|
||||
Library side by side in a single library together with other library
|
||||
facilities that are not Applications and are not covered by this
|
||||
License, and convey such a combined library under terms of your
|
||||
choice, if you do both of the following:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work based
|
||||
on the Library, uncombined with any other library facilities,
|
||||
conveyed under the terms of this License.
|
||||
|
||||
b) Give prominent notice with the combined library that part of it
|
||||
is a work based on the Library, and explaining where to find the
|
||||
accompanying uncombined form of the same work.
|
||||
|
||||
6. Revised Versions of the GNU Lesser General Public License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions
|
||||
of the GNU Lesser General Public License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Library as you received it specifies that a certain numbered version
|
||||
of the GNU Lesser General Public License "or any later version"
|
||||
applies to it, you have the option of following the terms and
|
||||
conditions either of that published version or of any later version
|
||||
published by the Free Software Foundation. If the Library as you
|
||||
received it does not specify a version number of the GNU Lesser
|
||||
General Public License, you may choose any version of the GNU Lesser
|
||||
General Public License ever published by the Free Software Foundation.
|
||||
|
||||
If the Library as you received it specifies that a proxy can decide
|
||||
whether future versions of the GNU Lesser General Public License shall
|
||||
apply, that proxy's public statement of acceptance of any version is
|
||||
permanent authorization for you to choose that version for the
|
||||
Library.
|
47
README.md
47
README.md
@ -1,2 +1,47 @@
|
||||
# KF2-BoxPainterLib
|
||||
2D Box Drawing Library
|
||||
|
||||
[![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/GenZmeY/KF2-BoxPainterLib)](https://github.com/GenZmeY/KF2-BoxPainterLib/tags)
|
||||
[![GitHub top language](https://img.shields.io/github/languages/top/GenZmeY/KF2-BoxPainterLib)](https://docs.unrealengine.com/udk/Three/WebHome.html)
|
||||
[![GitHub](https://img.shields.io/github/license/GenZmeY/KF2-BoxPainterLib)](LICENSE)
|
||||
|
||||
**2D box drawing library**
|
||||
|
||||
# Add to your project
|
||||
There are two ways to add BoxPainterLib to your project:
|
||||
### 1. As [git submodule](https://git-scm.com/book/en/v2/Git-Tools-Submodules)
|
||||
Open git-bash and go to your project: `cd <your_project_path>`
|
||||
Add submodule: `git submodule add https://github.com/GenZmeY/KF2-BoxPainterLib BoxPainterLib`
|
||||
|
||||
**updating library:**
|
||||
Get updates: `pushd BoxPainterLib && git pull && popd`
|
||||
Commit the changes: `git add BoxPainterLib && git commit -m 'update box painter lib'`
|
||||
|
||||
### 2. As standalone sources
|
||||
Create a `BoxPainterLib` folder and put [this repo](https://github.com/GenZmeY/KF2-BoxPainterLib) there.
|
||||
|
||||
# Using
|
||||
1. Create `BoxPainter` object: `BoxPainter = new class'BoxPainterLib.BoxPainter';`
|
||||
2. Initialize the canvas: `BoxPainter.Canvas = <REPLACE_THIS_WITH_YOUR_CANVAS_OBJECT>;`
|
||||
3. `BoxPainter` is ready! Use functions [DrawBox(...)](https://github.com/GenZmeY/KF2-BoxPainterLib/blob/master/Classes/BoxPainter.uc#L3) and [DrawShapedBox(...)](https://github.com/GenZmeY/KF2-BoxPainterLib/blob/master/Classes/BoxPainterBase.uc#L129) to draw cool interface boxes.
|
||||
|
||||
# Available Functions
|
||||
#### DrawShapedBox(float X, float Y, float W, float H, float Edge, byte TopLeftShape, byte TopRightShape, byte BottomLeftShape, byte BottomRightShape)
|
||||
Draws a box using the [shape code](https://github.com/GenZmeY/KF2-BoxPainterLib/blob/master/Classes/BoxPainterBase.uc#L13) for each corner:
|
||||
- ECS_Corner
|
||||
- ECS_BeveledCorner
|
||||
- ECS_VerticalCorner
|
||||
- ECS_HorisontalCorner
|
||||
|
||||
#### DrawBox(float X, float Y, float Width, float Height, float Edge, optional byte Shape = 0)
|
||||
Draws a box using the shape code:
|
||||
![](rect_shapes.png)
|
||||
|
||||
# Build
|
||||
If you are using [KF2-BuildTools](https://github.com/GenZmeY/KF2-BuildTools) open `builder.cfg` and add `BoxPainterLib` **first** in `PackageBuildOrder` and `PackageUpload` parameters
|
||||
|
||||
If you are building manually add line `ModPackages=BoxPainterLib` to your `KFEditor.ini` before all other `ModPackages`
|
||||
|
||||
Now build the mod. `BoxPainterLib.u` library will be next to your `*.u` files
|
||||
|
||||
# License
|
||||
[GNU LGPLv3](LICENSE)
|
||||
|
BIN
rect_shapes.png
Normal file
BIN
rect_shapes.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 550 KiB |
Loading…
Reference in New Issue
Block a user