mirror of
https://gitee.com/onvia/ccc-tnt-psd2ui
synced 2026-03-15 10:41:41 +00:00
两个版本的插件
This commit is contained in:
105
ccc-tnt-psd2ui-v3.4.+/libs/psd2ui/Parser.js
Normal file
105
ccc-tnt-psd2ui-v3.4.+/libs/psd2ui/Parser.js
Normal file
@@ -0,0 +1,105 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.parser = exports.Parser = void 0;
|
||||
const ImageCacheMgr_1 = require("./assets-manager/ImageCacheMgr");
|
||||
const ImageMgr_1 = require("./assets-manager/ImageMgr");
|
||||
const LayerType_1 = require("./psd/LayerType");
|
||||
const PsdDocument_1 = require("./psd/PsdDocument");
|
||||
const PsdGroup_1 = require("./psd/PsdGroup");
|
||||
const PsdImage_1 = require("./psd/PsdImage");
|
||||
const PsdText_1 = require("./psd/PsdText");
|
||||
class Parser {
|
||||
/** 解析图层类型 */
|
||||
parseLayerType(source) {
|
||||
if ("children" in source) {
|
||||
if ("width" in source && "height" in source) {
|
||||
// Document
|
||||
return LayerType_1.LayerType.Doc;
|
||||
}
|
||||
else {
|
||||
// Group
|
||||
return LayerType_1.LayerType.Group;
|
||||
}
|
||||
}
|
||||
else if ("text" in source) {
|
||||
// Text
|
||||
return LayerType_1.LayerType.Text;
|
||||
}
|
||||
// else if ('placedLayer' in layer) {
|
||||
// // 智能对象
|
||||
// }
|
||||
return LayerType_1.LayerType.Image;
|
||||
}
|
||||
parseLayer(source, parent, rootDoc) {
|
||||
let layer = null;
|
||||
let layerType = this.parseLayerType(source);
|
||||
switch (layerType) {
|
||||
case LayerType_1.LayerType.Doc:
|
||||
case LayerType_1.LayerType.Group:
|
||||
{
|
||||
let group = null;
|
||||
// Group
|
||||
if (layerType == LayerType_1.LayerType.Group) {
|
||||
group = new PsdGroup_1.PsdGroup(source, parent, rootDoc);
|
||||
if (group.attr.comps.ignorenode || group.attr.comps.ignore) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Document
|
||||
group = new PsdDocument_1.PsdDocument(source);
|
||||
}
|
||||
for (let i = 0; i < source.children.length; i++) {
|
||||
const childSource = source.children[i];
|
||||
let child = this.parseLayer(childSource, group, rootDoc || group);
|
||||
if (child) {
|
||||
if (!child.attr.comps.ignorenode && !child.attr.comps.ignore) {
|
||||
// 没有进行忽略节点的时候才放入列表
|
||||
group.children.push(child);
|
||||
}
|
||||
}
|
||||
else {
|
||||
console.error(`图层解析错误`);
|
||||
}
|
||||
}
|
||||
layer = group;
|
||||
}
|
||||
break;
|
||||
case LayerType_1.LayerType.Image:
|
||||
{
|
||||
//
|
||||
if (!source.canvas) {
|
||||
console.error(`Parser-> 空图层 ${source === null || source === void 0 ? void 0 : source.name}`);
|
||||
return null;
|
||||
}
|
||||
// Image
|
||||
let image = layer = new PsdImage_1.PsdImage(source, parent, rootDoc);
|
||||
ImageMgr_1.imageMgr.add(image);
|
||||
// 没有设置忽略且不说镜像的情况下才进行缓存
|
||||
if (!image.isIgnore() && !image.isBind()) {
|
||||
if (!ImageCacheMgr_1.imageCacheMgr.has(image.md5)) {
|
||||
ImageCacheMgr_1.imageCacheMgr.set(image.md5, {
|
||||
uuid: image.uuid,
|
||||
textureUuid: image.textureUuid,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case LayerType_1.LayerType.Text:
|
||||
{
|
||||
// Text
|
||||
layer = new PsdText_1.PsdText(source, parent, rootDoc);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
layer.layerType = layerType;
|
||||
layer.parseSource();
|
||||
layer.onCtor();
|
||||
return layer;
|
||||
}
|
||||
}
|
||||
exports.Parser = Parser;
|
||||
exports.parser = new Parser();
|
||||
Reference in New Issue
Block a user