Add project files.

This commit is contained in:
2022-09-30 17:32:21 +08:00
parent df69e65c88
commit e8e36b83bd
561 changed files with 40626 additions and 0 deletions

253
Http/SkinEditor/app.css Normal file
View File

@@ -0,0 +1,253 @@
body {
overflow: hidden;
margin: 0;
font-family: sans-serif;
font-size: 16px;
}
#app {
width: 100vw;
height: 100vh;
}
#toolbar {
height: 32px;
display: flex;
align-items: center;
}
.tgbtn {
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
}
.tgbtn-active {
background-color: lightblue;
}
.tgbtn:hover {
background-color: lightgray;
}
#toolbar .tgbtn {
min-width: 64px;
height: 100%;
padding: 0 8px;
border-right: solid 1px gray;
}
#treeview {
height: calc(100% - 32px);
}
#tree {
overflow: auto;
height: calc(100% - 10px);
}
.t-list {
position: absolute;
max-width: 100vw;
max-height: 100vh;
overflow: auto;
background-color: floralwhite;
border: solid 1px gray;
border-radius: 4px;
padding: 2px;
margin: 0;
}
.t-li {
list-style: none;
padding: 0 4px;
margin: 1px;
cursor: pointer;
}
.t-li:hover {
background-color: lightblue;
}
input {
border: none;
font-family: sans-serif;
font-size: 16px;
}
.t-node {
padding: 1px 4px;
margin: 4px 0;
}
.t-node, .t-node-sup {
transition: 0.25s;
}
.t-node.t-inline {
padding: 0 2px;
margin: 4px 2px;
}
.t-internal {
display: none;
}
.t-literal {
margin: 0;
padding: 0;
}
.btn {
width: 16px;
height: 0px;
font-size: small;
text-align: center;
vertical-align: middle;
overflow: hidden;
cursor: pointer;
transition: 0.25s;
display: block;
}
.btn.t-inline {
display: inline-block;
width: 0;
height: 16px;
margin: 0 2px;
}
.btn:only-child {
height: 16px;
}
.btn.t-inline:only-child {
width: 16px;
}
.t-statement > .btn {
}
.t-node:hover > .btn {
transition: 0.25s;
height: 16px;
}
.t-node:hover > .btn.t-inline {
width: 16px;
}
.btn-add {
border: solid 1px green;
}
.mode-hide-add .btn-add {
display: none;
}
.btn-delete {
border: solid 1px red;
}
.mode-hide-delete .btn-delete {
display: none;
}
.t-block {
border-left: solid 1px darkcyan;
}
.t-exp {
border-top: solid 1px gray;
}
.t-exp.t-inline {
padding: 2px 4px;
}
.t-exp:hover {
border-top: solid 3px gray;
}
.t-input {
display: inline-block;
border: solid 1px magenta;
}
.t-statement {
border-left: solid 1px orange;
}
.t-statement.t-inline {
border: solid 1px orange;
}
.t-node:hover {
transition: 0.25s;
border-left-width: 3px;
}
.t-inline {
display: inline-block;
}
/* Debug Mode */
.mode-debug .t-internal {
display: block;
background-color: lightgray;
opacity: 0.6;
}
/* Sort Mode */
.mode-sort .t-internal {
display: block;
background-color: lightgray;
opacity: 1;
}
.mode-sort input {
cursor: grab;
}
.mode-sort .t-node {
border-color: lightgray;
}
.mode-sort .t-statement {
cursor: grab;
padding-left: 10px;
border-color: orange;
border-left-width: 2px;
}
.mode-sort .t-statement:hover {
border-color: yellow;
border-left-width: 5px;
}
.mode-sort .t-statement.t-inline {
border-color: lightgray;
}
.mode-sort .btn {
display: none;
}
.mode-sort.state-grabbing .t-node {
cursor: grabbing;
}
.mode-sort.state-grabbing input {
cursor: grabbing;
}
.mode-sort.state-grabbing .t-grabbing {
background-color: lightgreen;
border-left-color: green;
}
.grab-ptr {
margin: 0;
border: solid 1px green;
}

