@ -48,47 +48,21 @@ var AnnotationsLayerBuilder = (function AnnotationsLayerBuilderClosure() {
* @ param { PageViewport } viewport
* @ param { PageViewport } viewport
* @ param { string } intent ( default value is 'display' )
* @ param { string } intent ( default value is 'display' )
* /
* /
setupAnnotations :
render : function AnnotationsLayerBuilder _render ( viewport , intent ) {
function AnnotationsLayerBuilder _setupAnnotations ( viewport , intent ) {
function bindLink ( link , dest ) {
link . href = linkService . getDestinationHash ( dest ) ;
link . onclick = function annotationsLayerBuilderLinksOnclick ( ) {
if ( dest ) {
linkService . navigateTo ( dest ) ;
}
return false ;
} ;
if ( dest ) {
link . className = 'internalLink' ;
}
}
function bindNamedAction ( link , action ) {
link . href = linkService . getAnchorUrl ( '' ) ;
link . onclick = function annotationsLayerBuilderNamedActionOnClick ( ) {
linkService . executeNamedAction ( action ) ;
return false ;
} ;
link . className = 'internalLink' ;
}
var linkService = this . linkService ;
var pdfPage = this . pdfPage ;
var self = this ;
var self = this ;
var getAnnotationsParam s = {
var parameters = {
intent : ( intent === undefined ? 'display' : intent ) ,
intent : ( intent === undefined ? 'display' : intent ) ,
} ;
} ;
pdfPage . getAnnotations ( getAnnotationsParams ) . then (
this . pdfPage . getAnnotations ( parameters ) . then ( function ( annotations ) {
function ( annotationsData ) {
viewport = viewport . clone ( { dontFlip : true } ) ;
viewport = viewport . clone ( { dontFlip : true } ) ;
var data , element , i , ii ;
var data , element , i , ii ;
if ( self . div ) {
if ( self . div ) {
// If an annotationLayer already exists, refresh its children's
// If an annotationLayer already exists, refresh its children's
// transformation matrices
// transformation matrices.
for ( i = 0 , ii = annotationsData . length ; i < ii ; i ++ ) {
for ( i = 0 , ii = annotations . length ; i < ii ; i ++ ) {
data = annotationsData [ i ] ;
data = annotations [ i ] ;
element = self . div . querySelector (
element = self . div . querySelector (
'[data-annotation-id="' + data . id + '"]' ) ;
'[data-annotation-id="' + data . id + '"]' ) ;
if ( element ) {
if ( element ) {
@ -96,46 +70,35 @@ var AnnotationsLayerBuilder = (function AnnotationsLayerBuilderClosure() {
'matrix(' + viewport . transform . join ( ',' ) + ')' ) ;
'matrix(' + viewport . transform . join ( ',' ) + ')' ) ;
}
}
}
}
// See PDFPageView.reset()
self . div . removeAttribute ( 'hidden' ) ;
self . div . removeAttribute ( 'hidden' ) ;
} else {
} else {
for ( i = 0 , ii = annotationsData . length ; i < ii ; i ++ ) {
if ( annotations . length === 0 ) {
data = annotationsData [ i ] ;
return ;
}
self . div = document . createElement ( 'div' ) ;
self . div . className = 'annotationLayer' ;
self . pageDiv . appendChild ( self . div ) ;
for ( i = 0 , ii = annotations . length ; i < ii ; i ++ ) {
data = annotations [ i ] ;
if ( ! data || ! data . hasHtml ) {
if ( ! data || ! data . hasHtml ) {
continue ;
continue ;
}
}
element = PDFJS . AnnotationLayer . getHtmlElement ( data , pdfPage ,
element = PDFJS . AnnotationLayer . getHtmlElement ( data , self . pdfPage ,
viewport ) ;
viewport ,
self . linkService ) ;
if ( typeof mozL10n !== 'undefined' ) {
if ( typeof mozL10n !== 'undefined' ) {
mozL10n . translate ( element ) ;
mozL10n . translate ( element ) ;
}
}
if ( data . subtype === 'Link' && ! data . url ) {
var link = element . getElementsByTagName ( 'a' ) [ 0 ] ;
if ( link ) {
if ( data . action ) {
bindNamedAction ( link , data . action ) ;
} else {
bindLink ( link , ( 'dest' in data ) ? data . dest : null ) ;
}
}
}
if ( ! self . div ) {
var annotationLayerDiv = document . createElement ( 'div' ) ;
annotationLayerDiv . className = 'annotationLayer' ;
self . pageDiv . appendChild ( annotationLayerDiv ) ;
self . div = annotationLayerDiv ;
}
self . div . appendChild ( element ) ;
self . div . appendChild ( element ) ;
}
}
}
}
} ) ;
} ) ;
} ,
} ,
hide : function ( ) {
hide : function AnnotationsLayerBuilder _hide ( ) {
if ( ! this . div ) {
if ( ! this . div ) {
return ;
return ;
}
}