From 8edebc797bcf09fec4f1d46d184708d5fcfcaff4 Mon Sep 17 00:00:00 2001 From: Thorben Bochenek Date: Fri, 14 Mar 2014 14:39:35 +0100 Subject: [PATCH] Refactor and fix style of core.js --- src/core/core.js | 53 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 18 deletions(-) diff --git a/src/core/core.js b/src/core/core.js index 7ded6a859..0eabd0542 100644 --- a/src/core/core.js +++ b/src/core/core.js @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/* globals assertWellFormed, calculateMD5, Catalog, error, info, isArray, +/* globals assertWellFormed, calculateMD5, Catalog, Dict, error, info, isArray, isArrayBuffer, isName, isStream, isString, LegacyPromise, Linearization, NullStream, PartialEvaluator, shadow, Stream, Lexer, StreamsSequenceStream, stringToPDFString, stringToBytes, Util, XRef, @@ -25,6 +25,8 @@ var Page = (function PageClosure() { + var LETTER_SIZE_MEDIABOX = [0, 0, 612, 792]; + function Page(pdfManager, xref, pageIndex, pageDict, ref, fontCache) { this.pdfManager = pdfManager; this.pageIndex = pageIndex; @@ -42,20 +44,24 @@ var Page = (function PageClosure() { getPageProp: function Page_getPageProp(key) { return this.pageDict.get(key); }, - inheritPageProp: function Page_inheritPageProp(key) { + + getInheritedPageProp: function Page_inheritPageProp(key) { var dict = this.pageDict; - var obj = dict.get(key); - while (obj === undefined) { + var value = dict.get(key); + while (value === undefined) { dict = dict.get('Parent'); - if (!dict) + if (!dict) { break; - obj = dict.get(key); + } + value = dict.get(key); } - return obj; + return value; }, + get content() { return this.getPageProp('Contents'); }, + get resources() { var value = this.getInheritedPageProp('Resources'); // For robustness: The spec states that a \Resources entry has to be @@ -66,34 +72,41 @@ var Page = (function PageClosure() { } return shadow(this, 'resources', value); }, + get mediaBox() { - var obj = this.inheritPageProp('MediaBox'); + var obj = this.getInheritedPageProp('MediaBox'); // Reset invalid media box to letter size. - if (!isArray(obj) || obj.length !== 4) - obj = [0, 0, 612, 792]; + if (!isArray(obj) || obj.length !== 4) { + obj = LETTER_SIZE_MEDIABOX; + } return shadow(this, 'mediaBox', obj); }, + get view() { var mediaBox = this.mediaBox; - var cropBox = this.inheritPageProp('CropBox'); - if (!isArray(cropBox) || cropBox.length !== 4) + var cropBox = this.getInheritedPageProp('CropBox'); + if (!isArray(cropBox) || cropBox.length !== 4) { return shadow(this, 'view', mediaBox); + } // From the spec, 6th ed., p.963: // "The crop, bleed, trim, and art boxes should not ordinarily // extend beyond the boundaries of the media box. If they do, they are // effectively reduced to their intersection with the media box." cropBox = Util.intersect(cropBox, mediaBox); - if (!cropBox) + if (!cropBox) { return shadow(this, 'view', mediaBox); - + } return shadow(this, 'view', cropBox); }, + get annotationRefs() { - return shadow(this, 'annotationRefs', this.inheritPageProp('Annots')); + return shadow(this, 'annotationRefs', + this.getInheritedPageProp('Annots')); }, + get rotate() { - var rotate = this.inheritPageProp('Rotate') || 0; + var rotate = this.getInheritedPageProp('Rotate') || 0; // Normalize rotation so it's a multiple of 90 and between 0 and 270 if (rotate % 90 !== 0) { rotate = 0; @@ -106,6 +119,7 @@ var Page = (function PageClosure() { } return shadow(this, 'rotate', rotate); }, + getContentStream: function Page_getContentStream() { var content = this.content; var stream; @@ -125,9 +139,10 @@ var Page = (function PageClosure() { } return stream; }, + loadResources: function(keys) { if (!this.resourcesPromise) { - // TODO: add async inheritPageProp and remove this. + // TODO: add async getInheritedPageProp and remove this. this.resourcesPromise = this.pdfManager.ensure(this, 'resources'); } var promise = new LegacyPromise(); @@ -141,6 +156,7 @@ var Page = (function PageClosure() { }.bind(this)); return promise; }, + getOperatorList: function Page_getOperatorList(handler, intent) { var self = this; var promise = new LegacyPromise(); @@ -160,7 +176,7 @@ var Page = (function PageClosure() { 'Pattern', 'Shading', 'XObject', - 'Font', + 'Font' // ProcSet // Properties ]); @@ -208,6 +224,7 @@ var Page = (function PageClosure() { return promise; }, + extractTextContent: function Page_extractTextContent() { var handler = { on: function nullHandlerOn() {},