456
Http/SkinEditor/app.js Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,26 @@
var ArrayUtil = {
binarySearch: function(a, i, c, f) {
var s = 0
, e = a.length - 1;
while (e - s > 1) {
var m = Math.floor((e + s) / 2);
var r = c(i, a[m]);
if (r < 0)
e = m;
else if (r > 0)
s = m;
else
return m;
}
if (!f)
return -e;
else {
var rs = Math.abs(c(i, a[s]));
var re = Math.abs(c(i, a[e]));
if (re < rs)
return e;
else
return s;
}
}
};

View File

@@ -0,0 +1,24 @@
<!DOCTYPE HTML>
<head>
<title>Skin Editor - Cosmo Resona</title>
<link type="text/css" rel="stylesheet" href="app.css"/>
<script type="text/javascript" src="jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="stretchy.min.js"></script>
<script type="text/javascript" src="array_util.js"></script>
<script type="text/javascript" src="app.js"></script>
<script type="text/javascript" src="messages/en_US.js"></script>
<!--<script type="text/javascript" src="messages/zh_CN.js" charset="UTF-8"></script>-->
</head>
<body>
<div id="app">
<div id="toolbar">
<div class="tgbtn" id="tb-sort"><tbr>tool.sort</tbr></div>
<div class="tgbtn" id="tb-hide-add"><tbr>tool.hideadd</tbr></div>
<div class="tgbtn" id="tb-hide-delete"><tbr>tool.hidedelete</tbr></div>
<div class="tgbtn" id="tb-debug"><tbr>tool.debug</tbr></div>
</div>
<div id="treeview">
<div id="tree" class="t-node t-root" key="block.root"></div>
</div>
</div>
</body>

2
Http/SkinEditor/jquery-3.6.0.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,65 @@
messages["en_US"] = {
"block.filter": "If {}",
"block.select": "Select {}",
"input.comp.default": "component",
"input.comp.image": "image sprite",
"input.comp.polysec": "polygon sectional mesh",
"input.comp.rect": "colored rectangle",
"input.comp.scale3": "scale3 sprite",
"input.ident.default": "variable",
"input.flag.default": "flag",
"input.prop.default": "property",
"input.type.chart": "chart",
"input.type.default": "element",
"input.type.group": "track group",
"input.type.note": "note",
"input.type.track": "track",
"list.statement.comp": "Attach a component",
"list.statement.define": "Define a variable",
"list.statement.filter": "Filter element",
"list.statement.filter.flag": "Filter flag",
"list.statement.filter.flag.n": "Filter flag (negative)",
"list.statement.filter.prop": "Filter property",
"list.statement.filter.prop.n": "Filter property (negative)",
"list.statement.filter.type": "Filter element type",
"list.statement.obj": "Create a container",
"list.statement.prop": "Set property",
"list.statement.select": "Select elements",
"list.statement.select.flag": "Filter flag",
"list.statement.select.flag.n": "Filter flag (negative)",
"list.statement.select.prop": "Filter property",
"list.statement.select.prop.n": "Filter property (negative)",
"list.statement.select.type": "Filter element type",
"literal.block.filter": "If {statement.filter.flag} {statement.filter.flag.n} {statement.filter.type} {statement.filter.prop} {statement.filter.prop.n}",
"literal.block.select": "For each {statement.select.flag} {statement.select.flag.n} {statement.select.type?element} {statement.select.prop} {statement.select.prop.n}",
"literal.statement.filter.flag": "it is {0}",
"literal.statement.filter.flag.n": "it is not {0}",
"literal.statement.filter.prop": "its {0} is {1}",
"literal.statement.filter.prop.n": "its {0} is not {1}",
"literal.statement.filter.type": "it is a {0}",
"literal.statement.select.flag": "{0}",
"literal.statement.select.flag.n": "non-{0}",
"literal.statement.select.prop": "whose {0} is {1}",
"literal.statement.select.prop.n": "whose {0} is not {1}",
"literal.statement.select.type": "{0}",
"statement.comp": "with a {0}",
"statement.define": "Define {0} = {1}",
"statement.filter": "{0} {1}",
"statement.filter.flag": "it is {0}",
"statement.filter.flag.n": "it is not {0}",
"statement.filter.prop": "its {0} is {1}",
"statement.filter.prop.n": "its {0} is not {1}",
"statement.filter.type": "it is a {0}",
"statement.obj": "Create a container {0}",
"statement.prop": "Set its {0} to {1}",
"statement.select": "{0} {1}",
"statement.select.flag": "that is {0}",
"statement.select.flag.n": "that is not {0}",
"statement.select.prop": "whose {0} is {1}",
"statement.select.prop.n": "whose {0} is not {1}",
"statement.select.type": "{0}",
"tool.debug": "Debug",
"tool.hideadd": "Hide Add",
"tool.hidedelete": "Hide Delete",
"tool.sort": "Sort",
};

