386 QVariantHash newObject;
388 QVariantList resources =
object.value(
"/0").toList();
389 QVariantList newResources;
391 const QMap<QString, QString> keyList {{
"/0",
"/Name"}, {
"/5",
"/Data"}};
392 const QMap<QString, QString> idKeyList {{
"/0",
"/NoStart"}, {
"/1",
"/NoEnd"}, {
"/2",
"/Keep"}, {
"/3",
"/Hanging"}, {
"/4",
"/PredefinedTag"}};
395 Q_FOREACH(QVariant val, resources) {
396 QVariantHash resource = val.toHash().value(
"/0").toHash();
397 QVariantHash newResource;
398 Q_FOREACH(QString key, resource.keys()) {
400 QVariantHash
id = resource.value(key).toHash();
402 Q_FOREACH(QString key2,
id.keys()) {
403 QVariant idVal =
id.value(key2);
404 if (idKeyList.keys().contains(key2)) {
405 newId.insert(idKeyList.value(key2), idVal);
407 newId.insert(key2, idVal);
410 newResource.insert(
"/Data", newId);
411 }
else if (keyList.keys().contains(key)) {
412 newResource.insert(keyList.value(key), resource.value(key));
414 newResource.insert(key, resource.value(key));
418 newResources.append(QVariantHash({{
"/Resource", newResource}}));
420 newObject.insert(
"/Resources", newResources);
445 QVariantHash newObject;
447 QVariantList resources =
object.value(
"/0").toList();
448 QVariantList newResources;
450 const QMap<QString, QString> keyList {{
"/99",
"/StreamTag"}, {
"/97",
"/UUID"}};
451 const QMap<QString, QString> idKeyList {{
"/0",
"/Name"}, {
"/2",
"/Type"}, {
"/4",
"/MMAxis"}, {
"/5",
"/VersionString"}};
454 Q_FOREACH(QVariant val, resources) {
455 QVariantHash resource = val.toHash().value(
"/0").toHash();
456 QVariantHash newResource;
457 Q_FOREACH(QString key, resource.keys()) {
459 QVariantHash
id = resource.value(key).toHash();
461 Q_FOREACH(QString key2,
id.keys()) {
462 QVariant idVal =
id.value(key2);
463 if (idKeyList.keys().contains(key2)) {
464 newId.insert(idKeyList.value(key2), idVal);
466 newId.insert(key2, idVal);
469 newResource.insert(
"/Identifier", newId);
470 }
else if (keyList.keys().contains(key)) {
471 newResource.insert(keyList.value(key), resource.value(key));
473 newResource.insert(key, resource.value(key));
477 newResources.append(QVariantHash({{
"/Resource", newResource}}));
479 newObject.insert(
"/Resources", newResources);
515 QVariantHash newObject;
517 const QMap<QString, QString> runStyleKeyList {{
"/0",
"/Name"}, {
"/5",
"/Parent"}, {
"/97",
"/UUID"}};
519 Q_FOREACH(QString key,
object.keys()) {
520 QVariant val =
object.value(key);
523 newObject.insert(
"/Text", val);
524 }
else if (key ==
"/5") {
525 QVariantList array = val.toHash().value(
"/0").toList();
526 QVariantList newArray;
528 Q_FOREACH(QVariant run, array) {
529 QVariantHash runDataSheet = run.toHash().value(
"/0").toHash().value(
"/0").toHash();
530 QVariantHash newDataSheet;
532 Q_FOREACH(QString key2, runDataSheet.keys()) {
533 QVariant rdVal = runDataSheet.value(key2);
536 }
else if (key2 ==
"/6") {
537 newDataSheet.insert(
"/Parent", rdVal);
538 }
else if (runStyleKeyList.keys().contains(key)) {
539 newDataSheet.insert(runStyleKeyList.value(key2), rdVal);
541 newDataSheet.insert(key2, rdVal);
545 QVariantHash newSheet = {{
"/ParagraphSheet", newDataSheet}};
546 QVariantHash newRunData = {{
"/RunData", newSheet}};
547 newRunData.insert(
"/Length", run.toHash().value(
"/1"));
548 newArray.append(newRunData);
550 QVariantHash arrayParent = {{
"/RunArray", newArray}};
551 newObject.insert(
"/ParagraphRun", arrayParent);
552 }
else if (key ==
"/6") {
553 QVariantList array = val.toHash().value(
"/0").toList();
554 QVariantList newArray;
556 Q_FOREACH(QVariant run, array) {
557 QVariantHash runDataSheet = run.toHash().value(
"/0").toHash().value(
"/0").toHash();
558 QVariantHash newDataSheet;
560 Q_FOREACH(QString key2, runDataSheet.keys()) {
561 QVariant rdVal = runDataSheet.value(key2);
564 }
else if (key2 ==
"/5") {
565 newDataSheet.insert(
"/Parent", rdVal);
566 }
else if (runStyleKeyList.keys().contains(key)) {
567 newDataSheet.insert(runStyleKeyList.value(key2), rdVal);
569 newDataSheet.insert(key2, rdVal);
573 QVariantHash newSheet = {{
"/StyleSheet", newDataSheet}};
574 QVariantHash newRunData = {{
"/RunData", newSheet}};
575 newRunData.insert(
"/Length", run.toHash().value(
"/1"));
576 newArray.append(newRunData);
578 QVariantHash arrayParent = {{
"/RunArray", newArray}};
579 newObject.insert(
"/StyleRun", arrayParent);
580 }
else if (key ==
"/10") {
581 newObject.insert(
"/StorySheet", val);
583 newObject.insert(key, val);
1107 QVariantHash documentResources;
1108 QVariantHash documentObjects;
1110 QVariantHash fontSet;
1111 QVariantList fontResources;
1113 QVariantHash fontInvis {
1114 {
"/Name",
"AdobeInvisFont"},
1118 QVariantHash fontMyriad {
1119 {
"/Name",
"MyriadPro-Regular"},
1121 {
"/Version",
"Version 2.115;PS 2.000;hotconv 1.0.81;makeotf.lib2.5.63406"}
1124 {
"/Resource", QVariantHash({{
"/Identifier", fontMyriad}, {
"/StreamTag",
"/CoolTypeFont"}})}
1126 fontResources.append(fR);
1128 {
"/Resource", QVariantHash({{
"/Identifier", fontInvis}, {
"/StreamTag",
"/CoolTypeFont"}})}
1130 fontResources.append(fR);
1132 fontSet.insert(
"/Resources", fontResources);
1133 documentResources.insert(
"/FontSet", fontSet);
1134 QVariantHash kinsokuSet;
1135 QVariantList kinsokuResources;
1136 QVariantList kinsokuDisplay;
1137 QVariantHash kin = QVariantHash ({{
"/Resource", QVariantHash({ {
"/Name",
"None"}, {
"/Data",
kinsokuNone}})}});
1138 kinsokuResources.append(kin);
1139 kinsokuDisplay.append(QVariantHash({{
"/Resource", 0}}));
1140 kin = QVariantHash ({{
"/Resource", QVariantHash({ {
"/Name",
"PhotoshopKinsokuHard"}, {
"/Data",
kinsokuHard}})}});
1141 kinsokuResources.append(kin);
1142 kinsokuDisplay.append(QVariantHash({{
"/Resource", 1}}));
1143 kin = QVariantHash ({{
"/Resource", QVariantHash({ {
"/Name",
"PhotoshopKinsokuSoft"}, {
"/Data",
kinsokuSoft}})}});
1144 kinsokuResources.append(kin);
1145 kinsokuDisplay.append(QVariantHash({{
"/Resource", 2}}));
1146 kin = QVariantHash ({{
"/Resource", QVariantHash({ {
"/Name",
"Hard"}, {
"/Data",
kinsokuHard}})}});
1147 kinsokuResources.append(kin);
1148 kinsokuDisplay.append(QVariantHash({{
"/Resource", 3}}));
1149 kin = QVariantHash ({{
"/Resource", QVariantHash({ {
"/Name",
"Soft"}, {
"/Data",
kinsokuSoft}})}});
1150 kinsokuResources.append(kin);
1151 kinsokuDisplay.append(QVariantHash({{
"/Resource", 4}}));
1152 kinsokuSet.insert(
"/Resources", kinsokuResources);
1153 kinsokuSet.insert(
"/DisplayList", kinsokuDisplay);
1154 documentResources.insert(
"/KinsokuSet", kinsokuSet);
1158 QVariantHash mojiKumiCodeToClassSet = {
1159 {
"/Resources", QVariantList({
1161 {
"/Resource", QVariantHash({
1167 {
"/DisplayList", QVariantList({QVariantHash({{
"/Resource", 0}})})}
1169 documentResources.insert(
"/MojiKumiCodeToClassSet", mojiKumiCodeToClassSet);
1171 QHash<QString, int> mojilist {
1172 {
"Photoshop6MojiKumiSet4", 2},
1173 {
"Photoshop6MojiKumiSet3", 4},
1174 {
"Photoshop6MojiKumiSet2", 3},
1175 {
"Photoshop6MojiKumiSet1", 1},
1176 {
"YakumonoHankaku", 1},
1177 {
"GyomatsuYakumonoHankaku", 3},
1178 {
"GyomatsuYakumonoZenkaku", 4},
1179 {
"YakumonoZenkaku", 2},
1182 QVariantHash mojiKumiTableSet;
1184 QVariantList mojiResources;
1185 QVariantList mojiDisplay;
1187 Q_FOREACH(
const QString key, mojilist.keys()) {
1188 mojiDisplay.append(QVariantHash({{
"/Resource", mojiDisplay.size()}}));
1189 QVariantHash mojikumiTable = {
1191 {
"/Members", QVariantHash({
1192 {
"/CodeToClass", 0},
1193 {
"/PredefinedTag", mojilist.value(key)}
1199 mojiResources.append(mojikumiTable);
1202 mojiKumiTableSet.insert(
"/Resources", mojiResources);
1203 mojiKumiTableSet.insert(
"/DisplayList", mojiDisplay);
1204 documentResources.insert(
"/MojiKumiTableSet", mojiKumiTableSet);
1206 QVariantHash paragraphSheetSet = {
1207 {
"/Resources", QVariantList({
1209 {
"/Resource", QVariantHash({
1210 {
"/Name",
"Normal RGB"},
1216 {
"/DisplayList", QVariantList({QVariantHash({{
"/Resource", 0}})})}
1218 documentResources.insert(
"/ParagraphSheetSet", paragraphSheetSet);
1219 QVariantHash styleSheetSet = {
1220 {
"/Resources", QVariantList({
1222 {
"/Resource", QVariantHash({
1223 {
"/Name",
"Normal RGB"},
1229 {
"/DisplayList", QVariantList({QVariantHash({{
"/Resource", 0}})})}
1231 documentResources.insert(
"/StyleSheetSet", styleSheetSet);
1233 QVariantHash textFrameSet;
1234 textFrameSet.insert(
"/Resources", QVariantList());
1235 documentResources.insert(
"/TextFrameSet", textFrameSet);
1238 QVariantHash DocumentSettings;
1239 DocumentSettings.insert(
"/DefaultStoryDir", 0);
1242 DocumentSettings.insert(
"/SubscriptPosition", 0.333);
1243 DocumentSettings.insert(
"/SubscriptSize", 0.583);
1244 DocumentSettings.insert(
"/SuperscriptPosition", 0.333);
1245 DocumentSettings.insert(
"/SuperscriptSize", 0.583);
1246 DocumentSettings.insert(
"/SmallCapSize", 0.7);
1247 DocumentSettings.insert(
"/NormalParagraphSheet", 0);
1248 DocumentSettings.insert(
"/NormalStyleSheet", 0);
1249 documentObjects.insert(
"/DocumentSettings", DocumentSettings);
1251 documentObjects.insert(
"/OriginalNormalParagraphFeatures", OriginalNormalParagraphFeatures);
1252 QVariantHash OriginalNormalStyleFeatures =
defaultStyle;
1253 documentObjects.insert(
"/OriginalNormalStyleFeatures", OriginalNormalStyleFeatures);
1254 QVariantList TextObjects;
1255 documentObjects.insert(
"/TextObjects", TextObjects);
1257 doc.insert(
"/DocumentResources", documentResources);
1258 doc.insert(
"/DocumentObjects", documentObjects);
1371 const QVariantHash documentObjects = Txt2.value(
"/DocumentObjects").toHash();
1372 const QVariantList textObjects = documentObjects.value(
"/TextObjects").toList();
1373 QVariantHash textObject;
1374 if (textIndex < textObjects.size()) {
1375 textObject = textObjects.value(textIndex).toHash();
1379 const QVariantHash model = textObject.value(
"/Model").toHash();
1380 const QVariantHash view = textObject.value(
"/View").toHash();
1382 const QVariantHash documentResources = Txt2.value(
"/DocumentResources").toHash();
1383 const QVariantList textFrames = documentResources.value(
"/TextFrameSet").toHash().value(
"/Resources").toList();
1385 QVariantHash engineDict;
1387 QVariantHash editor;
1388 editor.insert(
"/Text", model.value(
"/Text"));
1389 engineDict.insert(
"/Editor", editor);
1395 const QVariantHash para = model.value(
"/ParagraphRun").toHash();
1396 const QVariantList paraRunArray = para.value(
"/RunArray").toList();
1398 const int length = paraRunArray.value(0).toHash().value(
"/Length").toInt();
1399 const QVariantHash paraSheet = paraRunArray.value(0).toHash().value(
"/RunData").toHash()[
"/ParagraphSheet"].toHash();
1401 QVariantHash paragraphRun;
1402 paragraphRun[
"/RunLengthArray"] = QVariantList({QVariant(
length)});
1403 QVariantHash paragraphAdjustments = QVariantHash {
1404 {
"/Axis", QVariantList({1.0, 0.0, 1.0})},
1405 {
"/XY", QVariantList({0.0, 0.0})}
1407 paragraphRun[
"/RunArray"] = QVariantList({ QVariantHash{
1408 {
"/ParagraphSheet", paragraphStyle},
1409 {
"/Adjustments", paragraphAdjustments}
1412 paragraphRun.insert(
"/IsJoinable", 1);
1413 paragraphRun.insert(
"/DefaultRunData", QVariantHash{
1415 QVariantHash{{
"/DefaultStyleSheet", 0},
1416 {
"/Properties", QVariantHash()}} },
1417 {
"/Adjustments", paragraphAdjustments}});
1419 engineDict.insert(
"/ParagraphRun", paragraphRun);
1421 const QVariantHash txt2StyleRun = model.value(
"/StyleRun").toHash();
1422 const QVariantList txt2RunArray = txt2StyleRun.value(
"/RunArray").toList();
1423 QVariantHash styleRun;
1425 QVariantList properStyleRun;
1426 QVariantList styleRunArray;
1427 Q_FOREACH(
const QVariant entry, txt2RunArray) {
1428 QVariantHash properStyle;
1429 const QVariantHash fea = entry.toHash().value(
"/RunData").toHash().value(
"/StyleSheet").toHash().value(
"/Features").toHash();
1432 s.insert(
"/StyleSheet", properStyle);
1433 properStyleRun.append(s);
1434 styleRunArray.append(entry.toHash().value(
"/Length").toInt());
1436 styleRun.insert(
"/RunArray", properStyleRun);
1437 styleRun.insert(
"/RunLengthArray", styleRunArray);
1438 styleRun.insert(
"/IsJoinable", 2);
1440 styleRun.insert(
"/DefaultRunData", QVariantHash{{
"/StyleSheet", QVariantHash{{
"/StyleSheetData", QVariantHash()}} }});
1441 engineDict.insert(
"/StyleRun", styleRun);
1444 const int frameIndex = view.value(
"/Frames").toList().value(0).toHash().value(
"/Resource").toInt();
1445 const QVariantHash textFrame = textFrames.value(frameIndex).toHash().value(
"/Resource").toHash();
1446 const QVariantHash textFrameData = textFrame.value(
"/Data").toHash();
1447 QVariantHash rendered;
1448 int shapeType = textFrameData.value(
"/Type", QVariant(0)).toInt();
1449 int writingDirection = textFrameData.value(
"/LineOrientation", QVariant(0)).toInt();
1450 QVariantHash photoshop = QVariantHash {{
"/ShapeType", qMax(1, shapeType)},
1451 {
"/TransformPoint0", QVariantList({1.0, 0.0})},
1452 {
"/TransformPoint1", QVariantList({0.0, 1.0})},
1453 {
"/TransformPoint2", QVariantList({0.0, 0.0})}};
1454 if (shapeType == 0) {
1455 photoshop[
"/PointBase"] = QVariantList({0.0, 0.0});
1456 }
else if (shapeType == 1) {
1458 photoshop[
"/BoxBounds"] = QVariantList({0.0, 0.0, boundsInPx.width(), boundsInPx.height()});
1460 QVariantHash renderChild = QVariantHash{
1461 {
"/ShapeType", shapeType},
1463 {
"/Lines", QVariantHash{{
"/WritingDirection", writingDirection}, {
"/Children", QVariantList()}}},
1464 {
"/Cookie", QVariantHash{{
"/Photoshop", photoshop}}}};
1465 rendered[
"/Version"] = 1;
1466 rendered[
"/Shapes"] = QVariantHash{{
"/WritingDirection", writingDirection}, {
"/Children", QVariantList({renderChild})}};
1468 engineDict.insert(
"/Rendered", rendered);
1471 const QVariantHash storySheet = textObject.value(
"/StorySheet").toHash();
1472 engineDict.insert(
"/UseFractionalGlyphWidths", storySheet.value(
"/UseFractionalGlyphWidths", QVariant(
true)).toBool());
1473 engineDict.insert(
"/AntiAlias", storySheet.value(
"/AntiAlias", QVariant(1)).toInt());
1475 QVariantHash resourceDict;
1477 const QVariantList docFontSet = documentResources.value(
"/FontSet").toHash().value(
"/Resources").toList();
1478 QVariantList fontSet;
1479 Q_FOREACH(QVariant entry, docFontSet) {
1480 const QVariantHash docFont = entry.toHash().value(
"/Resource").toHash();
1481 QVariantHash font = docFont.value(
"/Identifier").toHash();
1482 font.insert(
"/FontType", font.value(
"/Type"));
1483 font.remove(
"/Version");
1484 font.remove(
"/Type");
1485 font.insert(
"/Script", 0);
1486 font.insert(
"/Synthetic", 0);
1487 fontSet.append(font);
1489 resourceDict.insert(
"/FontSet", fontSet);
1491 const QVariantHash documentSettings = documentObjects.value(
"/DocumentSettings").toHash();
1494 kinHard.remove(
"/PredefinedTag");
1495 kinHard.insert(
"/Name",
"PhotoshopKinsokuHard");
1497 kinSoft.remove(
"/PredefinedTag");
1498 kinSoft.insert(
"/Name",
"PhotoshopKinsokuSoft");
1499 resourceDict.insert(
"/KinsokuSet", QVariantList({kinHard, kinSoft}));
1500 resourceDict.insert(
"/MojiKumiSet", QVariantList( {QVariantHash{{
"/InternalName",
"Photoshop6MojiKumiSet1"}},
1501 QVariantHash{{
"/InternalName",
"Photoshop6MojiKumiSet2"}},
1502 QVariantHash{{
"/InternalName",
"Photoshop6MojiKumiSet3"}},
1503 QVariantHash{{
"/InternalName",
"Photoshop6MojiKumiSet4"}}
1505 resourceDict.insert(
"/SubscriptPosition", documentSettings.value(
"/SubscriptPosition"));
1506 resourceDict.insert(
"/SubscriptSize", documentSettings.value(
"/SubscriptSize"));
1507 resourceDict.insert(
"/SuperscriptPosition", documentSettings.value(
"/SuperscriptPosition"));
1508 resourceDict.insert(
"/SuperscriptSize", documentSettings.value(
"/SuperscriptSize"));
1509 resourceDict.insert(
"/SmallCapSize", documentSettings.value(
"/SmallCapSize"));
1510 resourceDict.insert(
"/TheNormalParagraphSheet", documentSettings.value(
"/NormalParagraphSheet"));
1511 resourceDict.insert(
"/TheNormalStyleSheet", documentSettings.value(
"/NormalStyleSheet"));
1513 const QVariantList docStyleSheetSets = documentResources.value(
"/StyleSheetSet").toHash().value(
"/Resources").toList();
1514 QVariantList resourceStyleSheetList;
1515 Q_FOREACH(QVariant entry, docStyleSheetSets) {
1516 const QVariantHash styleSheet = entry.toHash().value(
"/Resource").toHash();
1517 QVariantHash newSheet;
1518 newSheet.insert(
"/Name", styleSheet.value(
"/Name"));
1519 newSheet.insert(
"/StyleSheetData",
simplifyStyleSheet(styleSheet.value(
"/Features").toHash()));
1520 resourceStyleSheetList.append(newSheet);
1523 const QVariantList docParagraphSheetSets = documentResources.value(
"/ParagraphSheetSet").toHash().value(
"/Resources").toList();
1524 QVariantList resourceParagraphSheetList;
1525 Q_FOREACH(QVariant entry, docParagraphSheetSets) {
1526 const QVariantHash styleSheet = entry.toHash().value(
"/Resource").toHash();
1527 QVariantHash newSheet;
1528 newSheet.insert(
"/Name", styleSheet.value(
"/Name"));
1530 newSheet.insert(
"/DefaultStyleSheet", 0);
1531 resourceParagraphSheetList.append(newSheet);
1534 resourceDict.insert(
"/StyleSheetSet", resourceStyleSheetList);
1535 resourceDict.insert(
"/ParagraphSheetSet", resourceParagraphSheetList);
1537 tySh.insert(
"/EngineDict", engineDict);
1538 tySh.insert(
"/DocumentResources", resourceDict);
1539 tySh.insert(
"/ResourceDict", resourceDict);