mirror of
https://github.com/mozilla/pdf.js.git
synced 2026-06-27 10:35:48 +02:00
Merge pull request #21505 from Snuffleupagus/StructTreeRoot-rm-init
Inline the `init` method in the `StructTreeRoot` constructor
This commit is contained in:
commit
8bdd159699
@ -354,15 +354,11 @@ class Catalog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#readStructTreeRoot() {
|
#readStructTreeRoot() {
|
||||||
const rawObj = this.#catDict.getRaw("StructTreeRoot");
|
const rawObj = this.#catDict.getRaw("StructTreeRoot"),
|
||||||
const obj = this.xref.fetchIfRef(rawObj);
|
obj = this.xref.fetchIfRef(rawObj);
|
||||||
if (!(obj instanceof Dict)) {
|
return obj instanceof Dict
|
||||||
return null;
|
? new StructTreeRoot(this.xref, obj, rawObj)
|
||||||
}
|
: null;
|
||||||
|
|
||||||
const root = new StructTreeRoot(this.xref, obj, rawObj);
|
|
||||||
root.init();
|
|
||||||
return root;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
get toplevelPagesDict() {
|
get toplevelPagesDict() {
|
||||||
|
|||||||
@ -37,14 +37,31 @@ const StructElementType = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
class StructTreeRoot {
|
class StructTreeRoot {
|
||||||
|
kidRefToPosition = undefined;
|
||||||
|
|
||||||
|
parentTree = null;
|
||||||
|
|
||||||
|
roleMap = new Map();
|
||||||
|
|
||||||
|
structParentIds = null;
|
||||||
|
|
||||||
constructor(xref, rootDict, rootRef) {
|
constructor(xref, rootDict, rootRef) {
|
||||||
this.xref = xref;
|
this.xref = xref;
|
||||||
this.dict = rootDict;
|
this.dict = rootDict;
|
||||||
this.ref = rootRef instanceof Ref ? rootRef : null;
|
this.ref = rootRef instanceof Ref ? rootRef : null;
|
||||||
this.roleMap = new Map();
|
|
||||||
this.structParentIds = null;
|
const roleMap = rootDict.get("RoleMap");
|
||||||
this.kidRefToPosition = undefined;
|
if (roleMap instanceof Dict) {
|
||||||
this.parentTree = null;
|
for (const [key, value] of roleMap) {
|
||||||
|
if (value instanceof Name) {
|
||||||
|
this.roleMap.set(key, value.name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const parentTree = rootDict.getRaw("ParentTree");
|
||||||
|
if (parentTree) {
|
||||||
|
this.parentTree = new NumberTree(parentTree, xref);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getKidPosition(kidRef) {
|
getKidPosition(kidRef) {
|
||||||
@ -71,15 +88,6 @@ class StructTreeRoot {
|
|||||||
: -1;
|
: -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
init() {
|
|
||||||
this.readRoleMap();
|
|
||||||
const parentTree = this.dict.get("ParentTree");
|
|
||||||
if (!parentTree) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.parentTree = new NumberTree(parentTree, this.xref);
|
|
||||||
}
|
|
||||||
|
|
||||||
#addIdToPage(pageRef, id, type) {
|
#addIdToPage(pageRef, id, type) {
|
||||||
if (!(pageRef instanceof Ref) || id < 0) {
|
if (!(pageRef instanceof Ref) || id < 0) {
|
||||||
return;
|
return;
|
||||||
@ -97,18 +105,6 @@ class StructTreeRoot {
|
|||||||
this.#addIdToPage(pageRef, id, StructElementType.ANNOTATION);
|
this.#addIdToPage(pageRef, id, StructElementType.ANNOTATION);
|
||||||
}
|
}
|
||||||
|
|
||||||
readRoleMap() {
|
|
||||||
const roleMapDict = this.dict.get("RoleMap");
|
|
||||||
if (!(roleMapDict instanceof Dict)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
for (const [key, value] of roleMapDict) {
|
|
||||||
if (value instanceof Name) {
|
|
||||||
this.roleMap.set(key, value.name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static async canCreateStructureTree({
|
static async canCreateStructureTree({
|
||||||
catalogRef,
|
catalogRef,
|
||||||
pdfManager,
|
pdfManager,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user