Add a getRawValues method, to Dict instances, to provide an easier way of getting all *raw* values

When the old `Dict.getAll()` method was removed, it was replaced with a `Dict.getKeys()` call and `Dict.get(...)` calls (in a loop).
While this pattern obviously makes a lot of sense in many cases, there's some instances where we actually want the *raw* `Dict` values (i.e. `Ref`s where applicable). In those cases, `Dict.getRaw(...)` calls are instead used within the loop. However, by introducing a new `Dict.getRawValues()` method we can reduce the number of (strictly unnecessary) function calls by simply getting the *raw* `Dict` values directly.
This commit is contained in:
Jonas Jenwald 2020-07-17 12:57:34 +02:00
parent 6381b5b08f
commit ea8e432c45
4 changed files with 39 additions and 12 deletions

View file

@ -254,8 +254,7 @@ class PartialEvaluator {
// First check the current resources for blend modes.
var graphicStates = node.get("ExtGState");
if (graphicStates instanceof Dict) {
for (const key of graphicStates.getKeys()) {
let graphicState = graphicStates.getRaw(key);
for (let graphicState of graphicStates.getRawValues()) {
if (graphicState instanceof Ref) {
if (processed.has(graphicState)) {
continue; // The ExtGState has already been processed.
@ -301,8 +300,7 @@ class PartialEvaluator {
if (!(xObjects instanceof Dict)) {
continue;
}
for (const key of xObjects.getKeys()) {
var xObject = xObjects.getRaw(key);
for (let xObject of xObjects.getRawValues()) {
if (xObject instanceof Ref) {
if (processed.has(xObject)) {
// The XObject has already been processed, and by avoiding a
@ -3078,9 +3076,7 @@ class PartialEvaluator {
} else if (isRef(encoding)) {
hash.update(encoding.toString());
} else if (isDict(encoding)) {
var keys = encoding.getKeys();
for (var i = 0, ii = keys.length; i < ii; i++) {
var entry = encoding.getRaw(keys[i]);
for (const entry of encoding.getRawValues()) {
if (isName(entry)) {
hash.update(entry.name);
} else if (isRef(entry)) {