View File

@@ -0,0 +1,65 @@
messages["zh_CN"] = {
"block.filter": "如果 {}",
"block.select": "选择 {}",
"input.comp.default": "组件",
"input.comp.image": "图片元件",
"input.comp.polysec": "多边形截面网格",
"input.comp.rect": "纯色矩形",
"input.comp.scale3": "三段拉伸元件",
"input.ident.default": "变量",
"input.flag.default": "标记",
"input.prop.default": "属性",
"input.type.chart": "谱面",
"input.type.default": "元素",
"input.type.group": "轨道组",
"input.type.note": "音符",
"input.type.track": "轨道",
"list.statement.comp": "附加组件",
"list.statement.define": "定义变量",
"list.statement.filter": "筛选元素",
"list.statement.filter.flag": "筛选标记",
"list.statement.filter.flag.n": "筛选标记(否定)",
"list.statement.filter.prop": "筛选属性",
"list.statement.filter.prop.n": "筛选属性(否定)",
"list.statement.filter.type": "筛选元素类型",
"list.statement.obj": "创建容器",
"list.statement.prop": "设置属性",
"list.statement.select": "选择元素",
"list.statement.select.flag": "筛选标记",
"list.statement.select.flag.n": "筛选标记(否定)",
"list.statement.select.prop": "筛选属性",
"list.statement.select.prop.n": "筛选属性(否定)",
"list.statement.select.type": "筛选元素类型",
"literal.block.filter": "如果 {statement.filter.flag} {statement.filter.flag.n} {statement.filter.type} {statement.filter.prop} {statement.filter.prop.n}",
"literal.block.select": "对于每个 {statement.select.prop} {statement.select.prop.n} {statement.select.flag} {statement.select.flag.n} {statement.select.type?元素}",
"literal.statement.filter.flag": "该元素带有标记 {0}",
"literal.statement.filter.flag.n": "该元素不带有标记 {0}",
"literal.statement.filter.prop": "该元素的 {0} {1}",
"literal.statement.filter.prop.n": "该元素的 {0} 不 {1}",
"literal.statement.filter.type": "该元素是 {0}",
"literal.statement.select.flag": "{0}",
"literal.statement.select.flag.n": "非{0}",
"literal.statement.select.prop": "{0} {1} 的",
"literal.statement.select.prop.n": "{0} 不 {1} 的",
"literal.statement.select.type": "{0}",
"statement.comp": "创建一个 {0} 组件",
"statement.define": "定义变量 {0} = {1}",
"statement.filter": "{0} {1}",
"statement.filter.flag": "该元素带有标记 {0}",
"statement.filter.flag.n": "该元素不带有标记 {0}",
"statement.filter.prop": "该元素的 {0} {1}",
"statement.filter.prop.n": "该元素的 {0} 不 {1}",
"statement.filter.type": "该元素是 {0}",
"statement.obj": "创建一个容器 {0}",
"statement.prop": "设置属性 {0} 为 {1}",
"statement.select": "{0} {1}",
"statement.select.flag": "{0}",
"statement.select.flag.n": "非{0}",
"statement.select.prop": "{0} {1} 的",
"statement.select.prop.n": "{0} 不 {1} 的",
"statement.select.type": "{0}",
"tool.debug": "调试",
"tool.hideadd": "隐藏添加按钮",
"tool.hidedelete": "隐藏删除按钮",
"tool.sort": "排序",
};

5
Http/SkinEditor/stretchy.min.js vendored Normal file

File diff suppressed because one or more lines are too long